1 Reguläre Ausdrücke

Transcription

1 Reguläre Ausdrücke
Angewandte Informatik
Prof. Dr.-Ing. H. Bösche
Fachbereich Maschinenbau
Fachhochschule Münster
University of Applied Sciences
Dieses Skript umfasst den Lehrstoff des Wintersemesters
2013/2014, sofern er klausurrelevant ist.
Es enthält weiterhin eine Reihe von gut
versteckten Fehlern.
. Achten Sie darauf, dass ie nicht
Mitglied im Club der unentdeckten Fehler werden.
29. Januar 2014
Inhaltsverzeichnis
1 Reguläre Ausdrücke
1.1 Erzeugung regulärer Ausdrücke . . . . . . . . . . . . . . . . . . . . . . .
1.2 Beispiele: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
6
2 Basisfunktionen der Tabellenkalkulation
11
3 Fortgeschrittene Funktionen der Tabellenkalkulation
12
4 Tex
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
und Latex
Wozu kann ich das brauchen? . . . . . . . . . . . . .
Einführung (•) . . . . . . . . . . . . . . . . . . . . .
LaTeX in Unternehmen einsetzen? (•) . . . . . . . .
Aufbau einer Abschlussarbeit . . . . . . . . . . . . .
Stolperdrähte (•) . . . . . . . . . . . . . . . . . . . .
Grafiken und Fotos . . . . . . . . . . . . . . . . . . .
Literatur zitieren, Citavi . . . . . . . . . . . . . . . .
Editoren, Textverarbeitungsprogramme, Satzsysteme
5 Gnuplot
5.1 Einleitung . . . . . . . . . . . . . .
5.2 Plotten parametrischer Funktionen
5.3 Darstellung von Daten aus Dateien
5.4 Fortgeschrittene Funktionen . . . .
5.5 Animation . . . . . . . . . . . . . .
5.6 Parametrisierte Funktionen . . . .
5.7 3D-Plots . . . . . . . . . . . . . . .
5.8 Übungsaufgaben . . . . . . . . . .
5.9 Nachtrag Regelflächen . . . . . . .
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
(•)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
22
22
22
22
24
26
29
30
30
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
32
32
36
39
42
44
46
49
50
54
.
.
.
.
.
.
.
.
.
1 Reguläre Ausdrücke
1.1 Erzeugung regulärer Ausdrücke
Was ist das?
Reguläre Ausdrücke ist eine Methode, um anzugeben, wie ein Wort oder eine Gruppe
von Wörtern aufgebaut sein soll.
Beispiel: M[ae][iy]e?r Ist ein regulärer Ausdruck, der folgende Bedingungen stellt:
• das Wort muss mit einem großen M beginnen;
• der zweite Buchstabe muss ein a oder ein e sein;
• der dritte Buchstabe muss ein i oder ein y sein;
• dem dritten Buchstaben kann ein e folgen, muss aber nicht;
• das Wort muss mit einem r enden.
Diese Bedingungen werden von acht Wörtern erfüllt:
Mair, Maier, Mayr, Mayer, Meir, Meier, Meyr, Meyer
Es bietet sich z.B. an, Reguläre Ausdrücke bei Datenbankabfrage mit unsicherer Schreibweise einzusetzen.
Software zum Üben
Webseiten zum Lernen von Regulären Ausdrücken (offline und online):
http://www.radsoftware.com.au
http://www.regexe.de/
3
1 Reguläre Ausdrücke
Beschreibung von Mustern in Texten
Die Muster entstehen durch Klassifizierung, Wiederholung, Aufzählung, Gruppierung
und durch Positionsangaben.
Klassifizierung
.
.*
beliebiges Zeichen
beliebige Zeichenkette
Wiederholung
*
+
?
3
,5
2,
7,12
0-maliges, 1-maliges oder mehrmaliges Auftreten
1-maliges oder mehrmaliges Auftreten
0-maliges oder 1-maliges Auftreten
genau dreimaliges auftreten
bis zu fünfmaliges Auftreten
mindestens zweimaliges Auftreten
siebenmaliges bis zwölfmaliges Auftreten
Aufzählung
[abc]
[^gukp]
a oder b oder c
nicht g und nicht u und nicht k und nicht p
Gruppierung
(Gruppe)
(Gruppe)\1
(.)\1\1
(.)(.)\2\1
Festlegung einer Gruppe
\1 kennzeichnet ein zweites Auftreten der Gruppe
Entdeckt das Auftreten von Tripeln
Entdeckt Muster der Art 4774
Positionsangaben
^
$
Zeilenanfang
Zeilenende
Beispiel Glocke
4
ei(ei)?
(. . . ..)\1
(.)\1\1
ei oder eiei
PeppyPeppy
Pepppy
1 Reguläre Ausdrücke
Eine wichtige Anwendung für reguläre Ausdrücke ist das Heraussuchen von Textzeilen, die gewisse Bedingungen erfüllen. Im folgenden werden auf der Basis von Schillers
Glocke unterschiedliche Reguläre Ausdrücke (RegEx) in ihrer Wirkung beschrieben.
Die Glocke von Friedrich Schiller
Fest gemauert in der Erden
Steht die Form, aus Lehm gebrannt.
Heute muß die Glocke werden.
Frisch Gesellen, seid zur Hand.
Von der Stirne heiß
Rinnen muß der Schweiß,
Soll das Werk den Meister loben,
Doch der Segen kommt von oben.
(Und zehn weitere Seiten...)
Nr.
1
2
3
4
Textzeile
Fest gemauert in der Erden
Steht die Form, aus Lehm gebrannt.
Heute muß die Glocke werden.
Frisch Gesellen, seid zur Hand.
RegEx
i
y
locke
locke
RegEx trifft zu
ja, denn Zeile enthält ein i
nein, denn Zeile enthält kein y
ja, denn Zeile enthält locke
nein, denn Zeile enthält kein locke
Gegenbeispiel
Fest gemauert auf dem Mond
Steht die Form, in Libyen gebrannt.
Heute muß die Bimmel werden
locker Gesellen, seid zu Hand.
Metazeichen
Sogenannte Metazeichen erlauben es nun, die Suchbedingungen variabler zu gestalten. Die beiden wichtigsten Metazeichen sind der Punkt (“.“) und der Stern („*“).
Der Punkt bedeutet, dass an seiner Position ein beliebiges Zeichen auftreten darf. Der
Stern bedeutet, dass das Zeichen, welches unmittelbar links von ihm steht, wiederholt
auftreten darf, und zwar 0-mal, 1-mal und beliebig oft.
lfd. Nr.
5
6
7
8
9
10
11
12
Textzeile
Von der Stirne heiß,
Rinnen muß der Schweiß.
Soll das Werk den Meister loben,
Doch der Segen kommt von oben.
Zum Werke, das wir ernst bereiten
Geziemt sich wohl ein ernstes Wort;
Wenn gute Reden sie begleiten,
Dann fließt die Arbeit munter fort.
RegEx
de.
de.
de.
de.
de.
t.*t.*t.*t
t.*t.*t.*t
t.*t.*t.*t
RegEx trifft zu
ja, der
ja, der
ja, den
ja, der
nein
nein, nur 3x t vorhanden
nein, nur 2x t vorhanden
ja, 4x t vorhanden
Gegenbeispiel
Auf die Stirne heiß
fallen Tropfen voller Schweiß
wenn die Werke ihre Meister loben
doch ein Segen kommt von oben
Drum werde, was wir ernst bereiten
Geziemt sich wohl acht ernste Worte;
wenn guter Rat sie stets begleitet
Jeder Lord fährt nen Ford
Hinweis: Auch wenn Reguläre Ausdrücke eine gewisse Ähnlichkeit mit Wildcards aufweisen, sind sie doch recht unterschiedlich, insbesondere das Zeichen *. Zwei weitere
häufig genutzte Metazeichen sind das Zeichen für Zeilenanfang „^“ und Zeilenende „$“.
5
1 Reguläre Ausdrücke
lfd. Nr.
13
14
15
16
17
18
19
Textzeile
So laßt uns jetzt mit Fleiß betrachten
Was durch die schwache Kraft entspringt,
Den schlechten Mann muß man verachten,
Der nie bedacht, was er vollbringt.
Das ist’s ja, was den Menschen zieret
Und dazu ward ihm der Verstand,
Daß er im innern Herzen spüret,
RegEx
^S
^S
t. . . $
t. . . $
^. . . $
^U.*u.*a.*a. . . $
^U.*u.*a.*a. . . $
trifft zu
ja, Zeile beginnt mit S
nein, Zeile beginnt nicht mit S
ja, viertletztes Zeichen der Zeile ist ein t
nein, viertletztes Zeichen der Zeile ist kein t
nein, Zeile ist nicht genau drei Zeichen lang
ja, denn . . .
nein, denn (vier Gründe)
Die beiden Metazeichen “[“ und “]“ begrenzen Auswahllisten.
lfd. Nr.
20
21
22
23
24
25
26
27
28
29
30
31
Textzeile
Was er erschafft mit seiner Hand.
Nehmet Holz vom Fichtenstamme
Doch recht trocken laßt es sein,
Daß die eingepreßte Flamme
Schlage zu dem Schwalch hinein.
Kocht des Kupfers Brei
schnell das zinn herbei,
Daß die zähe Glockenspeise
Fließe nach der rechten Weise.
Was in des Dammes tiefer Grube
Die Hand mit Feuers Hülfe baut
Hoch auf des Turmes Glockenstube
RegEx
^[NW]
^[NW]
^[NW]
[xyz]
[xyz]
[A-Z]
[A-Z]
[0-9]
[^0-9]
[^A-Z]
[äöüÄÖÜ]
[^äöüÄÖÜ]
trifft zu
ja, denn Zeile beginnt mit einem N oder einem W
ja, denn Zeile beginnt mit einem N oder einem W
nein, denn Zeile beginnt nicht mit einem N oder einem W
nein, denn Zeile enthält weder ein x noch ein y noch ein z
ja, denn Zeile enthält entweder mindestens ein x oder ein y oder ein z
ja, denn Zeile enthält mindestens einen Großbuchstaben
nein, denn Zeile enthält keinen Großbuchstaben
nein, denn Zeile enthält keine Ziffern
ja, denn Zeile enthält Zeichen, die keine Ziffern sind
ja, denn Zeile enthält Zeichen, die keine Großbuchstaben sind
ja, denn Zeile enthält einen Umlaut
ja, denn Zeile enthält Zeichen, die keine Umlaute sind
Weitere Metazeichen sind:
\ | ? + { }
Sie werden weiter unten im Text erläutert.
Was ist zu tun, wenn nach einem Zeichen gesucht werden soll, dass bereits als Metazeichen definiert ist? Zum Beispiel alle Zeilen heraussuchen. die das Zeichen ^ enthalten? In diesen Fällen muss die Bedeutung des Metazeichens durch das Voranstellen
des Zeichens aufgehoben werden. Die Kombination ŝucht dann nicht mehr nach Zeilenanfängen, sondern nach ^.
1.2 Beispiele:
e.t steht für „e“ + beliebiges Zeichen + „t“ –> Zeilen, die eit, ebt, eet, e7t enthalten,
erfüllen die Beschreibung, et und eid erfüllen sie nicht.
za* Das Zeichen vor dem * kann 0- oder beliebig oft vorkommen –> z, za, zaaa, zaaaaa
erfüllen die Beschreibung, ebenso zahl und zehn, nicht aber Zahl oder Zehn.
[abc] eines der Zeichen „a“, „b“, „c“ muss mindestens einmal in der Zeile vorkommen.
[^ abc] ein Zeichen, das von „a“, „b“, „c“ verschieden ist
[^ t] kein „t“ an dieser Stelle
[a-f] die Buchstaben „a“, „b“, „c“, „d“, „e“ und „f“
[a-z] alle Kleinbuchstaben
6
1 Reguläre Ausdrücke
[A-Z] alle Grossbuchstaben
[a-zäöüßA-ZÄÖÜ] alle Klein- und Grossbuchstaben incl. deutscher Sonderzeichen
[a-zA-Z-] alle Klein- und Grossbuchstaben und “-“
[0-9] alle Ziffern
[a-zA-Z0-9] alle alphanumerische Zeichen (o. deutsche Sonderzeichen)
Wiederholungs-Operatoren (•)
* das vorangegangene Zeichen darf sich beliebig oft wiederholen; es darf aber auch
fehlen.
? das vorangegangene Zeichen braucht gar nicht aufzutreten, wenn es aber auftritt,
darf es sich nicht wiederholen
+ das vorangegangene Zeichen darf sich beliebig oft wiederholen, muss aber mindestens einmal auftreten
{n} das vorangegangene Zeichen tritt n-mal auf
{n,} das vorangegangene Zeichen tritt n-mal auf oder öfter
{,n} das vorangegangene Zeichen tritt höchstens n-mal auf
{n,m} das vorangegangene Zeichen tritt mindestens n-mal, aber nicht häufiger als mmal auf.
Beispiele: (•)
dass? steht für „das“ und „dass“
[dD]as1,2 steht für „das“, „Das“, „dass“ und „Dass“, aber auch für Dasss (!)
[dD]as1,2$ steht für „das“, „Das“, „dass“ und „Dass“, aber nicht für Dasss (!)
Sonstiges (•)
| verbindet zwei oder mehr Ausdrücke mit einem „Oder“ (OR). Das Symbol ist ein
senkrechter Strich und befindet sich unter Linux auf der Tastatur bei den “<“ und
“>“ Zeichen und wird durch Drücken der AltGR-Taste erreicht. Auf einem Mac liegt
das Zeichen auf der Taste 7 und wird durch alt-7 erreicht. Windowsuser finden den
senkrechten Strich wie bei Linux beschrieben.
() stellt Gruppierungen her. Wiederholungs-Operatoren können auch auf Gruppierungen angewendet werden.
Beispiele
(da|na)ss steht für „dass“ und „nass“
Karl(-Heinz)? findet Karl und Karl-Heinz
^[A-Z]1,3-[A-Z]1,2 [1-9][0-9],3$ beschreibt den Aufbau deutscher Nummernschilder
Ste(ph|f)an gibt die Variationen des Namens wieder.
Beispieldatei (*)
Mannheim
Bremen
7
1 Reguläre Ausdrücke
Dortmund
Stuttgart
Koblenz
Berlin
Hamburg
Norden
Leipzig
Frankfurt
regulärer Ausdruck
^.e
^.*e
.*e.*e
.*[^a]
[^a]
[^aeiou]
[^aeiou]$
[^ aeiou].$
[aei].*[ou]
Auswahl
Berlin Leipzig
Mannheim Bremen Koblenz Berlin Norden Leipzig
Bremen
alle Städte
alle Städte
alle Städte
alle Städte
Koblenz Dortmund Stuttgart Hamburg Frankfurt
Hamburg Frankfurt
Auswahl von Zahlen:
regulärer Ausdruck
[1-9][0-9]*
[246][357]+
Beispiele
1, 123, 1234, 2234
23, 457, 277777
Gegenbeispiele
01234
444357
Beschreibung von nationalen Telefonnummern:
regulärer Ausdruck
(0[1-9][0-9][0-9]*)[1-9][0-9][0-9]+
Beispiele
(02551)962507
Beschreibung von internationalen Telefonnummern:
regulärer Ausdruck
(00[1-9][0-9]+)[1-9][0-9][0-9]+
Beispiele
(00492551)962507
Beschreibung von ISBN-Nummern:
regulärer Ausdruck
[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
[0-9]10
8
Beispiele
4456743287
genau 10x
1 Reguläre Ausdrücke
Tippfehler finden
Arbeitet man lange an einem Text, wie zum Beispiel einer Bachelorarbeit, so wird
man mit der Zeit blind gegenüber Tippfehlern. Reguläre Ausdrücke können bei OpenOffice und LibreOffice helfen, diese Tippfehler zu finden.
Häufig missachtete Regeln: Infinitivgruppen, die mit um beginnen, werden durch Komma vom Hauptsatz abgetrennt.
Fehler finden mit OpenOffice und LibreOffice:
Funktion „Suchen“, Option Reguläre Ausdrücke aktivieren (ist versteckt), Suchmuster
“[^,] um“
Gefunden werden die Stellen im Text, wo zwei Zeichen vor einem „um“ kein Komma
steht. Das muss nicht immer ein Fehler sein, aber es könnte.
Vervielfachung von Buchstaben:
Fehler finden mit OpenOffice und LibreOffice:
Funktion „Suchen“, Option Reguläre Ausdrücke aktivieren (ist versteckt), Suchmuster
“(.)\1 \1“
Gefunden werden die Stellen im Text, wo drei gleiche Zeichen direkt aufeinander folgen. Das wird in der Regel ein Fehler sein.
Verdoppelung von Buchstaben: Eine ganze Reihe von Buchstaben und Satzzeichen
treten selten oder nie verdoppelt auf: bb, cc, jj, qq, xx, yy, zz, zweiLeerzeichen Fehler
finden mit OpenOffice und LibreOffice: Funktion „Suchen“, Option Reguläre Ausdrücke aktivieren (ist versteckt), Suchmuster “([bcjqxyz])\1“
Verdoppelung von Großbuchstaben:
Großbuchstaben treten selten verdoppelt auf:
Fehler finden mit OpenOffice und LibreOffice:
Funktion „Suchen“, Option Reguläre Ausdrücke aktivieren (ist versteckt), Suchmuster
“([A-Z])\1“
Sätze beginnen mit einem Großbuchstaben:
Fehler finden mit OpenOffice und LibreOffice:
Funktion „Suchen“, Option Reguläre Ausdrücke aktivieren (ist versteckt), Suchmuster
˙
„*[a-z]„
Gefunden werden die Stellen im Text, wo ein Punkt von einem Kleinbuchstaben gefolgt
wird. Zwischen Punkt und Kleinbuchstaben dürfen beliebig viele Leerzeichen stehen.
Suchen und Ersetzen
Bei der Funktion Suchen und Ersetzen gibt es ein weiteres wichtiges Metazeichen:
9
1 Reguläre Ausdrücke
&
Diese Zeichen wird benutzt, um auf den aktuellen Wert des regulären Ausdrucks zurückzugreifen.
10
2 Basisfunktionen der
Tabellenkalkulation
Vorausgesetzte Kenntnisse
Folgende Teile von Excel/LibreOffice werden als bekannt vorausgesetzt:
1.
2.
3.
4.
5.
6.
7.
Aufbau der Formeln in einer Zelle
Bezugnehmen auf die Werte anderer Zellen
Grundrechenarten
math. Grundfunktionen, z.B. sin(), exp(), log()
Formatierung der Zellen (links-, rechtsbündig, zentriert, Zahl der Nachkomastellen)
Laden und Speichern
...
Berechnung des Arcus-Tangens
Zur Berechnung des Arcus-Tangens gibt es zwei Funktionen: ATAN und ATAN2.
ATAN wird mit einer Zahl x aufgerufen. Die Funktion bestimmt eine Zahl a mit tan(a)
= x. Abkürzend wird geschrieben: a=arctan(x). x kann jeden reellen Wert annehmen.
a nimmt nur Werte zwischen -pi/2 und pi/2 an, das entspricht den Winkeln von -90
bis +90 Grad.
Der Tangens ist der Quotient von Höhengewinn durch Schrittweite. Die Funktion
ATAN geht davon aus, dass die Schrittweite immer positiv ist. Ist dies nicht der Fall,
so muss die Funktion ATAN2 benutzt werden. Die Funktion ATAN2 wird mit zwei
Parametern aufgerufen: Schrittweite und Höhengewinn. Für beide werte gibt es keine
Einschränkungen. Das Ergebnis ist ein Winkel zwischen 0◦ und 360◦ .
11
3 Fortgeschrittene Funktionen der
Tabellenkalkulation
Große Tabellenkalkulationsprogramme wie LibreOffice Calc oder Excel bieten eine
schwer zu überschauende Vielzahl von Funktionen an, die, wenn sie dem Benutzer nur
bekannt wären, die Arbeitsblätter deutlich vereinfachen könnten und häufig sogar eine
Programmierung z.B. in VBA überflüssig machen würden. Im Folgenden sollen einige
dieser weniger bekannten Funktionen vorgestellt werden und ihre Nutzung an Beispielen erläutert werden.
Vorausgesetzte Kenntnisse
Folgende Teile von LibreOffice werden als bekannt vorausgesetzt:
1.
2.
3.
4.
5.
6.
7.
Aufbau der Formeln in einer Zelle
Bezugnehmen auf die Werte anderer Zellen
Grundrechenarten
math. Grundfunktionen, z.B. sin(), exp(), log()
Formatierung der Zellen (links-, rechtsbündig, zentriert, Zahl der Nachkomastellen)
Laden und Speichern
...
Arbeiten mit Zeit- und Datumsangaben
Anwendungsbeispiel A: eine Arztpraxis vergibt Termine im Fünfzehnminutenrhythmus, d.h. der erste Patient kommt um 9:00 Uhr, der zweite Patient bekommt einen
Termin für 9:15 Uhr, der dritte Patient für 9:30 Uhr usw.
Die Behandlungsdauer eines Patienten kann zwischen 0 min und 30 min variieren;
es wird vorausgesetzt, dass alle möglichen Behandlungsdauern gleichverteilt auftreten.
Mit der Tabellenkalkulation sollen die auftretenden Wartezeiten durch eine Simulation bestimmt werden. Dazu werden sechs Spalten benötigt:
• Ankunftszeit des Patienten (9:00 Uhr, 9:15 Uhr, usw.) –> Spalte A;
12
3 Fortgeschrittene Funktionen der Tabellenkalkulation
• Behandlungsbeginn(Uhrzeit) –> Spalte B;
• Behandlungsdauer in Minuten –> Spalte C;
• Behandlungsende (Uhrzeit) –> Spalte D;
• Wartezeit für den Patienten –> Spalte E;
• Wartezeit für den Arzt –> Spalte F.
Anwendungsbeispiel B: Ersetzen Sie Arztpraxis durch Bearbeitungszentrum, Patient
durch Werkstücke, Wartezimmer durch Lagerplatz und Behandlungsdauer durch Bearbeitungszeit.
Anwendungsbeispiel C: Schauen Sie sich aufmerksam um, es gibt viele weitere Beispiele, wo eine getaktete Zuführung auf variable Verarbeitungszeiten trifft.
Aufpassen muss man bei Berechnung der Spalte D, die sich aus der Summe von Spalte
B & Spalte C ergibt. Sind jedoch die Behandlungsdauern in Minuten angegeben, so
ergibt die Summe aus Behandlungsbeginn und Behandlungsdauer unsinnige Ergebnisse. Der Grund liegt darin, wie die Tabellenkalkulationsprogramme Datum und Uhrzeit
behandeln. Jedes Datum wird als ganze Zahl gespeichert. Diese Zahl ist die Differenz
in Tagen zwischen dem Datum und dem 31.12.1899 (Basistag). So ist zum Beispiel der
8.11.2010 der 40490. Tag nach dem 31.12.1899. Uhrzeiten sind Zeitangaben, die sich
auf einen Bruchteil eines ganzen Tages beziehen. 12:00 Uhr mittags wird als ein halber
Tag angesehen, deshalb steht der numerische Wert 0,5 für 12:00 Uhr. 16:00 Uhr wird
als Zweidritteltag angesehen, deshalb steht der numerische Wert von 0,66 für 16:00
Uhr.
Um nun die Summe der Spalten B und C korrekt zu berechnen, muss also die Behandlungsdauer als Bruchteil eines ganzen Tages gegeben werden. Dies kann dadurch
erfolgen, dass zur Spalte B nicht der Wert der Spalte C, sondern der Wert der Spalte
C geteilt durch 24 und dann geteilt durch 60 genommen wird.
Berechnung der beweglichen Festtage
Basis für die Berechnung beweglicher Festtage ist der Ostersonntag. Der Termin für
Ostersonntag lässt sich bei LibreOffice mit der Funktion ostersonntag() berechnen.
Ausgehend von diesem Datum ist dann zum Beispiel Rosenmontag gleich Ostersonntag -48.
Funktionen für Datum und Uhrzeit
13
3 Fortgeschrittene Funktionen der Tabellenkalkulation
• heute() liefert das Datum gemäß Rechneruhr;
• jetzt() liefert Datum und Uhrzeit gemäß Rechneruhr;
• jahr() liefert die Jahresangabe eines Datums;
• monat() liefert die Monatsangabe eines Datums;
• tag() liefert die Tagesangabe eines Datums;
• stunde() liefert die Stundenangabe einer Uhrzeit;
• minute() liefert die Minutenangabe einer Uhrzeit;
• sekunde() liefert die Sekundenangabe einer Uhrzeit;
• kalenderwoche() liefert die Kalenderwoche zu einem Datum;
• istschaltjahr () prüft ob das angegebene Jahr ein Schaltjahr ist;
• ostersonntag() liefert für das angegebene Jahr das Datum des Ostersonntages.
adresse() und indirekt()
Die Zellen des Arbeitsblattes einer Tabellenkalkulation enthalten entweder konstante
Werte oder Formeln zur Berechnung des Zellwertes aus den Werten anderer Zellen. Es
handelt sich dabei um einen Pull-Prozess, da die einzelnen Zellen die von ihnen benötigten Werte aus anderen Zelle holen. Es ist nie ein Push-Prozess, denn bei diesem
würden die Zellen aktiv ihre Werte weiterschieben.
Steht in der Zelle A10 die Formel “= A9 +1“, so bedeutet dies: nimm den Wert
der Zelle A9, erhöhe ihn um eins und speichere ihn in der Zelle A10 ab. Es gibt aber
immer wieder Fälle, in denen es nützlich wäre, wenn in der genannten Zelle (A9) nicht
der Wert steht, der in die Formel einfließen soll, sondern die Adresse der Zelle, wo
der Wert steht. Ein solcher Zugriff auf den gewünschten Wert wird auch als indirekter
Zugriff bezeichnet.
Indirekte Zugriffe haben Ähnlichkeit mit der Nutzung einer Suchmaschine im Internet.
Der Benutzer sucht Informationen zu einer Fragestellung, er weiß aber nicht, wo er die
Informationen finden kann. Er geht deshalb den indirekten Weg über eine Suchmaschine. Die Suchmaschine liefert nicht Information selber, sondern die Adresse, wo die
Information zu finden ist.
Die Funktion indirekt() arbeitet nun folgendermaßen:
14
3 Fortgeschrittene Funktionen der Tabellenkalkulation
• die Zelle A1 enthalte den Wert „B1“
• die Zelle B1 enthalte den Wert 7
• die Zelle C1 enthalte den Wert 9
• die Zelle A3 enthalte die Formel “=indirekt(A1)“
• der Wert der Zelle A3 ist 7
Ändert man den Inhalt der Zelle A1 in „C1“, so ändert sich automatisch der Wert der
Zelle A3 zu 9.
Um diese indirekte Adressierung noch flexibler zu machen, bietet die Tabellenkalkulation die Möglichkeit, eine Adresse zu berechnen. Die dazu bereitgestellte Funktion
heißt adresse() und benötigt mindestens zwei Angaben:
• erster Parameter = Zeilennummer
• zweiter Parameter = Spaltennummer
• =adresse(1; 2) ergibt entsprechend „B1“;
• =adresse(3; 5) ergibt „E3“.
Weiterhin hilfreich sind die beiden Funktionen zeile() und spalte(), die innerhalb
einer Formel als Zahlenwert wiedergeben, in welcher Zeile bzw. in welcher Spalte des
Arbeitsblattes sich die Zelle befindet.
Beispiel: = indirekt (adresse (zeile() -2; spalte() +3)) liefert als Wert den Wert der
Zelle, die gegenüber der aktuellen Zelle zwei Zeilen höher und drei Spalten weiter
rechts steht.
Funktionen zur Auswertung von Zahlenreihen
• min() liefert den kleinsten Wert einer Zahlenreihe;
• max() liefert den größten Wert einer Zahlenreihe;
15
3 Fortgeschrittene Funktionen der Tabellenkalkulation
• summe() liefert die Summe der Wert einer Zahlenreihe;
• anzahl() liefert die Anzahl der Werte einer Zahlenreihe. Enthält der Adressbereich
Zelle ohne Inhalt, so werden diese nicht mitgezählt, Zelle mit Inhalt 0 werden mitgezählt.
• mittelwert() liefert den Mittelwert der Werte einer Zahlenreihe;
• median() liefert den Wert, der bei einer Sortierung der Zahlenreihe in der Mitte stehen
würde;
• b (A; E; T) liefert die Wahrscheinlichkeit, dass bei A vielen Versuchen T mal ein
Ereignis eintritt, dessen Einzelwahrscheinlichkeit E ist. b (10; 1/6; 2) liefert die Wahrscheinlichkeit, dass bei zehn Würfen mit einem Würfel genau zweimal eine 6 auftritt.
• sumif bildet Summen über gefilterte Datensätze.
• countif Anzahl der Datensätze, die eine Bedingung erfüllen.
• match
• search Zeichenketten nach Begriffen durchsuchen.
• lookup
• hlookup
• vlookup
Import variabler Daten aus dem Internet
Tabellenkalkulationsprogramme können über die Menüfunktion „externe Daten holen. . . “ Daten von Webseiten abrufen. Eine Zeitfunktion erlaubt sogar die zyklische
Wiederholung des Importes, z.B. alle 60 Sekunden.
Eine passende Webseite ist z.B. http://www.worldometers.info/
2
Funktionen zur Auswertung von Datenbanken
Folgende Datenbank listet die deutschen Großstädte in einem Arbeitsblatt einer Tabellenkalkulation auf:
16
3 Fortgeschrittene Funktionen der Tabellenkalkulation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
A
Stadt
Berlin
Hamburg
München
Köln
Frankfurt/M.
Stuttgart
Dortmund
Essen
Düsseldorf
Bremen
Hannover
Leipzig
Dresden
Nürnberg
Bochum
B
Bundesland
Berlin
Hamburg
Bayern
NRW
Hessen
Baden-Würt.
NRW
NRW
NRW
Bremen
Niedersachsen
Sachsen
Sachsen
Bayern
NRW
C
Einwohner
3416250
1770629
1311573
995397
659021
597176
586909
582140
581122
547769
518069
510512
507513
503110
381542
D0
Nr
101
135
144
164
175
186
187
255
267
Um mit dieser Datenbank zu arbeiten, also Datenbankabfragen durchzuführen, sind
drei Angaben zu machen:
• wo stehen die Daten?
• Welche Zeilen davon sollen betrachtet werden (Selektion)?
• Welche Spalten sollen benutzt werden (Projektion)?
Die erste und die dritte Angabe wird direkt in der Formel der Tabellenkalkulation
eingetragen. Dies geht für die Selektion nicht, da ihre Beschreibung zu groß und zu variabel ist. Stattdessen wird ein Zellbereich des Arbeitsblattes benutzt, um die Selektion
zu beschreiben. Dieser Zellebereich wird wie folgt eingeteilt:
• für jede Spalte, deren Daten eine Bedingung erfüllen sollen, ist eine Spalte im
Selektionsbereich vorzusehen.
• Die Spalten im Selektionsbereich müssen zuoberst die Namen der Spalten im
Datenbereich wiederholen.
• Unterhalb der Spaltennamen werden die Bedingungen eingetragen.
Beispiel: wieviele Einwohner hat Dortmund?
der Selektionsbereich wird in den Zellen A20 und A21 aufgebaut, die Datenbankab-
17
3 Fortgeschrittene Funktionen der Tabellenkalkulation
frage wird in C 20 formuliert:
20
21
A
Stadt
Dortmund
B
C
= dbauszug(a1:c16;c1;a20:a21)
die Selektion erfolgt hier anhand des Städtenamens, die Projektion längs der Spalte C,
also der Angabe über die Einwohner. Der Zellwert der Zelle C 20 ergibt sich zu 586.909.
Beispiel: in welchem Bundesland liegt Dortmund?
der Selektionsbereich wird in den Zellen A 23 und A 24 aufgebaut, die Datenbankabfrage wird in C 23 formuliert:
23
24
A
Stadt
Dortmund
B
C
= dbauszug(a1:c16;B1;a23:a24)
die Selektion erfolgt hier anhand des Städtenamens, die Projektion längs der Spalte
B, also der Angabe über die Bundesländer. Der Zellwert der Zelle C 23 ergibt sich zu
NRW.
Beispiel: wie viele Städte liegen in NRW? der Selektionsbereich wird
in den Zellen A 26 und A 27 aufgebaut, die Datenbankabfrage wird in C 26 formuliert:
26
27
A
Bundesland
NRW
B
C
= dbanzahl(a1:c16;b1;a26:a27)
die Selektion erfolgt hier anhand der Bundesländer, die Projektion längs der Spalte B,
also der Angabe über die Bundesländer. Der Zellwert der Zelle C 26 ergibt sich zu 5.
Beispiel: wie viele Einwohner haben die Städte in NRW in Summe? der Selektionsbereich wird in den Zellen A 29 und A 30 aufgebaut, die Datenbankabfrage wird in C 29 formuliert:
18
3 Fortgeschrittene Funktionen der Tabellenkalkulation
A
Bundesland
NRW
29
30
B
C
= dbsumme(a1:c16;c1;a29:a30)
die Selektion erfolgt hier anhand der Bundesländer, die Projektion längs der Spalte
C, also der Angabe über die Bundesländer. Der Zellwert der Zelle C29 ergibt sich zu
3127110.
Beispiel: Welche Stadt hat die zweitkleinste Einwohnerzahl? Um
die zweitkleinste Einwohnerzahl zu bekommen, muss zunächst die kleinste Einwohnerzahl bestimmt werden. Die Selektion muss alle Datensätze einschließen, sie wird in den
Zellen A32 und A33 aufgebaut. Die Datenbankabfrage wird in C32 formuliert:
32
33
A
Einwohner
>0
B
C
=dbmin(a1:c16;c1;a32:a33)
In C32 steht die kleinste Einwohnerzahl aller Städte. Mit ihr wird eine zweite Abfrage
formuliert. Die Selektion muss alle Datensätze einschließen, deren Einwohnerzahl größer ist als die in C32 bestimmte. Sie wird in den Zellen A35 und A36 aufgebaut. Die
Datenbankabfrage wird in C35 formuliert:
35
36
A
Einwohner
>381542
B
C
=dbmin(a1:c16;c1;a35:a36)
Die Formel für A36 lautet:
=verketten(«=";A38)
Die Formel für A43 lautet:
=verketten(»=";A38)
Falls eine Stadt genau die gewünschte Einwohnerzahl hat, ergeben C40 und C42 denselben Wert, und zwar den Wert in A38. Anderenfalls ist C40 ungleich A38 und C42
19
3 Fortgeschrittene Funktionen der Tabellenkalkulation
ungleich A38 und C40 ungleiche C42. Für die Aufgabe soll C40 oder C42 genommen
werden, je nachdem ob C40 oder C42 dichter an A38 liegt. Das Ergebnis wird in B43
geschrieben. Formel:
=min(A38-C40;C40-A38)
Beispiel: Wie viele Städte haben eine Einwohnerzahl, die auf 0
endet?
A
B
C
1. -+————+—————–+——————————-+
45 Einwohner =dbanzahl2(a1:c16;c1;a45:a46)
46 ^.*0$
Beispiel: Wie viele Städte haben eine ungerade Einwohnerzahl?
48
49
A
Einwohner
^.*[13579]$
B
C
=dbanzahl2(a1:c16;c1;a48:a49)
Beispiel: Wie viele Städte haben eine Einwohnerzahl, in der mindestes eine Ziffer zwei- oder mehrfach auftritt?
50
51
A
Einwohner
^.*(.).* \1.*$
B
C
=dbanzahl2(a1:c16;c1;a48:a49)
Beispiel: Wie viele Städte haben eine Einwohnerzahl, in der mindestes ein Zwilling auftritt?
Ein Zwilling ist z.B. 11, 48553, 12344651
20
3 Fortgeschrittene Funktionen der Tabellenkalkulation
,
52
53
A
Einwohner
^.*(.)\1.*$
B
C
=dbanzahl2(a1:c16;c1;a48:a49)
Funktionen zur Auswertung von Datenbanken (2)
In einer Kaffeerösterei werden aus verschiedenen Rohkaffeesorten verschiedener Länder nach Rezepturen Pulverkaffee für den Handel gemischt. Die Rezepturen werden
mit LibreOffice Calc in einer Tabelle verwaltet.
1
2
3
4
5
6
7
8
9
A
Rezeptur
122
125
722
728
800
956
1001
1022
B
Sorte_1
10
10
20
30
50
40
40
50
C
Sorte_2
40
20
20
20
10
20
10
0
D
Sorte_3
20
50
20
40
40
10
20
20
E
F
Die Datenbank belege den Zellbereich A1 bis D9. Im folgenden werden verschiedene Abfragen in kurzer Schreibweise notiert.
Anzahl der Rezepturen in der Datenbank:
1
2
E
=dbanzahl2(a1:d9;a1;f1:f2)
F
=a1
>0
Rezeptur benötigt weniger als die vorgegebenen Teilmengen:
4
5
6
7
8
E
Teilmenge Sorte_1
Teilmenge Sorte_2
Teilmenge Sorte_3
=dbmin(a1:d9;a1;f7:h8)
F
40
20
25
=b1
=verketten(“<“;f4)
21
G
H
=c1
=verketten(“<“;f5)
=d1
=verketten(“<“;f6)
4 Tex und Latex
4.1 Wozu kann ich das brauchen?
4.2 Einführung (•)
TeX und das darauf aufbauende LaTeX sind Programmsysteme zur Erzeugung von
hochwertigen Druckerzeugnissen, z. B. von Abschlussarbeiten und wissenschaftlichen
Artikeln. Sie eignen sich aber auch gut für kurze Texte, z. B. für Briefe, und für Präsentationen, d. h. als Ersatz für Powerpoint. Wie bei HTML ist auch bei TeX und bei
LaTeX ein wesentliches Merkmal die Trennung zwischen Textinhalt und Textpräsentation — der Autor eines Textes soll sich nur um den Inhalt kümmern, das Layouten
übernimmt das Programm. Um dies zu ermöglichen, hat der Autor von TeX, Donald
E. Knuth, vor 30 Jahren begonnen, dass damals noch vorhandene Wissen der Buchdrucker in Software zu übertragen. Besonders hervorzuheben sind die entwickelten
Algorithmen zur Festlegung der Abstände innerhalb mathematischer Formeln und zur
Festlegung der Silbentrennung zwecks Erreichens eines harmonischen Gesamtbildes
beim Blocksatz. Ein Nachteil von TeX ist sicherlich der Lernaufwand, der erforderlich ist, um erste Ergebnisse mit TeX zu erreichen. Dieser Lernaufwand wird mit dem
System LaTeX deutlich verringert, wodurch für viele Autoren LaTeX das System der
Wahl ist.
4.3 LaTeX in Unternehmen einsetzen? (•)
Motive für den Einsatz von LaTeX im Unternehmen:
• Zentralisierung der Entscheidungen bzgl. des Aussehens von Dokumenten durch Bereitstellung unternehmenseigener Dokumentenklassen.
• Geringer Schulungsbedarf bei Nutzung von Dokumentenklassen, die nur „ausgefüllt“
werden müssen.
22
4 Tex und Latex
• Im Einsatz keine Obergrenze bei der Komplexität von Dokumenten. Solche Grenzen
existieren nachgewiesener Maßen bei Officeprodukten
• Da TeX und LaTeX ausgereifte Softwareprodukte sind, die seit 30 Jahren weltweit im
Einsatz sind, brauchen keine Updates eingepflegt werden. Damit sinkt der Supportaufwand.
• TeX und LaTeX sind vollständig hardwareunabhängig, woraus sich eine hohe Investitionssicherheit ergibt.
• Das ganze System ist kostenlos erhältlich.
Was macht das schon... Falls Sie folgende Fragen interessieren, sollten Sie TeX
und LaTeX betrachten:
• Welches Zeichen ist das öffnende deutsche Anführungszeichen: “ oder “ oder « ?
• Was ist falsch an STRAßE ?
• Was ist richtig: ABG’s oder AGB’s oder AGBs’ oder AGB ?
• Weshalb bei Auslassungen . . . statt . . . benutzen?
• Wo ist der Unterschied zwischen - und – ?
Bezug und Installation (*) TeX und LaTeX sind für alle verbreiteten Betriebssysteme frei erhältlich. Gerne genutzt wird u.a. eine Zusammenstellung namens
TeXLive. Sie kann über
• http://www.tug.org/texlive/acquire.html
kostenlos bezogen werden. Da TeXLive vollständig sein will, sind hunderte von Zusatzpaketen bereits mit enthalten und lassen sich gruppenweise dazu installieren. Die
Installation auf eine Festplatte erfolgt programmgesteuert und ist bei gängigen Systemkonfigurationen ohne Probleme. Es ist jedoch auch möglich, TeXLive direkt von
DVD aus einzusetzen.
Es gibt sehr unterschiedliche Editoren zum Schreiben unter Latex. TexMaker ist einer
davon. Ist wohl nicht der Beste, aber er funktioniert.
23
4 Tex und Latex
4.4 Aufbau einer Abschlussarbeit
Es folgt eine knappe Beschreibung der Elemente, die benötigt werden, um eine Abschlussarbeit in TeX bzw. LaTeX zu schreiben. Es gibt andere Beschreibungen im
Internet, die dasselbe Ziel verfolgen, z.B.
http://www.produnis.de/latex/download/Diss_mit_Latex.pdf
Der Einstieg
Die nachstehenden Eingaben können mit einem einfachen Texteditor, z. B. Notepad erfolgen. Günstiger ist jedoch die Nutzung eines TeX-fähigen Editors, z.B. texmaker, der
im Folgenden zu Grunde gelegt wird. Man beginnt mit einer leeren Datei und definiert
als erstes den Typ des Dokumentes, das erstellt werden soll. Für eine Abschlussarbeit
passt der Typ scrbook sehr gut, eine Schriftgröße von 12 Punkt erleichtert das Lesen.
(Anmerkung: Man findet im Web auch TeX-Ratgeber, die die Bachelorarbeit als Artikel scrartcls aufbauen. Dies hat den Nachteil, dass die Arbeit nicht mehr in Kapitel,
also chapter, gegliedert werden kann.) Die Benutzung des Paketes utf8x erlaubt den
Gebrauch der deutschen Sonderzeichen. Die Reise mit Latex beginnt also mit der Eingabe von:
\documentclass[12pt, a4paper]{scrbook}
\usepackage[utf8x]{inputenc}
Diese beiden Zeilen werden nun Schritt für Schritt ergänzt. Was fett gedruckt ist,
muss zusätzlich eingegeben werden.
Alles was zur Arbeit gehört, wird durch ein Klammerpaar begin{document} / end{document}
zusammengehalten:
\documentclass[12pt, a4paper]{scrbook}
\usepackage[utf8x]{inputenc}
\begin{document}
. . . meine Arbeit . . .
\end{document}
Es folgt die Titelseite (\huge wählt große Schrift, \bf wählt Fettschrift, \\
für einen Zeilenvorschub):
\documentclass[12pt, a4paper]{scrbook}
\usepackage[utf8x]{inputenc}
\begin{document}
\title{\huge \bf Abschlussarbeit}
24
steht
4 Tex und Latex
\author{Paul Schaffer}\\
Fachbereich Maschinenbau\\
Fachhochschule Münster\\
{University of Applied Sciences}
\date07.11.2012
\maketitle
\end{document}
Der Titelseite folgt das Inhaltsverzeichnis. Damit das Inhaltsverzeichnis auch mit „Inhaltsverzeichnis“ und nicht mit „Table of Contents“ überschrieben wird, wird das Paket
ngerman eingebunden. Das n in ngerman steht für die neue Rechtschreibung.
\documentclass[12pt, a4paper]{scrbook}
\usepackage[utf8x]{inputenc}
\usepackage[ngerman]{babel}
\begin{document}
\title {\huge \bf Abschlussarbeit}
\author{Paul Schaffer}\\
Fachbereich Maschinenbau\\
Fachhochschule Münster\\
{University of Applied Sciences}
\date07.11.2012
\maketitle
\tableofcontents
\end{document}
Der Textkörper der Arbeit wird in Kapitel (chapter) eingeteilt; eine weitere Unterteilung in Abschnitte (section) und Unterabschnitte (subsection) ist möglich. Den zugehörigen Befehlen \chapter{. . . } , \section{. . . } und \subsection{. . . } werden in den
geschweiften Klammern jeweils Kapitel-, Abschnitts- und Unterabschnittsüberschrift
mitgeteilt. Diese werden automatisch im Inhaltsverzeichnis aufgenommen. Ebenso automatisch erfolgt die Nummerierung der Kapitel, Abschnitte und Unterabschnitte.
\documentclass[12pt, a4paper]{scrbook}
\usepackage[utf8x]{inputenc}
\usepackage[ngerman]{babel}
\begin{document}
\title{\huge \bf Abschlussarbeit}
\author{Paul Schaffer}\\
Fachbereich Maschinenbau\\
Fachhochschule Münster\\
{University of Applied Sciences}
\date07.11.2012
25
4 Tex und Latex
\maketitle
\tableofcontents
\chapter{Einleitung}
\chapter{Das Unternehmen}
\section{Aufbau des Gesamtunternehmens}
\section{Das Werk in Münster}
\subsection{Halle 1}
\subsection{Halle 2}
\end{document}
4.5 Stolperdrähte (•)
Umlaute und Silbentrennung: Die automatische Trennung kann falsch laufen,
wenn das zu trennende Wort Umlaute enthält und die benutzte Schriftart Zeichen
mit Umlauten aus den Grundzeichen plus den beiden Punkten zusammensetzt. Im
Zweifel (oder grundsätzlich bei deutschen Texten) zu Beginn der TeX-Datei
\usepackage[T1]{fontenc}
mit aufnehmen. Sogenannte T1-Fonts sollten das Problem beheben.
Bei der Dokumentenklasse book und scrbook ist der innere Rand schmaler
als der äußere: Wenn das fertige Buch aufgeschlagen vor einem liegt, sieht das Auge
drei weiße Zonen: linker Rand, Mittelstreifen und rechter Rand. Die Regeln der Typografie sagen, das alle drei gleich breit sein sollen. Daher ist auf jeder Seite der innere
Rand halb so breit wie der äußere.
Warum beginnen Absätze immer mit einem Einzug?: Bei Büchern werden neue
Absätze mit einem Einzug gekennzeichnet, nicht mit einer Leerzeile (auch Durchschuss
genannt).
Wie kann man einzelne Textabschnitte, Tabellen, Bilder usw. ins Querformat bringen?:
Vorne mit aufnehmen:
\usepackage{lscape}
Im Textkörper dann:
\begin{landscape}
\begin{figure} gedrehte Abbildung
\caption{gedrehte Unterschrift}
\end{figure}
% evtl. noch weitere Abbildungen/normaler Text/etc.
26
4 Tex und Latex
\end{landscape}
% weiter im Hochformat.
Seitenzahlen unterdrücken: \pagenumbering{gobble}
Listen, Aufzählungen, Tabellen
Eine Aufzählung wird wie folgt aufgebaut:
\begin{itemize}
\item ein Unternehmen
\eine Fachhochschule
\ein Student
\end{itemize}
Druckbild:
• ein Unternehmen
• eine Fachhochschule
• ein Student
Aufzählungen werden entsprechend beschrieben:
\begin{enumerate}
\item Vorgespräche
\item Ist-Aufnahme
\item Planen
\item Umsetzen
\end{enumerate}
Druckbild:
1. Vorgespräche
2. Ist-Aufnahme
3. Planen
4. Umsetzen
Mischformen sind auch möglich: \begin{enumerate}
\item Vorgespräche
\begin{itemize}
\item 8 Uhr bis 12 Uhr
27
4 Tex und Latex
\item 13 Uhr bis 15 Uhr
\item 17 Uhr bis 20 Uhr
\end{itemize}
\item Ist-Aufnahme
\item Planen
\item Umsetzen
\end{enumerate}
Druckbild:
1. Vorgespräche
• 8 Uhr bis 12 Uhr
• 13 Uhr bis 15 Uhr
• 17 Uhr bis 20 Uhr
2. Ist-Aufnahme
3. Planen
4. Umsetzen
Es folgt der Aufbau einer Tabelle mit zwei Spalten und zwei Zeilen. hline zieht eine horizontale Linie über die Tabellenbreite. Die Angabe tabular bedeutet „vertikale Linie,
zentrierte Spalte, vertikale Linie, zentrierte Spalte, vertikale Linie“, // kennzeichnet
den Zeilenwechsel. Die Tabellen werden automatisch durchnummeriert.
\begin{table}[p]
\begin{tabular}[t]{|c|c|}
\hline
30.06.2004 & 142,23 EUR\\
\hline
31.07.2004 & 113,45 EUR\\
\hline
\end{tabular}
\caption{Tagesschlusskurse}
\end{table}
28
4 Tex und Latex
4.6 Grafiken und Fotos
\usepackage{ graphicx }
Ein Bild wird z.B. mit folgenden Anweisungen eingebunden:
\begin{figure}[h]
\begin{center}
\includegraphics[height=7cm]{bild.png}
\end{center}
\caption {Bildunterschrift}
\end{figure}
Neben dieser gibt es eine Reihe anderer Möglichkeiten bei der Einbindung von Bilden.
Informationen dazu gibt es in der Literatur zu LaTeX und natürlich im Internet.
Formeln
Mathematische Formeln lassen sich mit Standard-Textprogrammen nur mit Mühe
schreiben. Die großen Office-Pakete bieten zwar einen Formeleditor, dieser ist jedoch
i.d.R. ein Add-on, d.h. nicht wirklich integriert.
Bei TeX (und LaTeX) war ein hervorragender Formelsatz von Anfang an ein Hauptziel der Entwicklung. Das Ergebnis der Entwicklung ist so gut gelungen, dass TeX
bis heute der Goldstandard auf dem Gebiet des Formelsatzes geblieben ist. Komplexe
Formeln benötigen einen nicht geringen Aufwand zur Beschreibung ihres Aussehens.
Das folgende Beispiel zeigt daher nur eine einfache Formel und deren Beschreibung,
für weitere Informationen sei hier auf die Literatur oder das Internet verwiesen.
Eine der bekanntesten Formeln der Welt ist sicherlich die Äquivalenz zwischen Masse
und Energie nach Einstein. Sie lautet in Worten: Energie E ist gleich dem Produkt
aus Masse m und dem Quadrat der Lichtgeschwindigkeit. Mit einem Standardtextprogramm könnte man dies schreiben als:
E = m*c ˆ 2
In TeX/LaTeX sieht die Formel wie folgt aus:
Einzugeben ist dafür
$ E = m*cˆ2 $
Die Dollarzeichen bezeichnen hier den Beginn und das Ende einer sogenannten Inline-Formel.
Ein etwas aufwendigeres Beispiel:
29
4 Tex und Latex
wird beschrieben durch:
\begin{equation}
\sum_{i=1}^{\infty}\frac{1}{i ^ 2} = \frac{\pi ^ 2}{6}
\end{equation}
4.7 Literatur zitieren, Citavi
Citavi und LaTeX arbeiten gut zusammen. Siehe http://www.manuals.citavi.com/
de/?eine_publikation_mit_latex_erstellen.htm
4.8 Editoren, Textverarbeitungsprogramme,
Satzsysteme (•)
Die Verarbeitung von Texten gehört nach den numerischen Problemen zu den frühesten
Anwendungen, für die Computer eingesetzt wurden. Heute lassen sich drei Programmkategorien erkennen:
Editoren: Editoren dienen zum Eingeben und Ändern von Texten, bei denen es nicht
auf die Präsentation ankommt, sondern allein der Inhalt relevant ist. Typische Anwendungen für Editoren sind das Erstellen von Programmen. Editoren gibt es in jeder
Größenordnung, von ganz einfach bis äußerst kompliziert. Zwei Editoren beanspruchen die Führungsrolle: vim und emacs. Beide sind für alle gängigen Betriebssysteme
erhältlich, beide benötigen eine gewisse Einarbeitungszeit und das Lernen der Befehle.
(Neutrale Beobachter bevorzugen vim).
Textverarbeitungsprogramme: Textverarbeitungsprogramme dienen zum Schreiben von Texten einschließlich der Gestaltung des Aussehens. Die Führungsrolle kommt
hier dem Programm Word der Firma Microsoft zu. Der Autor der Texte kümmert sich
sowohl um den Inhalt als auch um das Aussehen.
Satzsysteme: Satzsysteme dienen dazu, eingegebene Texte automatisiert in vorher
festgelegte Formen zu bringen. Im Unterschied zu Textverarbeitungsprogrammen braucht
sich der Autor hier kaum um das Aussehen und die Gestaltung seines Textes zu küm-
30
4 Tex und Latex
mern. Die Führungsrolle in diesem Segment kommt Latex zu. Kommerzielle Satzsysteme entwickelt und verkauft u.a. ADOBE.
Fragen:
1. Was bewirkt der Befehl . . . . ?
2. Mit welchen Befehlen erreicht man . . . ?
• eine Aufzählung
• eine Bulletliste
• einen Text mit der Schriftgröße 11pt
...
31
5 Gnuplot
Eine Übersicht über die Befehle von gnuplot ist als PDF Datei mit dem Namen gpcard.pdf im Internet zu finden.
Diese Liste sollten Sie zum Praktikum und zur Klausur mitbringen.
Download für Windows: gnuplot.org
Videoeinführung zu gnuplot
Teil
Teil
Teil
Teil
Teil
01
02
03
04
05
Einführung, Grundlagen
Interpolation und Approximation
Animationen
Mehrfachplots
Animierte GIFs
http://www.youtube.com/watch?v=9k-l_ol9jok
http://www.youtube.com/watch?v=GEiwrfo0uzg
http://www.youtube.com/watch?v=-XtOoSWigr0
http://www.youtube.com/watch?v=upitol8A0yQ
http://www.youtube.com/watch?v=lt7AxPIeihQ
Ergänzungen im WS2014/15: Achsenbeschriftung, Best-Fit, Label und Überschriften
5.1 Einleitung
Einfache Diagramme lassen sich mit einfachen Werkzeugen erzeugen. Beispiel: die Umsatzzahlen als Funktion der Zeit und des Ortes im Sti eines Balkendiagramms. Bei
solchen Aufgaben genügt bereits ein Tabellenkalkulationsprogramm wie Excel.
Geht es allerdings um komplexe Darstellungen komplexer Sachverhalte,so muss ein
spezialisiertes Programm zum Einsatz kommen. GNUPLOT ist ein solches Programm.
Gnuplot starten und beenden
Gnuplot arbeitet textbasiert und wird deshalb in einem Terminalfenster gestartet.
Unter Mint-Linux findet sich das Terminal unter dem Startbutton in der linken Spalte. Bei Windows ist es die DOS-Eingabeaufforderung. Beim Mac cmd+Leertaste
drücken und dann unter spotlight terminal eingeben. Im Terminalfenster wird Gnu-
32
5 Gnuplot
plot durch folgende Eingabe gestartet: gnuplot
Unter Linux sollte als erstes ausgeführt werden: set term x11
Unter MAC OSX sollte als erstes ausgeführt werden: set term aqua
Gnuplot wird beendet durch Eingabe von quit oder exit
Gnuplot Hilfe Informationen zu einem Befehl erhält man mit help befehl
Einfache Plotfunktionen
Es reicht nicht, diesen Abschnitt zu lesen. Starten Sie gnuplot und geben
Sie Befehl für Befehl ein. Reflektieren Sie über die Resultate.
Die Ausgabe von gnuplot kann in der Ebene oder im Raum erfolgen.
Zur Ausgabe in der Ebene wird der Befehl plot benutzt.
Zur Ausgabe im Raum wird der Befehl splot benutzt.
Statt plot und splot wird replot benutzt, wenn ein bereits begonnener Plot fortgesetzt werden soll. Mit anderen Worten: Bei plot und splot wird ein vorhandener Plot
gelöscht, bei replot nicht.
Beispiele:
plot sin(x) Plottet die Funktion sin(x) in der Ebene.
plot 1/(x*x+1) Plottet die Funktion 1/(x*x+1) in der Ebene.
splot sin(x)*1/(y*y+1) 3D-Plot. z-Wert ist Funktion von x und y.
Plotbereiche festlegen
set xrange [5:15] legt Kleinst- und Größtwert der x-Achse fest. Bleibt gültig, bis
er verändert wird.
set yrange [4:7] genauso.
set zrange [-4:20] genauso.
Gitterlinien plotten
set grid
33
5 Gnuplot
Aktiviert Gitterlinien. Wird mit dem nächsten plot- oder splot-Befehl sichtbar. Bleibt
solange aktiv, bis es mit unset grid wieder abgeschaltet wird. Aktivieren Sie das Grid
und plotten Sie die Funktionen des ersten Abschnitts erneut. Achten Sie darauf, wo
das Grid liegt und welches Rastermass es hat.
Einstellen des Rastermaßes der Gitterlinien: set xtic 3; set ytic pi/8
Stil der Linien festlegen
Gnuplot berechnet für das Plotten der Kurven eine Anzahl von Punkten, die auf
der Kurve liegen. Diese Punkte werden dann entweder interpoliert oder tatsächlich als
Punkte geplottet.
plot [-5:5] 1/(x*x+1) with points Einzelpunkte
plot [-5:5] 1/(x*x+1) with lines Punkte interpoliert
plot [-5:5] 1/(x*x+1) with boxes mit Balken
plot [-5:5][0:10] “-“ using 1:2:3 with labels
1 1 hier
2 3 geht
3 1 es
4 2 lang mit Texten
Die Zahl der Zwischenpunkte kann eingestellt werden mit:
set samples anzahl
set samples 10
Setzt die Punktezahl auf 10. Plotten Sie die Funktionen des Abschnitts „Grundlegende
Plotfunktionen“ erneut. Achten Sie auf Unterschiede.
set samples 100
Setzt die Punktezahl auf 100. Plotten Sie die Funktionen des Abschnitts „Grundlegende Plotfunktionen“ erneut. Achten Sie auf Unterschiede.
Bei 3D-Plots lautet der Befehl:
set isosamples anzahl
Gute Werte für anzahl liegen zwischen 10 und 50. Testen Sie, was passiert, wenn die
anzahl zu groß wird, z.B. 100. Bedenken Sie, dass die Zahl der Punkte, die berechnet
und ausgegeben werden müssen, quadratisch ansteigt, d.h. bei anzahl=20 sind 400
Punkte auszuwerten, bei anzahl=100 sind es bereits 10000 Punkte, also die 25-fache
Menge.
Achsen beschriften
Die Beschriftung der x-Achse und der y-Achse erfolgt ebenfalls über den set-Befehl:
set xlabel „Jahr“
34
5 Gnuplot
set ylabel „Gewinn“
xxx
Logarithmische Achsen
set logscale x
set logscale y
zurück zur linearen Achseinteilung:
unset logscale x
unset logscsle y
Zwei (oder mehr) Kurven in einem Diagramm (•)
y ist eine Funktion von x:
plot [-1:1][-1:1] x,0*x, x,x
erzeugt zwei Kurven in einem Diagramm, und zwar die X-Achse und die Winkelhalbierende.
x und y sind Funktionen eines Paramters t
plot [0:6.28] cos(t), sin(t), (10+cos(t)),sin(t), 5+5*cos(t),5*sin(t)
Stückweise definierte Funktionen
unset param
plot [0:1] 0.5*x*(x<0.3) + 0.15*cos(x-0.3)*(x>0.3)*(x<1.0)
Logische Ausdrücke wie (x<0.3) haben zwei mögliche Werte: 1, falls die Bedingung zutrifft, 0 sonst. Durch diese Eigenschaft wird ereicht, dass mit Ausdrücken wie (x<0.3)
gerechnet werden kann. So ergibt sich für x=0.2: y=0.5*0.2*(1) + 0.15*cos(0.2-0.3)*(0)
und für x=0.7:y=0.5*0.7*(0) + 0.15*cos(0.7-0.3)*(1).
Darstellungseigenschaften von 3D-Flächen
Funktionen z=f(x,y) werden mit splot geplottet. Gnuplot zeichnet bei splot ein Drahtmodell, sofern nichts anderes mit set eingestellt wurde.
set hidden3d
Zeichnet eine echte Oberfläche, durch die man nicht hindurchsehen kann. Wird mit
unset hidden3d wieder aufgehoben.
35
5 Gnuplot
set pm3d
Zeichnet eine Oberfläche, deren Farbe der z-Koordinate folgt, d.h. kleine z-Werte werden blau eingefärbt, große z-Werte rot.
Variieren Sie die Beispiele, bis Sie diese Befehle sicher beherrschen.
5.2 Plotten parametrischer Funktionen
Es gibt keine Funktion y(x)=f(x), die in der x-y-Ebene einen Vollkreis zeichnet. (Warum
nicht?)
Man kann aber einen Vollkreis erhalten, wenn man sowohl die x-Koordinte als auch
die y-Koordinate als Funktion eines Parameters t beschreibt.
plot sqrt(100-x*x)
Kann nur einen Halbkreis Radius 10 darstellen.
set param
plot 10*cos(t),10*sin(t) Kreis mit Radius 10. Der Startwert und der Endwert des
Parameters wählt gnuplot, sofern keine Angaben gemacht werden.
Soll nur ein Kreisausschnitt von 0◦ bis 70◦ gezeichnet werden, so ist der Parameter t mittels set trange einzuschränken:
set trange [0:70*pi/180]
plot 10*cos(t),10*sin(t)
Beispiel: Eine Kanone schießt aus einer Höhe h=200m ein Geschoß mit einer Anfangsgeschwindigkeit von 100m/s waagerecht ab. Die Reibung werde vernachlässigt. Plotten
Sie die Flugbahn des Geschosses. → Sei t der Parameter für die Zeit, Einheit ’Sekunde’.
Dann lautet die Formel für die Bewegung in x-Richtung: x(t)=100*t. Die Bewegung in
y-Richtung ist der freie Fall, beschrieben durch y(t)=h-g*t*t/2 (g=9.81m/s/s). Somit
lautet der Plotbefehl:
set param
g=9.81
h=200
v0=100
plot [0:10] v0*t,h-g*t*t/2 with points
Beispiel: Eine Bezierkurve in der Ebene wird durch drei Punkte (x0,y0), (x1,y1)
und (x2,y2) wie folgt definiert: die Kurve beginnt in (x0,y0). Sie endet in (x2,y2).
Wenn sie (x0,y0) verläßt, ist ihre Tangente gerade (x1-x0,y1-y0). Wenn sie (x2,y2)
36
5 Gnuplot
erreicht, ist ihre Tangente gerade (x2-x1,y2-y1). Um diese Zusammenhänge mathematisch auszudrücken, benutzen wir einen Parameter t, der zwischen 0 und 1 läuft, und
zwei Funktionen x(t) und y(t) mit x(0)=x0, x(1)=x2, dx/dt(0)=x1-x0, dx/dt(1)=x2x1 und entsprechend für y(t). Wir wählen als x(t) ein Polynom zweiten Grades:
x(t)=a*t*t+b*t+c
Aus x(0)=x0 folgt c=x0
Aus (x(1)=x2 folgt a+b+x0=x2
Aus dx/dt(0)=x1-x0 folgt b=x1-x0 und a=x2-x1
Zusammengefaßt:
x(t)=(x2-x1)*t*t+(x1-x0)*t+x0
y(t)=(y2-y1)*t*t+(y1-y0)*t+y0
Beispielwerte:
x0=2;x1=2.5;x2=3
y0=3;y1=5;y2=3
set param
set trange [0:1]
x(t)=(x2-x1)*t*t+(x1-x0)*t+x0
y(t)=(y2-y1)*t*t+(y1-y0)*t+y0
plot x(t),y(t)
Wird linear zwischen den Punkten interpoliert, so erhält man die Umhüllende der
Punkte:
replot
replot
replot
replot
(x1-x0)*t+x0,
(x2-x1)*t+x1,
(x3-x2)*t+x2,
(x0-x3)*t+x3,
(y1-y0)*t+y0
(y2-y1)*t+y1
(y3-y2)*t+y2
(y0-y3)*t+y3
replot arbeitet wie plot, nur das ein bereits vorhandener Plot nicht gelöscht wird.
Ihre Bedeutung erhalten Bezierkurven dadurch, dass durch verschieben, spiegeln oder
drehen der drei Punkte die Kurve verschoben, gespiegelt oder gedreht wird.
37
5 Gnuplot
x0=2;x1=2.5;x2=3
y0=3;y1=5;y2=3
set param
set trange [0:1]
plot (x2-x1)*t*t+(x1-x0)*t+x0,(y2-y1)*t*t+(y1-y0)*t+y0
x4=3;x5=2.5;x6=2
y4=3;y5=5;y6=3
replot (x6-x5)*t*t+(x5-x4)*t+x4,(y6-y5)*t*t+(y5-y4)*t+y4
Beispiel: Im 3D-Raum soll ein Quadrat mit der Seitenlänge 1 gzeichnet werden. Eckpunkte:
(0,0,0), (0,1,0), (0,1,1), (0,0,1)
set urange [0:1]
set vrange [0:1]
set param
set hidden3d
splot 0,u,v
Nun soll die horizontale Ausdehnung auf 2*pi erhöht werden:
set urange [0:2*pi]
set vrange [0:1]
set param
set hidden3d
splot 0,u,v
Die Fläche wird nun um einen Zylinder mit Radius 1 gewickelt:
set urange [0:2*pi]
set vrange [0:1]
set param
set hidden3d
splot cos(u),sin(u),v
Den Ring glätten:
set isosamples 50
set urange [0:2*pi]
set vrange [0:1]
set param
set hidden3d
splot cos(u),sin(u),v
38
5 Gnuplot
Jetzt wird die obere Kante des Rechtecks um die untere Kante herumgeführt:
set isosamples 50
set urange [0:2*pi]
set vrange [0:1]
set param
set hidden3d
splot cos(u)*(1+v*sin(u/2)),sin(u)*(1+v*sin(u/2)),v*cos(u/2)+u/2/pi
Das Ergebnis ist ein sogenanntes Möbiusband. Überzeugen Sie sich davon, dass das
Möbiusband nur eine Kante und eine Vorderseite, aber keine Rückseite besitzt.
Rückkehr zum x/y-Plot mit unset param
5.3 Darstellung von Daten aus Dateien
Starten Sie Gnuplot neu, damit die alten Befehle nicht mehr stören.
Mit table ist es möglich, die geplotteten Punkte parallel in eine Datei zu schreiben:
set table "erstedaten.txt"
plot [-1:1] 1/(x*x+1)
unset table
Inhalt der Datei erstedaten.txt:
39
5 Gnuplot
# Curve 0 of 1, 100 points
# Curve title: "1/(x*x+1)"
# x y type
-1 0.5 i
-0.979798 0.510203 i
-0.959596 0.52061 i
-0.939394 0.53122 i
-0.919192 0.542031 i
-0.89899 0.553041 i
-0.878788 0.564249 i
-0.858586 0.575649 i
-0.838384 0.587238 i
-0.818182 0.59901 i
.... 0.89899 0.553041 i
0.919192 0.542031 i
0.939394 0.53122 i
0.959596 0.52061 i
0.979798 0.510203 i
1 0.5 i
Ausgabe der ersten Spalte
plot "erstedaten.txt"using ($1)
Ausgabe der zweiten Spalte
plot "erstedaten.txt"using ($2)
Ausgabe der zweiten Spalte als Funktion der ersten Spalte
plot "erstedaten.txt"using ($1):($2)
Ausgabe der ersten Spalte als Funktion der zweiten Spalte
plot "erstedaten.txt"using ($2):($1)
Ausgabe mit kombinierten Spalten
plot "erstedaten.txt"using ($1*$2):($1-$2)
40
5 Gnuplot
Testen Sie, ob diese Plotbefehle mit den oben vorgestellten Variationen
zusammenarbeiten (line, points, boxes, grid,. . . )
Ausgabeformat wählen
Die Standardausgabe für gnuplot ist ein Grafikfenster auf dem Bildschirm des lokalen Rechners. Es stehen jedoch auch viele andere Ausgabeformate zur Verfügung,
die durch den Befehl
set terminal format
ausgewählt werden können. Einige Beispiele:
set
set
set
set
set
set
set
set
terminal
terminal
terminal
terminal
terminal
terminal
terminal
terminal
x11
aqua
windows
post
dxf
latex
gif animate
jpeg
Dabei gilt folgende Zuordnung: x11 → Linux; aqua → Apple; windows → MS Windows; post → PostScript; dxf → Autocad; latex → Latex Satzsystem; gif animate →
animiertes GIF; jpeg → JPG.
Hinweis: eine Änderung des Ausgabeformates wirkt nicht rückwirkend, d.h. eventuell bereits durchgeführte Plotoperationen müssen, wenn sie in die Ausgabe einfließen
sollen, noch einmal ausgeführt werden.
Hinweis: wenn die Ausgabe in eine Datei geschrieben werden soll (zum Beispiel bei
JPEG), so ist vor dem Plotten über den Befehl
set output "dateiname"
der Dateiname festzulegen. Das Schreiben in die Datei wird mit
set terminal x11 (bei Linux)
set terminal aqua (bei Mac)
set terminal windows (bei MS Windows)
beendet.
Achtung: Erst das Ausgabeformat wählen, dann die Datei benennen.
41
5 Gnuplot
5.4 Fortgeschrittene Funktionen
Es gibt im Internet viele verschiedene Einführungen in gnuplot. An dieser Stelle soll
nicht eine weitere Einführung entstehen, sondern besondere Fähigkeiten von gnuplot
hervorgehoben werden. Aufgabe: Suchen Sie im Internet eine Einführung in gnuplot,
mit der Sie arbeiten können. Drucken Sie sich das Dokument aus und benutzen Sie es
für die folgenden Abschnitte.
Finanzdaten
Eine Datei namens kurse.txt enthält in sechs Spalten Daten über den Kursverlauf
einer Aktie:
1. Spalte ist die laufende Nummer;
2. Spalte enthält den Wochentag → Beschriftung X-Achse;
3. Spalte ist der Tagesstartkurs → waagerechter Strich links;
4. Spalte ist der Tagestiefstwert→ unteres Ende eines Striches;
5. Spalte ist der Tageshöchstwert → oberes Ende eines Striches;
6. Spalte ist der Tagesschlusskurs→ waagerechter Strich rechts.
Die Daten sollen kompakt und leicht interpretierbar dargestellt werden. Beispielwerte
in kurse.txt:
1
2
3
4
5
Mo
Di
Mi
Do
Fr
10
11
13
7
11
9
10
8
6
7
12
15
14
12
13
11
13
12
11
12
Die Befehle zur Ausgabe mit gnuplot:
set terminal x11
set grid
set bars 20
set label "Umsatzrekord"at 2.1,16
set object 1 circle at 2,15 size 0.1
plot [0:6][0:20] "kurse.txt"using ($1):($3):($4):($5):($6):xticlabels(2)
title "KW 17"with financebars linecolor rgbcolor "#FF0000"
42
5 Gnuplot
Erläuterungen:
set terminal x11 legt fest, dass die Grafikausgabe als Fenster unter X11 auf dem
Bildschirm des Benutzers erscheinen soll.
set grid aktiviert das Zeichnen der gestrichelten Hilfslinien (Raster).
set bars 20 setzt die Breite der Querstriche auf 20 Pixel.
set label „Umsatzrekord“ at 2.1,16 schreibt das Wort Umsatzrekord an die Position X = 2.1/Y = 16.
set object 1 circle at 2,15 size 0.1 zeichnet einen Kreis mit Mittelpunkt X = 2/Y = 15
und dem Radius 0.1; dient hier zur Kennzeichnung und Heraushebung des höchsten
Wertes.
plot [0:6][0:20] „kurse.txt“ using ($1):($3):($4):($5):($6):($1):xticlabels(2)
title „KW 17“ with financebars linecolor rgbcolor “#FF0000“ zeichnet das
Bild, die Bedeutung der Einzelkomponenten:
• plot ist der Zeichenbefehl;
• [0:6] legt die X-Achse fest;
• [0:20] legt die Y-Achse fest;
• kurse.txt enthält als Datei die Daten zum Kursverlauf;
• using kennzeichnet den Block, in dem die Datenauswahl und die Datenzuordnung
vorgenommen wird;
• ($1):($3):($4):($5):($6) Nummern der Spalten, deren Werte in der Ausgabe erscheinen sollen;
• xticlabels(2) sorgt dafür, dass die Kennzeichnungen in der zweiten Spalte als
Beschriftung der X-Achse verwendet werden;
• title „KW 17“ benennt die gezeichneten Daten in der Legende;
• with financebars legt die Interpretation der Daten fest; es sind fünf Werte anzugeben: laufende Nummer, Tagesstartkurs, kleinster Wert des Tages, größter
Wert des Tages, Tagesschlusskurs
• linecolor rgbcolor “#FF0000“ sorgt dafür, dass die variablen Elemente der Grafik
rot ausgegeben werden.
Das Ergebnis:
43
5 Gnuplot
Abbildung 5.1: Gnuplot
5.5 Animation
Erstellen Sie eine Textdatei mit folgendem Inhalt:
set samples 1000
f(x)=a/cosh(x)
g(x)=f(x)*cos(5*x)
plot [-10:10][-100:100] a*g(x)
a=a+1
if(a<10) reread
Speichern Sie diese Datei unter dem Namen gnuplot02.plt.
44
5 Gnuplot
Erläuterungen:
set samples 1000 legt fest, dass die X-Achse in 1000 Punkte eingeteilt wird.
f(x)=a/cosh(x) die Funktion f gibt die äußere Form (die Einhüllende) an.
g(x)=f(x)*cos(5*x) die Funktion g ist die Funktion, die geplottet wird.
plot [-10:10][-100:100] a*g(x) Plottet die Kurve.
a=a+1 erhöht den Wert der Variablen a um eins, damit beim nächsten
Durchlauf die Amplitude der Funktion g zunächst kleiner und dann wieder größer wird.
if(a<10) reread wiederholt den Ablauf, sofern die Variable a < 10 ist.
Öffnen Sie ein Konsolenfenster und starten Sie gnuplot. Geben Sie folgende Befehle ein:
set terminal gif animate delay 1
set output "gnuplot02.gif"
a=-10
load "gnuplot02.plt"
Erläuterungen:
set terminal gif animate delay 1 wählt als Ausgabeformat eine animierte Gif.
set output „gnuplot02.gif“ bestimmt als Dateinamen gnuplot02.gif
a=-10 setzt den Startwert der Variablen a auf -10.
load „gnuplot02.plt“ in dieser Datei stehen die Plotbefehle. Sie muss vorweg angelegt werden.
Das Ergebnis:
45
5 Gnuplot
Abbildung 5.2: Gnuplot2
5.6 Parametrisierte Funktionen
Die Befehle:
46
5 Gnuplot
set term x11
set multiplot layout 2,2
set param
set grid
set arrow 1 from 0,1 to 1,1 linewidth 2
set arrow 2 from 1,1 to 1,-1.4 linewidth 2
set arrow 3 from 1,1 to 7.2,1 linewidth 2
set arrow 4 from 7.2,1 to 7.2,-1.6 linewidth 2
plot [0:3.14] t, t
unset arrow
plot [0:3.14] sin(t),t
set arrow from 1,1 to 1,0.56 linewidth 2
set arrow from 1,0.56 to 7.2,0.56 linewidth 2
plot [0:3.14] t,cos(t)
plot [0:3.14] sin(t),cos(t)
unset arrow
unset multiplot
Das Ergebnis:
Abbildung 5.3: Parametrisierte Funktionen
47
5 Gnuplot
Erläuterungen:
set multiplot layout 2,2 auf einem Blatt sollen 2 × 2 Plots angelegt werden.
set param wechselt in den Parametermode. Die Y Werte sind jetzt nicht mehr eine
Funktion der X-Werte, sondern sowohl die X-Werte als auch die Y-Werte hängen von
einem weiteren Parameter t ab. Der Zusammenhang wird für den Parameterwert t
gleich 1 durch die Pfeile erläutert.
set grid erzeugt die Rasterlinien im Plot.
set arrow 1 from 0,1 to 1,1 linewidth 2 erzeugt den linken Pfeil.
set arrow 2 from 1,1 to 1,-1.4 linewidth 2 erzeugt den Anschlusspfeil nach unten.
set arrow 3 from 1,1 to 7.2,1 linewidth 2 erzeugt den oberen rechten waagerechten Pfeil.
set arrow 4 from 7.2,1 to 7.2,-1.6 linewidth 2 erzeugt den rechten Pfeil nach
unten.
plot [0:3.14] t, t plottet das obere linke Bild. Die X Koordinate ist gleich dem Parameter t, die Y Koordinate ist gleich dem Parameter t, es entsteht die Winkelhalbierende.
unset arrow verhindert, dass beim nächsten Bild die Pfeile erneut gezeichnet werden.
plot [0:3.14] sin(t),t plottet das Bild oben rechts. Die X Koordinate ist gleich sin(t),
die Y Koordinate ist gleich t.
set arrow from 1,1 to 1,0.56 linewidth 2 zeichnet den nächsten Pfeil. Zu beachten
ist, dass sich die Angaben zum Pfeilstart und Pfeilende auf das aktuelle Koordinatensystem des Bildes oben rechts beziehen.
set arrow from 1,0.56 to 7.2,0.56 linewidth 2
plot [0:3.14] t,cos(t) plottet das Bild unten links. Die X Koordinate = t, die Y Koordinate ist gleich cos(t).
plot [0:3.14] sin(t),cos(t) plottet das Bild unten rechts. Die X Koordinate ist gleich
sin(t), die Y Koordinate ist gleich cos(t).
unset arrow
unset multiplot hebt den Multiplot Status wieder auf.
48
5 Gnuplot
5.7 3D-Plots
Die Befehle:
set term png
set output "gnuplot06.png"
set hidden3d
set pm3d
set isosamples 90
set contour
q(x,y)=sqrt(x*x+y*y)
g(x,y)=sin(q(x,y))/q(x,y)
splot [-10:10][-10:10] g(x,y)
set term x11
Das Ergebnis:
Abbildung 5.4: 3D-Plots
49
5 Gnuplot
Erläuterungen:
set term png
set output „gnuplot06.png“
set hidden3d
set pm3d
set isosamples 90
set contour
q(x,y)=sqrt(x*x+y*y)
g(x,y)=sin(q(x,y))/q(x,y)
splot [-10:10][-10:10] g(x,y)
set term x11
5.8 Übungsaufgaben
Übungsaufgaben
plot [0:6.28] cos(x)
oder
pix2=6.28
plot [0:pix2] cos(x)
Abbildung 5.5: cos-Schwingung
2) Welcher Plot-Befehl im Gnuplot ergibt folgendes Bild?
50
5 Gnuplot
plot [-1:2] exp(x)
3) Wie erhält man in Octave eine Zahlenfolge der Art: 0,1,2,3,4,5,6?
[0,1,2,3,4,5,6] als Zeilenvektor
[0;1;2;3;4;5;6]´ als transponierter Spaltenvektor
0:1:6 erzeugt Zeilenvektor mit Start:Schrittweite:Ende
4) Wie erhält man in Octave einen Spaltenvektor der Länge 20 mit den
Anfangswert 3 und Endwert 23?
3:1:23 falsch, da 21 Werte
(3:20/19:23)´ richtig
5) Wie ist die Ausgabe von Gnuplot bei folgenden Befehlen:
set param
plot [0:10] t*t, t*t*t
Abbildung 5.6: Gnuplot
set param
plot [0:10] t*t, t*t
51
5 Gnuplot
Abbildung 5.7: Gnuplot
6) Wie erhält man eine Matrix mit 500*500 Zufallszahlen zwischen 0 und 1?
m=rand(500)
7) Wie erhält man folgende Matrix?
Abbildung 5.8: Matrix
eye(5)
8) Wie beendet man Octave?
exit
52
5 Gnuplot
Weitere Aufgaben:
Folgende Daten seien in der Datei gp.txt gespeichert:
111
248
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
1. Plotten der Funktionen f(x)=x, f(x)=x*x und f(x)=x*x*x (entspricht der ersten,
zweiten und dritten Spalten der Datei).
plot [1:10] x**
plot [1:10] x*x**
plot [1:10] x*x*x**
2. Plotten der Kurve (x(t), y(t)) in der Ebene mit x(t)=t*t und y(t)=t*t*t:
set param
plot [1:10] t*t, t*t*t**
3. Plotten der zweiten (=x) und dritten (=y) Spalte der Daten in gp.txt:
plot "gp.txtüsing ($2):($3)
4. Plotten der Daten der Datei mit x=Spalte 2 minus Spalte 1 und y=Spalte 3:
plot "gp.txtüsing ($2-$1):($3)
5. 3d-Plot
splot [1:10] u,u*u,u*u*u** ergibt eine Lini
splot [1:10]][[1:10] u,u*v,v*v*v** ergibt eine Fläche im Raum
6. Gestalten
53
5 Gnuplot
set hidden3d löscht verdeckte Linien
set pm3d Höhe farbcodiert
set isosamp 30 Zahl der Gitterlinien
set contour Höhenlinien
unset ... zurücksetzen
7. Plots in einer Datei speichern
set terminal GIF** Format wählen
set output "dateiname"** speichert den Plot als Gif-Bild
set terminal listet die Optionen auf
8. help liefert Hilfetexte
9. Grundkurz-Gnuplot: http://userpage.fu-berlin.de/~voelker/gnuplotkurs/gnuplotkurs.
html
10. octave Tutorial: http://www.christianherta.de/octaveMatlabTutorial.html
11. octave online http://www.online-utility.org/math/math_calculator.jsp
5.9 Nachtrag Regelflächen
set param
set urange [0:1]
set vrange [0:1]
a1(u,v)=u;b1(u,v)=0;c1(u,v)=0
a2(u,v)=u*2;b2(u,v)=u;c2(u,v)=0
x(u,v)=(a2(u,v)-a1(u,v))*v+a1(u,v)
y(u,v)=(b2(u,v)-b1(u,v))*v+b1(u,v)
z(u,v)=(c2(u,v)-c1(u,v))*v+c1(u,v)
splot x(u,v), y(u,v), z(u,v)
replot x(u,0),y(u,0),z(u,0)
replot x(u,1),y(u,1),z(u,1)
54