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