Schmalkalden Elektrotechnik. Einführung in GnuPlot, GNU Octave, Scilab und Maxima



Ähnliche Dokumente
Kurzeinführung in GNUPLOT

Einführung in QtiPlot

Tutorial: Gnumeric installieren und Jahres-Kostenübersicht erstellen mit Diagramm

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Umwandeln und Exportieren von Adobe-Illustrator-Dateien in Illustrator für Artcut

= {} +{} = {} Widerstand Kondensator Induktivität

FMGate Installation & Benutzung

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Neuinstallation Einzelplatzversion

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Stift-Karussell in M-Plot einrichten

Anleitung zur Verwendung der VVW-Word-Vorlagen

Version 0.3. Installation von MinGW und Eclipse CDT

teamsync Kurzanleitung

Dokumentation. Gnuplot

Erstellen von x-y-diagrammen in OpenOffice.calc

SRH - Kurzinformation

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Stammdatenanlage über den Einrichtungsassistenten

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Anzeige von eingescannten Rechnungen

Technische Voraussetzungen Nexory Printer

Dokumentation IBIS Monitor

Der digitale. Workflow Workflow. [PDF-Erstellung aus CorelDraw für Windows]

Anleitung. Einrichtung vom HotSync Manager für den Palm 1550 bis 1800 unter Windows 7. Palm SPT 1500 / 1550 Palm SPT 1700 / Bits & Bytes Seite 1

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Schmalkalden Elektrotechnik. Einführung in GnuPlot, Scilab und Maxima

Fraunhofer FOKUS ADPSW-INSTALLATION. Abiturdaten-Prüfsoftware. Version 3.0.1, 7. Mai 2013 FRAUNHOFER-INSTITUT FÜR OFFENE KOMMUNIKATIONSSYSTEME FOKUS

Erzeugung eines Premiumadress Datamatrix-Codes mit Hilfe der Schriftart Deutsche Post Premiumadress

ID VisitControl. Dokumentation Administration Equitania Software GmbH cmc Gruppe Seite 1

Konfiguration WinCard Pro TwixTel

Zahlen auf einen Blick

Bilder für LaTeX mit GIMP. Hartmut Noack Frank Hofmann

Ihr IT-Administrator oder unser Support wird Ihnen im Zweifelsfall gerne weiterhelfen.

Octave für Windows. Leichte Variante (kein Cygwin installiert)

Artikel Schnittstelle über CSV

ECDL Europäischer Computer Führerschein. Jan Götzelmann. 1. Ausgabe, Juni 2014 ISBN

Handbuch ECDL 2003 Professional Modul 1: Textverarbeitung Absätze formatieren

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Installation OMNIKEY 3121 USB

Installation von Druckern auf dem ZOVAS-Notebook. 1. Der Drucker ist direkt mit dem Notebook verbunden

teischl.com Software Design & Services e.u. office@teischl.com

Microsoft Access 2010 Navigationsformular (Musterlösung)

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Vorgehensweise bei Lastschriftverfahren

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Datei Erweiterungen Anzeigen!

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

CAD Warehouse- Verbindungen. Plattformspezifische Darstellung

Diagramm aus mehreren Tabellenblättern

Anleitung zur Installation von Tun EMUL 12.0

Kennen, können, beherrschen lernen was gebraucht wird

Medea3 Print-Client (m3_print)

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Einführung in TexMaker

Wie halte ich Ordnung auf meiner Festplatte?

Elexis-BlueEvidence-Connector

Beschreibung der Einstellungen zum Drucken aus TRIC DB mit BricsCad ab Version V5

Gruppenrichtlinien und Softwareverteilung

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Kapitel 7 - Wägungen

Wie Sie mit Mastern arbeiten

Text Formatierung in Excel

Tutorial Einrichten von TurboCAD

1. Aktionen-Palette durch "Fenster /Aktionen ALT+F9" öffnen. 2. Anlegen eines neuen Set über "Neues Set..." (über das kleine Dreieck zu erreichen)

Um in das Administrationsmenü zu gelangen ruft Ihr Eure Seite auf mit dem Zusatz?mod=admin :

Informationen zur Verwendung von Visual Studio und cmake

PDF-Druck und PDF-Versand mit PV:MANAGER

Abbildung 8.1: Problem mit dem Zertifikat. 2. Melden Sie sich am imanager als admin an. Die Anmeldung erfolgt ohne Eingabe des Kontextes: 8-2

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Vorstellung Microsoft Mathematics 4.0

Rechenzentrum der Ruhr-Universität Bochum. Integration von egroupware an der RUB in Outlook 2010 mit Funambol

1. Melden Sie sich als Administrator an und wechseln Sie zum Desktop

Konfiguration der Messkanäle. Konfiguration der Zeitachse. Abb. 3: Konfigurationsmenü des Sensoreingangs A. Abb. 4: Messparameter Konfigurationsmenü

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Kleine Einführung in die lineare Regression mit Excel

Dokumentation. estat Version 2.0

Satzhilfen Publisher Seite Einrichten

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand Copyright

Sie werden sehen, dass Sie für uns nur noch den direkten PDF-Export benötigen. Warum?

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

1 Dokumentenmanagement

Lehrer: Einschreibemethoden

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Installationshinweise Linux Edubuntu 7.10 bei Verwendung des PC-Wächter

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden?

Handbuch. für die. Erstellung von Mehrfarbstempeln. mit. Corel Draw (Deutsch)

So gehts Schritt-für-Schritt-Anleitung

Outlook und Outlook Express

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Installationsanleitung Maschinenkonfiguration und PPs

Welche Lagen können zwei Geraden (im Raum) zueinander haben? Welche Lagen kann eine Gerade bezüglich einer Ebene im Raum einnehmen?

Installationsanleitung für Update SC-Line

Mediator 9 - Lernprogramm

Transkript:

FH Fak. Schmalkalden Elektrotechnik Einführung in GnuPlot, GNU Octave, Scilab und Maxima

Inhaltsverzeichnis 1 Übersicht 5 2 GnuPlot 7 2.1 Installation.............................. 7 2.1.1 Installation unter Linux.................... 7 2.1.2 Installation unter Unix/Linux aus den Quellen........ 7 2.1.3 Installation unter Windows.................. 8 2.2 GnuPlot starten............................ 9 2.2.1 GnuPlot interaktiv benutzen................. 9 2.2.2 Eine Datei verarbeiten.................... 10 2.3 Zahlen und Winkel.......................... 11 2.3.1 Zahlendarstellung....................... 11 2.3.2 Winkeldarstellung...................... 12 2.5 Selbstdefinierte Funktionen in GnuPlot................ 13 2.6 2D-Plots................................ 14 2.6.1 xy-plots............................ 14 2.6.2 Einstellungen für 2D-Plots.................. 15 2.6.4 Zusammengesetzte Kurven.................. 40 2.6.5 Parametrische Plots...................... 42 2.6.6 Plots in Polarkoordinaten................... 43 2.7 3D-Plots................................ 45 2.7.1 xyz-plots........................... 45 2.7.2 Einstellungen für 3D-Plots.................. 46 2.7.3 Parametrische Plots...................... 51 2.8 Terminals............................... 53 2.8.1 Übersicht über Terminals................... 53 2.8.2 Ausgabedatei erzeugen.................... 55 2.9 GnuPlot und LATEX.......................... 57 2.9.1 GnuPlot oder pst-plot?.................... 57 2.9.2 Das MetaPost-Terminal................... 57 2.9.3 MetaPost-Terminal verwenden................ 59 2.9.4 MetaPost-Datei konvertieren................. 60 2.9.5 MetaPost-Ausgabe in LATEX verwenden........... 61 2.9.6 Anpassungen an der MetaPost-Datei............. 62 2.9.7 Tipps rund um GnuPlot und LaTeX............. 75 3

Inhaltsverzeichnis 3 Erste Schritte mit GNU Octave und Scilab 79 3.1 Einführung.............................. 79 3.2 Octave-Installation.......................... 80 3.2.1 Octave-Installation unter Linux............... 80 3.2.2 Octave-Installation unter Unix/Linux aus den Quellen... 80 3.2.3 Octave-Installation unter Windows.............. 81 3.3 Scilab-Installation........................... 83 3.3.1 Scilab-Installation unter Linux................ 83 3.3.2 Scilab-Installation unter Windows.............. 83 3.4 Octave starten............................. 84 3.4.1 Interaktives Arbeiten..................... 84 3.4.2 Datei verarbeiten....................... 84 3.5 Scilab starten............................. 86 3.6 Beispiele............................... 93 3.6.1 Einfache Berechnung..................... 93 3.6.2 Selbstdefinierte Funktion................... 96 3.6.3 Vektoren, Matrizen und lineare Gleichungssysteme..... 100 3.6.4 Nichtlineare Gleichungssysteme............... 104 4 Maxima 127 4.1 Installation.............................. 127 4.1.1 Installation unter Windows.................. 127 4.1.2 Installation unter Linux.................... 127 4.1.3 Dokumentation........................ 127 4.2 Programmstart............................. 128 4.2.1 Programmstart unter Windows................ 128 4.2.2 Programmstart unter Linux.................. 133 4.3 Verarbeitung von Dateien....................... 137 4.4 Beispiele............................... 140 4.4.1 Numerische Ergebnisse.................... 140 4.4.2 Funktionen.......................... 141 4.4.3 Werte zuweisen........................ 143 4.4.4 Formeln zuweisen...................... 144 4.4.5 Vereinfachen......................... 147 4.4.6 Werte in Formel einsetzen.................. 149 4.4.7 Gleichungsssysteme..................... 151 4.4.8 Differenzieren........................ 153 4.4.9 Integrieren.......................... 154 4.4.10 Differentialgleichungen................... 155 4.4.11 Analyse eines Bandpasses.................. 159 A Anhang 169 A.1 PDF-Attachments abspeichern.................... 169 A.2 Zugriffsrechte auf C:\Cygwin unter Windows setzen......... 171 4

1 Welches Programm für welchen Zweck Das Programm GnuPlot stellt mathematische Sachverhalte graphisch dar, entweder erfolgt eine Ausgabe auf dem Bildschirm oder es werden Graphikdateien erstellt. Das Programm GNU Octave dient zum Lösen mathematischer Probleme. Zum Visualisieren greift das Programm auf GnuPlot zurück. Das Programm Scilab kann mathematische Probleme lösen und auch graphisch darstellen. Maxima ist ein Computer-Algebra-System und kann Probleme analytisch (d. h. formelmäßig) lösen. Dieser Text stellt die vier Programme vor. Dabei wird GnuPlot relativ ausführlich behandelt, für GNU Octave, Scilab und Maxima wird eine Einführung anhand von Beispielen gegeben, die Anfängern erste Schritte ermöglicht. 5

1 Übersicht 6

2 GnuPlot 2.1 Installation 2.1.1 Installation unter Linux Die gängigen Linux-Distributionen bieten die Möglichkeit, Gnuplot-Pakete über den Package-Manager zu installieren. Mit 1 yum l i s t g rep g n u p l o t bekommen Sie die Pakete angezeigt, die mit GnuPlot zu tun haben. Mit 1 yum i n s t a l l... installieren Sie die Pakete (geben Sie die Paketnamen an). 2.1.2 Installation unter Unix/Linux aus den Quellen Voraussetzungen Es wird ein C-Compiler benötigt. Quellen downloaden Die Quellen für GnuPlot finden Sie unter http://sourceforge.net/projects/gnuplot. Software erstellen und installieren Nach Download und Entpacken gehen Sie in das beim Entpacken entstandene Verzeichnis und starten 1. / c o n f i g u r e 2 make 3 make i n s t a l l 7

2 GnuPlot Pfade setzen Wird das configure-script ohne weitere Optionen aufgerufen, erfolgt bei make install die Installation in das Verzeichnis /usr/local. Stellen Sie sicher, dass die Umgebungsvariable PATH (Bourne-Shell, bash und Derivate) bzw. path (C-Shell, tcsh und Derivate) das Verzeichnis /usr/local/bin mit aufführt. Der Suchpfad für shared libraries (*.so-dateien) sollte das Verzeichnis /usr/local/lib enthalten. Die Einstellung dieses Suchpfades ist systemabhängig. Auf manchen Systemen (z.b. Solaris) reicht es, das Verzeichnis in die Umgebungsvariable LD_LIBRARY_PATH aufzunehmen. Auf anderen Systemen (z.b. Linux) muss das Verzeichnis in die Datei /etc/ld.so.conf bzw. eine Datei in /etc/ld.so.conf.d aufgenommen werden und mit dem Kommando ldconfig der Cache für die Bibliothekssuche neu aufgebaut werden. Die Umgebungsvariable MANPATH, die die Verzeichnisse mit Online-Hilfetexten enthält, sollte /usr/local/man enthalten. 2.1.3 Installation unter Windows Im Downloadbereich von http://sourceforge.net/projects/gnuplot finden Sie eine setup.exe-datei für Windows. Nach dem Download führen Sie diese *.exe- Datei aus. Anschließend muss der Pfad gesetzt werden, so dass wgnuplot.exe gefunden wird. Dazu gehen Sie in der Systemsteuerung auf System. Unter Erweitert finden Sie einen Button Umgebungsvariablen. In der Liste Systemvariablen doppelklicken Sie PATH und hängen an den bereits enthaltenen Wert das Verzeichnis C:\Programme\GnuPlot\bin an durch Semikolon vom bisherigen Wert abgetrennt. Falls Sie das Programm nicht unter C:\Programme\GnuPlot installiert haben, müssen Sie diesen Teil des Pfades entsprechend korrigieren. 8

2.2 GnuPlot starten 2.2 GnuPlot starten 2.2.1 GnuPlot interaktiv benutzen GnuPlot interaktiv unter Unix/Linux nutzen Durch Eingabe von 1 g n u p l o t wird das Programm gestartet. Im aktuellen Terminal erscheint das GnuPlot-Prompt, das Sie zur Eingabe von GnuPlot-Kommandos auffordert. Mit derartigen Kommandos legen Sie fest, was wie geplottet wird. Um das Programm zu verlassen, geben Sie das Kommando 1 q u i t ein. GnuPlot interaktiv unter Windows nutzen Unter Windows haben Sie mehrere Möglichkeiten, GnuPlot zu starten: In einer Eingabeaufforderung geben Sie 1 wgnuplot ein (bzw. wgnuplot.exe ). Im Windows-Explorer gehen Sie in das Verzeichnis C:\Programme\GnuPlot\bin und doppelklicken die Datei wgnuplot.exe. Sie legen sich einen Startmenü-Eintrag für wgnuplot.exe an und benutzen diesen. Es öffnet sich ein Fenster gnuplot, in dem ein Prompt-Zeichen angezeigt wird. Hier können Sie Kommandos zum Plotten eingeben. Nach Abschluss Ihrer Arbeit geben Sie entweder das Kommando 1 q u i t ein um das Programm zu verlassen oder Sie benutzen den Menü-Eintrag File Exit. 9

2 GnuPlot 2.2.2 Eine Datei verarbeiten Eine Datei unter Unix/Linux verarbeiten Verwenden Sie gnuplot Dateiname um die angegebene Datei die GnuPlot-Kommandos enthält zu verarbeiten, z.b. 1 g n u p l o t m y f i l e. gp Die Kommandos aus dieser Datei werden ausgeführt, wenn die Datei komplett eingelesen und verarbeitet wurde beendet sich das Programm bei Erreichen des Dateiendes. Eine Datei unter Windows verarbeiten Geben Sie wgnuplot Dateiname ein, um eine Datei mit GnuPlot-Kommandos zu verarbeiten. 10

2.3 Zahlen und Winkel 2.3 Zahlen und Winkel 2.3.1 Zahlendarstellung GnuPlot arbeitet mit Integerzahlen (ganzzahlige Werte), Gleitkommazahlen und komplexen Zahlen. Der Dezimaltrenner für Gleitkommazahlen ist der Punkt. Die Multiplikation mit Zehnerpotenzen wird mittels eines e beschrieben, dem die Zehnerpotenz folgt, z.b.: 1.23e-6 für 1,23 10 6 oder 4.56e3 für 4,56 10 3. Sollen Gleitkommazahlen verwendet werden, die vom Wert her ein Integerwert sind, wird der Dezimalpunkt mitgeschrieben. Da Zahlenangaben wie 4. etwas gewöhnungsbedürftig sind, sollte man hier ruhig 4.0 schreiben. Wird der Dezimalpunkt vergessen, kann dies die Rechenergebnisse enorm verfälschen, da dann u.u. die Rechnungen in Integerarithmetik vorgenommen werden. Als Beispiel mag man die Kommandos 1 p r i n t 5 / 2 2 p r i n t 5. 0 / 2. 0 betrachten. Das erste Beispiel bewirkt die Ausgabe 2. Da zwei Integerzahlen verknüpft wurden, rechnet das Programm in Integerarithmetik. Im zweiten Beispiel sind die Zahlen als Gleitkommazahlen angegeben, daher wird auch in Gleitkommaarithmetik gerechnet. Komplexe Zahlen werden mit geschweiften Klammern ausgedrückt, z.b. kann die Zahl 3 + 4i als {3.0,4.0} angegeben werden. 11

2 GnuPlot 2.3.2 Winkeldarstellung Winkel können entweder in Radiant (Standard) oder in Grad angegeben werden. Zur Umstellung werden die Kommandos 1 s e t a n g l e s r a d i a n s (zur Umstellung in Radiant) bzw. 1 s e t a n g l e s d e g r e e s (zur Umstellung auf Grad) benutzt. Alle auf diese Kommandos folgenden Winkeleingaben werden als Radiant- bzw. Gradwerte betrachtet und Rechenergebnisse entsprechend in Radiant- oder Gradwerten ausgegeben. Dies betrifft insbesondere die Funktionen sin(x), cos(x) und tan(x) sowie die Ausgabe von asin(x), acos(x), atan(x), atan2(x) und arg(x). Werte von inversen hyperbolischen Funktionen mit komplexen Argumenten werden in Radiant ausgedrückt. Werden derartige Berechnungen vorgenommen, sollten aus Konsistenzgründen auch die Eingaben in Radiant erfolgen. Wird mit Polarkoordinaten geplottet, sollte 1 s e t a n g l e s d e g r e e s vor 1 s e t p o l a r angegeben werden, falls benötigt. In diesem Fall wird der Bereich für die unabhängige Variable automatisch mit auf [0:360] gesetzt. 12

2.5 Selbstdefinierte Funktionen in GnuPlot 2.5 Selbstdefinierte Funktionen in GnuPlot In GnuPlot ist es möglich, eigene Funktionen zu definieren. Im Beispiel wird eine Funktion dargestellt, die den Gesamtwiderstand einer Parallelschaltung aus zwei Widerständen berechnet. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) Wird die Funktion verwendet, z.b. als 1 r p a r ( 5. 0, 1 0. 0 ) so werden in der o.a. Berechnungsvorschrift jedes ra durch das erste Argument im Funktionsaufruf ( 5.0 ) und jedes rb entsprechend durch das zweite Argument im Funktionsaufruf ( 10.0 ) ersetzt. 13

2 GnuPlot 50 0 rpar(10.0,x) -50-100 -150-200 -250-300 -350-400 -450-500 -10-5 0 5 10 2.6 2D-Plots 2.6.1 xy-plots Abbildung 2.1: Erster Plot Ein 2D-Plot (x-y-plot) wird mit plot Funktion Optionen bewirkt. Die unabhängige Variable x wird dabei auf der x-achse dargestellt, der Funktionswert auf der y-achse. Im Beispiel wird eine Funktion geplottet, die den Gesamtwiderstand für eine Parallelschaltung zweier Widerstände berechnet. Einer der Widerstände sei vorgegeben als R y = 10Ω, der andere Widerstand R x sei variabel. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 p l o t r p a r ( 1 0. 0, x ) 14

2.6 2D-Plots 5 rpar(10.0,x) 4 3 2 1 0 0 5 10 15 20 Abbildung 2.2: Eingrenzungen für x- und y-bereich 2.6.2 Einstellungen für 2D-Plots Druckbereich eingrenzen Der Druckbereich kann sowohl in x-richtung als auch in y-richtung mit den Kommandos set xrange [Startwert:Endwert] set yrange [Startwert:Endwert] eingegrenzt werden. Im Beispiel wird der Bereich eingegrenzt auf 0... 20 für x und 0... 5 für y. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 3 s e t y r a n g e [ 0. 0 : 5. 0 ] 4 p l o t r p a r ( 1 0. 0, x ) Werden keine Vorgaben gemacht, plottet GnuPlot im Bereich 10 x 10 und ermittelt den y-bereich aus den Funktionswerten. Verwenden Sie das Kommando 1 h e l p s e t x r a n g e für ausführlichere Informationen. 15

2 GnuPlot 7 6 rpar(10.0,x) Gesamtwiderstand 5 4 3 2 1 0 0 5 10 15 20 Parallelwiderstand Abbildung 2.3: Beschriftungen für x- und y-achse Achsen beschriften Die Achsenbeschriftungen für x- und y-achse können mit set xlabel Text-Label set ylabel Text-Label festgelegt werden. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 3 s e t x l a b e l " P a r a l l e l w i d e r s t a n d " 4 s e t y l a b e l " G e s a m t w i d e r s t a n d " 5 p l o t r p a r ( 1 0. 0, x ) Verwenden Sie das Kommando 1 h e l p s e t x l a b e l für ausführlichere Informationen. 16

2.6 2D-Plots 7 6 Gesamtwiderstand 5 4 3 2 1 0 0 5 10 15 20 Parallelwiderstand Abbildung 2.4: Kurvenbeschriftung deaktiviert Kurvenbeschriftung deaktivieren Die Kurvenbeschriftung kann für eine Kurve deaktiviert werden, indem der plot - Anweisung die Option notitle hinzugefügt wird. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 3 s e t x l a b e l " P a r a l l e l w i d e r s t a n d " 4 s e t y l a b e l " G e s a m t w i d e r s t a n d " 5 p l o t r p a r ( 1 0. 0, x ) n o t i t l e Verwenden Sie das Kommando 1 h e l p p l o t für ausführlichere Informationen. 17

2 GnuPlot 7 6 R Gesamtwiderstand 5 4 3 2 1 0 0 5 10 15 20 Parallelwiderstand Abbildung 2.5: Kurve mit Beschriftung Kurvenbeschriftung festlegen Die Kurvenbeschriftung für eine Kurve kann festgelegt werden, indem der plot - Anweisung die Option title Beschriftungstext hinzugefügt wird. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 3 s e t x l a b e l " P a r a l l e l w i d e r s t a n d " 4 s e t y l a b e l " G e s a m t w i d e r s t a n d " 5 p l o t r p a r ( 1 0. 0, x ) t i t l e "R" Verwenden Sie das Kommando 1 h e l p p l o t für ausführlichere Informationen. 18

2.6 2D-Plots 7 6 R Gesamtwiderstand 5 4 3 2 1 0 0 5 10 15 20 Parallelwiderstand Abbildung 2.6: Anderer Platz für Kurvenbeschriftung Kurvenbeschriftung platzieren Wenn die Kurvenbeschrift (Legende) ungünstig liegt und Teile der Kurve verdeckt, gibt es zwei Möglichkeiten zur Verbesserung: Änderung des y-bereiches oder Umplatzierung der Kurvenbeschriftung. Die Position der Kurvenbeschriftung wird mit set key x-position y-position festgelegt. Für die x-position kann left bzw right vorgegeben werden, für die y-position top bzw. bottom 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 3 s e t x l a b e l " P a r a l l e l w i d e r s t a n d " 4 s e t y l a b e l " G e s a m t w i d e r s t a n d " 5 s e t key l e f t t o p 6 p l o t r p a r ( 1 0. 0, x ) t i t l e "R" Verwenden Sie das Kommando 1 h e l p s e t key für ausführlichere Informationen. 19

2 GnuPlot 7 6 Gesamtwiderstand 5 4 3 2 1 0 0 5 10 15 20 Parallelwiderstand Abbildung 2.7: Gitter Gitter hinterlegen Mit set grid show grid wird ein Gitter mit Standardeinstellungen eingerichtet und gezeichnet. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 3 s e t x l a b e l " P a r a l l e l w i d e r s t a n d " 4 s e t y l a b e l " G e s a m t w i d e r s t a n d " 5 s e t g r i d 6 show g r i d 7 p l o t r p a r ( 1 0. 0, x ) n o t i t l e Das Kommando 1 h e l p s e t g r i d liefert weitere Informationen zur Einrichtung des Gitters (u.a. Linientyp, Farbe... ). 20

2.6 2D-Plots 8 Gesamtwiderstand 6 4 2 0 0 2.5 5 7.5 10 12.5 15 17.5 20 Parallelwiderstand Abbildung 2.8: Manuell eingerichtete Gitterabstände Gitterabstände manuell festlegen Die Abstände zwischen den Gitterlinien können mit set xtics x-abstände set ytics y-abstände vorgegeben werden. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 3 s e t x l a b e l " P a r a l l e l w i d e r s t a n d " 4 s e t y l a b e l " G e s a m t w i d e r s t a n d " 5 s e t g r i d 6 show g r i d 7 s e t x t i c s 2. 5 8 s e t y t i c s 2. 0 9 p l o t r p a r ( 1 0. 0, x ) n o t i t l e Verwenden Sie das Kommando 1 h e l p s e t g r i d für ausführlichere Informationen. 21

2 GnuPlot 7 6 R Geringerer Anstieg Gesamtwiderstand 5 4 3 2 1 Starker Anstieg 0 0 5 10 15 20 Parallelwiderstand Abbildung 2.9: Zusätzliche Text-Labels Zusätzliche Text-Labels einfügen Text-Labels können mit set label [Tag-Nr.] Text-Label Optionen eingefügt werden. Die Optionen geben u.a. die Position des Labels sowie die Ausrichtung an. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 3 s e t x l a b e l " P a r a l l e l w i d e r s t a n d " 4 s e t y l a b e l " G e s a m t w i d e r s t a n d " 5 s e t key l e f t t o p 6 s e t l a b e l " S t a r k e r A n s t i e g " a t 2. 0, 1. 0 7 s e t l a b e l " G e r i n g e r e r A n s t i e g " a t 1 5. 0, 6. 5 r i g h t 8 p l o t r p a r ( 1 0. 0, x ) t i t l e "R" Verwenden Sie das Kommando 1 h e l p s e t l a b e l für ausführlichere Informationen. 22

2.6 2D-Plots 7 6 R Geringerer Anstieg Gesamtwiderstand 5 4 3 2 1 Starker Anstieg 0 0 5 10 15 20 Parallelwiderstand Abbildung 2.10: Linientyp und Liniendicke geändert Verfügbare Linien- und Füllarten anzeigen Mit 1 t e s t t e r m i n a l ; wird Ihnen angezeigt, welche Linientypen, Füllmuster, Liniendicken... benutzt werden können, die Muster sind jeweils mit der zugehörigen Nummer versehen, die in den Plot-Kommandos angegeben wird. Der Linientyp (lt) bestimmt Farbe und Art der Linie (durchgezogen, gestrichelt... ), die Liniendicke (lw). 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 3 s e t x l a b e l " P a r a l l e l w i d e r s t a n d " 4 s e t y l a b e l " G e s a m t w i d e r s t a n d " 5 s e t key l e f t t o p 6 s e t l a b e l " S t a r k e r A n s t i e g " a t 2. 0, 1. 0 7 s e t l a b e l " G e r i n g e r e r A n s t i e g " a t 1 5. 0, 6. 5 r i g h t 8 p l o t r p a r ( 1 0. 0, x ) t i t l e "R" with l i n e s l t 4 lw 2 Verwenden Sie das Kommando 1 h e l p with für ausführlichere Informationen. 23

2 GnuPlot 30 25 parallel in Reihe Gesamtwiderstand 20 15 10 5 0 0 5 10 15 20 Testwiderstand Abbildung 2.11: Mehrere Kurven Mehrere Kurven in einem Diagramm Sollen mehrere Kurven in ein Diagramm geplottet werden, so werden die entsprechenden Funktionen in einer plot -Anweisung durch Komma getrennt angegeben. Falls keine Linientypen... angegeben sind, wählt GnuPlot selbständig unterschiedliche Linientypen für die verschiedenen Kurven. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 r s e r ( ra, rb )= r a + rb 3 s e t x range [ 0. 0 : 2 0. 0 ] 4 s e t x l a b e l " T e s t w i d e r s t a n d " 5 s e t y l a b e l " G e s a m t w i d e r s t a n d " 6 s e t key l e f t t o p 7 p l o t r p a r ( 1 0. 0, x ) t i t l e " p a r a l l e l ", r s e r ( 1 0. 0, x ) t i t l e " i n Reihe " 24

2.6 2D-Plots Gesamtwiderstand R 7 6 5 4 3 2 1 R P 0 0 5 10 15 20 0 Testwiderstand 0.001 0.0009 0.0008 0.0007 0.0006 0.0005 0.0004 0.0003 0.0002 0.0001 Gesamtleistung P Abbildung 2.12: Unterschiedliche Koordinatensysteme Verwendung mehrerer Koordinatensysteme Sollen zwei Plots mit stark unterschiedlichen Werten gezeichnet werden, kann eine zweite y-achse (bzw. auch eine zweite x-achse) verwendet werden. Im Beispiel wird zusätzlich noch die Leistung dargestellt, wenn in den Gesamtwiderstand ein Strom von 10 ma eingeprägt wird. P = R ges I 2 = R a R b R a + R b I 2 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 pwr ( ra, rb, i )= r p a r ( ra, rb ) * ( i **2) 3 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 4 s e t x l a b e l " T e s t w i d e r s t a n d " 5 s e t y l a b e l " G e s a m t w i d e r s t a n d R" 6 s e t y 2 l a b e l " G e s a m t l e i s t u n g P" 7 s e t y2range [ 0. 0 : 0. 0 0 1 ] 8 s e t y 2 t i c s 0.0001 9 s e t key l e f t t o p 10 p l o t r p a r ( 1 0. 0, x ) t i t l e "R", \ 11 pwr ( 1 0. 0, x, 1 0. 0 e 3) t i t l e "P" axes x1y2 Im Beispiel ist zu sehen, wie eine überlange Zeile umgebrochen wird. Hierzu wird dem Zeilenende (Newline) ein Backslash vorangestellt, dies bedeutet, dass das Kommando in der Folgezeile fortgesetzt wird. Die Einrückung in der Folgezeile ist nicht unbedingt erforderlich, erhöht aber die Übersichtlichkeit im Quelltext. 25

2 GnuPlot 7 6 R P 0.0014 0.0012 Gesamtwiderstand R 5 4 3 2 1 0.001 0.0008 0.0006 0.0004 0.0002 Gesamtleistung P 0 0 5 10 15 20 0 Testwiderstand Abbildung 2.13: Verbesserungen für die Skalen Da auf der rechten Seite die Skalenstriche für die erste y-achse ebenfalls gezeichnet werden, kann die Darstellung unübersichtlich werden. Dem kann vorgebeugt werden, indem man in beiden Skalen für eine gleiche Anzahl Teilstriche sorgt (Abb. 2.13). Im Beispiel wird für die linke y-achse ein Bereich 0...7 vorgegeben, bei einer Teilschrittweite von 1.0 erhält man 7 Teilschritte. Die rechte y-achse deckt den Bereich 0.0... 0.0014 ab. Bei einer Teilschrittweite von 0.0002 erhält man ebenfalls 7 Teilschritte. 1 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 2 pwr ( ra, rb, i )= r p a r ( ra, rb ) * ( i **2) 3 s e t x range [ 0. 0 : 2 0. 0 ] 4 s e t x l a b e l " T e s t w i d e r s t a n d " 5 s e t y range [ 0 : 7. 0 ] 6 s e t y t i c s 1. 0 7 s e t y l a b e l " G e s a m t w i d e r s t a n d R" 8 s e t y 2 l a b e l " G e s a m t l e i s t u n g P" 9 s e t y2range [ 0. 0 : 0. 0 0 1 4 ] 10 s e t y 2 t i c s 0.0002 11 s e t key l e f t t o p 12 p l o t r p a r ( 1 0. 0, x ) t i t l e "R", \ 13 pwr ( 1 0. 0, x, 1 0. 0 e 3) t i t l e "P" axes x1y2 Für alle benutzen Achsen sollten sowohl der Wertebereich als auch die Skalenteilung vorgegeben werden. Mit der Option axes Achsen kann für jeden Plot separat festgelegt werden, welche Achsen zu verwenden sind ( x1y1, x1y2, x2y1 oder x2y2 ). 26

2.6 2D-Plots 0-20 -40-60 -80 Übertragungskennlinie -100 0.01 0.1 1 10 100 Abbildung 2.14: Beispiel für logarithmische Skalenteilung Logarithmische Skalenteilung Mit set logscale Achsen [Basis] kann für die angegebenen Achsen eine logarithmische Skalenteilung eingestellt werden. Als Achsen können x, y, z oder cb bzw. x2 oder y2 angegeben werden. Das optionale Argument Basis gibt die Basis des Logarithmus an, als Standardwert wird 10 verwendet. Der Wertebereich für die entsprechende Achse darf nur positive Werte beinhalten, da ansonsten der Logarithmus nicht definiert ist. Im Beispiel wird die Tiefpass-Übertragungsfunktion betragsmäßig dargestellt. 1 f ( x ) = 1. 0 / ( 1. 0 + { 0. 0, 1. 0 } * x ) 2 s e t x r a n g e [ 0. 0 1 : 1 0 0. 0 ] 3 s e t y r a n g e [ 1 0 0. 0 : 0. 0 ] 4 s e t l o g s c a l e x 5 s e t key l e f t bottom G( f ) = 1 1 + j f f G 6 p l o t 20* l o g ( abs ( f ( x ) ) ) t i t l e " Ü b e r t r a g u n g s k e n n l i n i e " Verwenden Sie das Kommando 1 h e l p s e t l o g s c a l e für ausführlichere Informationen. 27

2 GnuPlot Diese Daten werden in eine Datei gosp0015.dat geschrieben: 1 1. 0 8 0.000227 2 2. 1 2 0.000455 3 3. 1 2 0.000664 4 4. 1 3 0.000907 5 5. 1 9 0.001121 6 6. 5 2 0.001337 7 7. 2 7 0.001544 8 8. 0 9 0.001857 9 9. 7 8 0.002104 10 10.86 0.002229 28

2.6 2D-Plots 0.002 Kennlinie Strom 0.0015 0.001 0.0005 0 0 2 4 6 8 10 Spannung Abbildung 2.15: Messwerte-Plot Mit 1 s e t x r a n g e [ 0. 0 : 1 1. 0 ] 2 s e t y r a n g e [ 0. 0 : 0. 0 0 2 4 ] 3 s e t x l a b e l " Spannung " 4 s e t y l a b e l " Strom " 5 s e t key l e f t t o p 6 p l o t gosp0015. dat t i t l e " K e n n l i n i e " werden die Daten geplottet. 29

2 GnuPlot 0.002 Kennlinie Strom 0.0015 0.001 0.0005 0 0 2 4 6 8 10 Spannung Abbildung 2.16: Messkurve Plot als Kurve Mit der zusätzichen Option with lines werden die Punkte durch Kurven (Linienzüge) miteinander verbunden. 1 s e t x range [ 0. 0 : 1 1. 0 ] 2 s e t y range [ 0. 0 : 0. 0 0 2 4 ] 3 s e t x l a b e l " Spannung " 4 s e t y l a b e l " Strom " 5 s e t key l e f t t o p 6 p l o t gosp0015. dat t i t l e " K e n n l i n i e " with l i n e s Verwenden Sie das Kommando 1 h e l p with für ausführlichere Informationen zu den Diagrammarten. 30

2.6 2D-Plots 0.002 Kennlinie Strom 0.0015 0.001 0.0005 0 0 2 4 6 8 10 Spannung Abbildung 2.17: bezier - Polynom n-ten Grades Geglättete Kurven Mit den zusätzlichen Optionen smooth bezier bzw. smooth csplines wird die Messkurve geglättet. Die Glättung erfolgt entweder durch ein Polynom n-ten Grades (sbezier) oder durch mehrere Polynomsegmente dritten Grades (csplines). 1 s e t x r a n g e [ 0. 0 : 1 1. 0 ] 2 s e t y r a n g e [ 0. 0 : 0. 0 0 2 4 ] 3 s e t x l a b e l " Spannung " 4 s e t y l a b e l " Strom " 5 s e t key l e f t t o p 6 p l o t gosp0015. dat t i t l e " K e n n l i n i e " with l i n e s smooth s b e z i e r 31

2 GnuPlot 0.002 Kennlinie Strom 0.0015 0.001 0.0005 0 0 2 4 6 8 10 Spannung Abbildung 2.18: csplines - Polynomstücken dritten Grades 1 s e t x r a n g e [ 0. 0 : 1 1. 0 ] 2 s e t y r a n g e [ 0. 0 : 0. 0 0 2 4 ] 3 s e t x l a b e l " Spannung " 4 s e t y l a b e l " Strom " 5 s e t key l e f t t o p 6 p l o t gosp0015. dat t i t l e " K e n n l i n i e " with l i n e s smooth c s p l i n e s Verwenden Sie das Kommando 1 h e l p smooth für ausführlichere Informationen zur Kurvenglättung. Abb. 2.21 auf Seite 38 zeigt die Auswirkung verschiedener Glättungsverfahren auf dieselben Datensätze. Zu sehen ist, dass mit sbezier die geplottete Kurve wesentlich glatter wird als mit csplines, aber nicht mehr alle Messpunkte durchlaufen werden (Bei der Interpolation wird die Summe der quadrierten Abständer zwischen den Punkten und der Kurve minimiert). 32

2.6 2D-Plots 4900 4800 Widerstand 4700 4600 4500 4400 4300 0 2 4 6 8 10 Spannung Abbildung 2.19: Berechnung aus den Messwerten Berechnung aus den Messwerten Die Messwerte können nicht nur als Werte ausgeplottet werden, es können auch Berechnungen mit den Messwerten vorgenommen werden bevor geplottet wird. Die using Format -Option bestimmt, welche Berechnungsvorschrift jeweils zur Bildung der x- und y-werte verwendet wird. Das Format besteht aus x-auswahl und y-auswahl, getrennt durch einen Doppelpunkt. Sowohl x- als auch y-auswahl können auf zwei Wegen angegeben werden: Eine einzelne Zahl. Diese Zahl gibt die Spaltennummer an (der wievielte Wert eines Datensatzes soll herausgegriffen und verwendet werden). Ein mathematischer Ausdruck in Klammern. Dieser Ausdruck kann $1, $2... enthalten, anstelle dieser Platzhalter wird jeweils der erste, zweite... Wert des Datensatzes eingesetzt. Um im Beispiel den jeweiligen Widerstandswert in Abhängigkeit von der jeweils eingestellten Spannung zu zeigen, muss für die x-richtung die Spannung (erster Wert im Datensatz) und für die y-richtung der Quotient aus dem jeweils ersten und zweiten Wert eines jeden Datensatzes verwendet werden: 1 s e t x r a n g e [ 0. 0 : 1 1. 0 ] 2 s e t x l a b e l " Spannung " 3 s e t y l a b e l " W i d e r s t a n d " 4 s e t key l e f t t o p 5 p l o t gosp0015. dat u s i n g 1 : ( $1 / $2 ) n o t i t l e \ 6 with l i n e s smooth s b e z i e r 33

2 GnuPlot Verwenden Sie das Kommando 1 h e l p u s i n g für ausführlichere Informationen über die using -Option. 34

Messwerte in GnuPlot-Datei 2.6 2D-Plots Die Messwerte können auch gleich mit in die GnuPlot-Datei geschrieben werden. Anstelle des Dateinamens steht dann ein -. Die Datensätze folgen unmittelbar auf die plot-anweisung. Ein einzelnes e in einer Zeile signalisiert das Ende der Datensätze. 1 s e t x r a n g e [ 0. 0 : 1 1. 0 ] 2 s e t x l a b e l " Spannung " 3 s e t y l a b e l " W i d e r s t a n d " 4 s e t key l e f t t o p 5 p l o t u s i n g 1 : ( $1 / $2 ) n o t i t l e with l i n e s smooth s b e z i e r 6 1. 0 8 0.000227 7 2. 1 2 0.000455 8 3. 1 2 0.000664 9 4. 1 3 0.000907 10 5. 1 9 0.001121 11 6. 5 2 0.001337 12 7. 2 7 0.001544 13 8. 0 9 0.001857 14 9. 7 8 0.002104 15 10.86 0.002229 16 e 35

2 GnuPlot 5000 4900 4800 Widerstand 4700 4600 4500 4400 4300 0 2 4 6 8 10 Spannung Abbildung 2.20: Messreihen zweier Kurven in einem Diagramm Sollen mehrere Kurven in ein Diagramm gezeichnet werden, so werden die Datenreihen hintereinander weg in der Reihenfolge in die Datei geschrieben, in der die entsprechenden Dateinamen - in der Plot-Anweisung erscheinen. Jede Datenreihe wird mit einem e abgeschlossen. Im nachfolgenden Beispiel werden die Kurven aus zwei Messreihen in einem Diagramm geplottet. 36

2.6 2D-Plots 1 s e t x r a n g e [ 0. 0 : 1 1. 0 ] 2 s e t x l a b e l " Spannung " 3 s e t y l a b e l " W i d e r s t a n d " 4 s e t key l e f t t o p 5 p l o t u s i n g 1 : ( $1 / $2 ) n o t i t l e with l i n e s smooth s b e z i e r, \ 6 u s i n g 1 : ( $1 / $2 ) n o t i t l e with l i n e s smoot b e z i e r 7 1. 0 8 0.000227 8 2. 1 2 0.000455 9 3. 1 2 0.000664 10 4. 1 3 0.000907 11 5. 1 9 0.001121 12 6. 5 2 0.001337 13 7. 2 7 0.001544 14 8. 0 9 0.001857 15 9. 7 8 0.002104 16 10.86 0.002229 17 e 18 1. 0 1 0.000224 19 2. 1 1 0.000434 20 3. 2 7 0.000685 21 4. 1 1 0.000869 22 5. 0 9 0.001169 23 6. 4 1 0.001288 24 7. 2 1 0.001519 25 8. 2 1 0.001722 26 9. 6 0 0.002003 27 10.14 0.002172 28 e 37

2 GnuPlot Widerstand 2 1.8 1.6 1.4 1.2 1 dots bezier csplines acsplines 0.8 0 2 4 6 8 10 12 14 Abbildung 2.21: Verschiedene Glättungsverfahren Abb. 2.21 zeigt Kurven für identische Datensätze mit verschiedenen Glättungsverfahren. 1 s e t key l e f t t o p 2 p l o t t i t l e " d o t s ", \ 3 t i t l e " b e z i e r " with l i n e s smooth b e z i e r, \ 4 t i t l e " c s p l i n e s " with l i n e s smooth c s p l i n e s 5 1. 0 1. 0 6 2. 0 1. 0 7 3. 0 1. 0 8 4. 0 1. 0 9 5. 0 1. 0 10 6. 0 1. 0 11 7. 0 2. 0 12 8. 0 1. 0 13 9. 0 1. 0 14 1 0. 0 1. 0 15 1 1. 0 1. 0 16 1 2. 0 1. 0 17 1 3. 0 1. 0 18 e 19 1. 0 1. 0 20 2. 0 1. 0 21 3. 0 1. 0 22 4. 0 1. 0 23 5. 0 1. 0 24 6. 0 1. 0 25 7. 0 2. 0 38

2.6 2D-Plots 26 8. 0 1. 0 27 9. 0 1. 0 28 1 0. 0 1. 0 29 1 1. 0 1. 0 30 1 2. 0 1. 0 31 1 3. 0 1. 0 32 e 33 1. 0 1. 0 34 2. 0 1. 0 35 3. 0 1. 0 36 4. 0 1. 0 37 5. 0 1. 0 38 6. 0 1. 0 39 7. 0 2. 0 40 8. 0 1. 0 41 9. 0 1. 0 42 1 0. 0 1. 0 43 1 1. 0 1. 0 44 1 2. 0 1. 0 45 1 3. 0 1. 0 46 e 39

2 GnuPlot 1.5 Hysteresekurve 1 0.5 B 0-0.5-1 -1.5-20000 -15000-10000 -5000 0 5000 10000 15000 20000 H Abbildung 2.22: Hysteresekurve als Beispiel für zusammengesetzte Kurve 2.6.4 Zusammengesetzte Kurven Setzt sich eine Kurve aus verschiedenen Teilstücken zusammen (z.b. Hysteresekurven), verwendet GnuPlot für jedes Segment einen anderen Linienstil. Soll dies verhindert werden, muss für alle Segmente ein Linienstil vorgegeben werden. 40

2.6 2D-Plots 1 s e t x l a b e l "H" 2 s e t y l a b e l "B" 3 s e t x r a n g e [ 20000:20000] 4 s e t y r a n g e [ 1. 6 : 1. 6 ] 5 s e t key l e f t t o p 6 p l o t smooth b e z i e r t i t l e " H y s t e r e s e k u r v e " l t 0 with l i n e s, \ 7 smooth b e z i e r n o t i t l e l t 0 with l i n e s 8 16000 1.5 9 12000 1.5 10 8000 1.4 11 4000 1.25 12 0 1.05 13 2000 0.85 14 4000 0.4 15 6000 0. 5 16 8000 1. 0 5 17 10000 1. 2 5 18 12000 1. 3 5 19 16000 1. 5 20 e 21 16000 1.5 22 12000 1.4 23 10000 1.35 24 8000 1.2 25 6000 0.4 26 4000 0. 6 27 2000 0. 9 28 0 1. 1 29 4000 1. 2 5 30 8000 1. 3 0 31 12000 1. 3 5 32 16000 1. 5 33 e 41

2 GnuPlot 16 14 Kurve 12 10 8 6 4 2 0 1 2 3 4 5 6 7 8 9 10 2.6.5 Parametrische Plots Abbildung 2.23: Parametrischer Plot Parametrische Plots sind Plots, bei denen ein Parameter t ein vorgegebenes Intervall durchläuft. Dabei kann für jeden t-wert eindeutig ein Punkt P ( x(t),y(t) ) berechnet werden. Mit set parametric wird auf parametrisches Plotten umgeschalten. Das Intervall kann entweder über die Einstellung trange gesetzt oder in der plot- Anweisung angegeben werden. Im Beispiel wird die Kurve k : x = 1 2 t2 t + 2 y = 4 3 t 3 1 t 5 gezeichnet. Wie man sieht, werden x-funktion und y-funktion durch Komma voneinander getrennt angegeben. 1 s e t p a r a m e t r i c 2 s e t t r a n g e [ 1. 0 : 5. 0 ] 3 p l o t 0. 5 * t **2 t + 2, 4. 0 / 3. 0 * s q r t ( t **3) Alternativ wäre auch 1 s e t p a r a m e t r i c 2 p l o t [ 1. 0 : 5. 0 ] 0. 5 * t **2 t + 2, 4. 0 / 3. 0 * s q r t ( t **3) möglich. 42

2.6 2D-Plots a α b Abbildung 2.24: Flächeninhalt eines Parallelogrammes 15 10 3*5*abs(sin(t)) 5 0 5 10 15 8 6 4 2 0 2 4 6 8 Abbildung 2.25: Flächeninhalt in Abhängigkeit vom Winkel 2.6.6 Plots in Polarkoordinaten Plots in Polarkoordinaten können als Sonderform der parametrischen Plots angesehen werden. Auch hier durchläuft ein Parameter t (ein Winkel) ein vorgegebenes Intervall. Für jeden t-wert wird ein Radius berechnet, aus Radius und Winkel werden dann x und y berechnet. Im Beispiel ist ein Parallelogramm mit den Seitenlängen a = 3 b = 5 gegeben. Geplottet werden soll der Flächeninhalt in Abhängigkeit vom Winkel. Dieser berechnet sich nach der Formel 1 s e t p o l a r 2 s e t t r a n g e [ 0 : 2. 0 * p i ] 3 p l o t 3*5* abs ( s i n ( t ) ) n o t i t l e A = a b sinα 43

2 GnuPlot Standardmäßig geht GnuPlot davon aus, dass die Winkelvariable t in Radiant angegeben wird. Dies kann mit 1 s e t a n g l e s d e g r e e s auf Grad umgestellt werden, mit 1 s e t a n g l e s r a d i a n s kann dann wieder auf Radiant zurückgeschalten werden. Die set angles -Anweisung sollte vor set polar geschrieben werden. Hinweis: Die Winkeleinstellung beeinflusst die Funktionen sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(x) und arg(x). Hyperbolische Funktionen werden nicht beeinflusst. Werden Umkehrfunktionen der hyperbolischen Funktionen für komplexe Argumente aufgerufen, muss die Winkeleinstellung auf radians gestellt sein! 44

2.7 3D-Plots 5 4 3 2 1 0 0 2 4 6 8 10 0 2 4 6 8 10 Abbildung 2.26: Funktionsgebirge 2.7 3D-Plots 2.7.1 xyz-plots Funktionen f (x,y) mit zwei unabhängigen Variablen x und y können als Gebirge über der x,y-ebene dargestellt werden. Hierzu wird die splot -Anweisung splot Bereiche f(x,y) Plot-Optionen verwendet, Bereichs-Angaben und Plot-Optionen sind optional. Empfohlen wird, die Bereiche über xrange und yrange einzustellen. Im Beispiel wird der Gesamtwiderstand aus der Parallelschaltung zweier Widerstände dargestellt. R ges = R 1 R 2 R 1 + R 2 1 r p a r ( a, b ) = ( ( a > 0. 0 )? ( ( b > 0. 0 )? ( ( a *b ) / ( a+b ) ) : 0. 0 ) : 0. 0 ) 2 s e t x r a n g e [ 0. 0 : 1 0. 0 ] 3 s e t y r a n g e [ 0. 0 : 1 0. 0 ] 4 s p l o t r p a r ( x, y ) n o t i t l e Verwenden Sie das Kommando 1 h e l p s p l o t für ausführlichere Informationen. 45

2 GnuPlot 5 4 3 2 1 0 0 2 4 6 8 10 0 2 4 6 8 10 Abbildung 2.27: Verdeckte Elemente 2.7.2 Einstellungen für 3D-Plots Versteckte Darstellung Die Option set hidden3d bewirkt, dass Objekte im Hintergrund nicht gezeichnet werden, wenn sie durch weiter vorn befindliche Objekte verdeckt werden. 1 r p a r ( a, b ) = ( ( a > 0. 0 )? ( ( b > 0. 0 )? ( ( a *b ) / ( a+b ) ) : 0. 0 ) : 0. 0 ) 2 s e t x range [ 0. 0 : 1 0. 0 ] 3 s e t y range [ 0. 0 : 1 0. 0 ] 4 s e t hidden3d 5 s p l o t r p a r ( x, y ) n o t i t l e Verwenden Sie das Kommando 1 h e l p s e t hidden3d für ausführlichere Informationen. 46

2.7 3D-Plots 5 4 3 2 1 0 0 2 4 6 8 10 0 2 4 6 8 10 Abbildung 2.28: Höhere Anzahl an Stützstellen Anzahl der Stützstellen Die Anzahl der Stützstellen kann mit set isosamples x-samples y-samples gesetzt werden. Die zweite Angabe ist dabei optional. Zu beachten ist, dass eine höhere Anzahl an Stützstellen eine längere Berechnung erfordert und größere Ausgabedateien erzeugt. Im Beispiel wird die Anzahl der Stützstellen auf 30 für jede Achse erhöht. 1 r p a r ( a, b ) = ( ( a > 0. 0 )? ( ( b > 0. 0 )? ( ( a *b ) / ( a+b ) ) : 0. 0 ) : 0. 0 ) 2 s e t x r a n g e [ 0. 0 : 1 0. 0 ] 3 s e t y r a n g e [ 0. 0 : 1 0. 0 ] 4 s e t hidden3d 5 s e t i s o s a m p l e s 30,30 6 s p l o t r p a r ( x, y ) n o t i t l e Verwenden Sie das Kommando 1 h e l p s e t i s o s a m p l e s für ausführlichere Informationen. 47

2 GnuPlot 5 4 3 2 1 0 0 4 3 2 1 2 4 6 8 10 0 2 4 6 8 10 Abbildung 2.29: Niveaulinien Niveaulinien Zusätzlich zum Funktionsgebirge können mit set contour Ort Niveaulinien eingezeichnet werden. Als Ort, an dem die Linien gezeichnet werden, kann contour (im Funktionsgebirge), base (in der xy-ebene) oder both (beides) angegeben werden. Im Beispiel werden beide Möglichkeiten für Niveaulinien benutzt. mit set cntrparam Parameter können Parameter für die Kontur und die Höhenlinien festgelegt werden. Im Beispiel wird vorgegeben, dass die Kurvenverläufe durch kubische Splines approximiert werden. 1 r p a r ( a, b ) = ( ( a > 0. 0 )? ( ( b > 0. 0 )? ( ( a *b ) / ( a+b ) ) : 0. 0 ) : 0. 0 ) 2 s e t x range [ 0. 0 : 1 0. 0 ] 3 s e t y range [ 0. 0 : 1 0. 0 ] 4 s e t hidden3d 5 s e t i s o s a m p l e s 30,30 6 s e t c o n t o u r b oth 7 s e t c n t r p a r a m c u b i c s p l i n e 8 s e t key l e f t t o p 9 s p l o t r p a r ( x, y ) n o t i t l e Verwenden Sie die Kommandos 1 h e l p s e t c o n t o u r 2 h e l p s e t c n t r p a r a m für ausführlichere Informationen. 48

Blickrichtung 2.7 3D-Plots Die Darstellung dreidimensionaler Objekte auf zweidimensionalen Ausgabegeräten (Bildschirm, Papier) hängt in erheblicher Weise vom Standpunkt bzw. der Blickrichtung des Beobachters ab. Mit set view α,β,s,s z kann die Blickrichtung festgelegt werden. Standardmäßig ist α = 60, β = 30, s = 1 und s z = 1 eingestellt. Die Werte haben folgende Auswirkungen: Zunächst ist die Blickrichtung so festgelegt, dass man von oben auf die x,y- Ebene schaut. Die z-achse kommt also dem Betrachter entgegen. Die Blickrichtung klappt dann um den Winkel α herunter zur x,y-ebene. Die Blickrichtung wird dann um den Winkel β nach rechts geklappt. Der Parameter s gibt die Skalierung für den gesamten Plot vor. Der Parameter s z kann optional benutzt werden, um eine gesonderte Skalierung für die z-achse vorzunehmen. Das Beispiel in Abb. 2.30 auf der nächsten Seite zeigt dieselbe Funktion aus verschiedenen Blickrichtungen betrachtet. Verwenden Sie das Kommando 1 h e l p s e t view für ausführlichere Informationen. 49

2 GnuPlot 5 4 3 2 1 0 0 5 4 3 2 1 0 0 5 4 3 2 1 0 0 5 4 3 2 1 0 2 2 2 4 4 4 6 6 6 8 8 8 10 0 2 10 0 2 10 0 2 4 4 4 30,30,1 6 8 45,30,1 6 8 60,30,1 6 10 10 8 10 100,30,1 0 2 4 6 8 0 2 4 6 8 10 10 5 4 3 0 12 5 4 3 0 12 0 0 5 4 3 2 1 0 0 5 4 3 2 1 0 2 2 2 4 4 6 4 6 6 8 8 10 0 8 10 0 2 10 0 2 2 4 4 6 4 6 60,30,1 6 8 10 60,45,1 8 60,60,1 8 60,100,1 0 2 4 6 8 10 0 2 4 6 8 10 10 10 Abbildung 2.30: Verschiedene Blickpunkte 50

2.7 3D-Plots u, cos(u), sin(u) z 1 0.5 0-0.5-1 0 2 4 6 8 10 12 14 16 18 20-1 -0.5 0 0.5 y x 1 Abbildung 2.31: Schraubenförmige Kurve 2.7.3 Parametrische Plots Für dreidimensionale parametrische Plots heißen die unabhängigen Variablen u und v. Die entsprechenden Wertebereiche werden als urange und vrange festgelegt. Wird nur eine unabhängige Variable benötigt, wird der anderen Variablen ein Wertebereich mit gleichem Anfangs- und Endwert zugewiesen wie im Beispiel: 1 s e t p a r a m e t r i c 2 s e t u r a n g e [ 0 : 6 * p i ] 3 s e t v r a n g e [ 1 : 1 ] 4 s e t x l a b e l " x " 5 s e t y l a b e l " y " 6 s e t z l a b e l " z " 7 s e t y t i c s 1,0.5,1 8 s e t z t i c s 1,0.5,1 9 s p l o t u, cos ( u ), s i n ( u ) Das splot -Kommando erhält als Argumente drei Funktionen zur Berechung von x-, y- und z-wert. 51

2 GnuPlot 3D-Plot z 2 1 0-1 -2-8 -6-4 -2 x 0 2-4 4 6 8 0 4 y Abbildung 2.32: Torus Im Beispiel wird ein Torus dargestellt. Hierzu wird die Kreisfläche à : y = 5 + 2cosv z = 2sinv entlang der kreisförmigen Kurve k : x = 5cosu z = 5sinu rotiert. Es ergibt sich x = (5 + 2cosv)cosu y = (5 + 2cosu)sinu z = 2sinv 1 s e t p a r a m e t r i c 2 s e t x l a b e l " x " 3 s e t y l a b e l " y " 4 s e t z l a b e l " z " 5 A=5 6 B=2 7 s e t u range [ 0 : 2. 0 * p i ] 8 s e t v range [ 0 : 2. 0 * p i ] 9 s e t i s o s a m p l e s 50,50 10 s e t hidden3d 11 s e t y t i c s 8,4,8 12 s e t z t i c s 2,1,2 13 s p l o t (A+B* cos ( v ) ) * cos ( u ), (A+B* cos ( v ) ) * s i n ( u ),B* s i n ( v ) \ 14 t i t l e "3D P l o t " 52

2.8 Terminals 2.8 Terminals - Die Ausgabetreiber 2.8.1 Übersicht über Terminals Im Sprachgebrauch von GnuPlot werden Ausgabegeräte als Terminals bezeichnet. Hierzu zählen sowohl Ausgaben auf dem Bildschirm als auch Ausgaben in Datei. Beim Start von GnuPlot ist voreingestellt, dass Graphiken auf den Bildschirm ausgegeben werden. Tabelle 2.4 führt die Ausgabetreiber auf. Tabelle 2.4: Terminals Name Ausgabe windows Ausgabe in ein Windows-Fenster aifm Datei für Adobe Illustrator 3.0+ cgm *.cgm-datei corel Corel-Draw-Datei dumb Text-Terminal dxf *.dxf-datei (für Import nach AutoCad) emf *.emf-datei (Windows Metafile) fig *.fig-datei (für XFig, jfig und WinFig) gif *.gif-datei 1 hp2623a Ausgabe auf HP2623-Drucker hp2648 Ausabe auf HP2648-Drucker hp500c Ausgabe auf HP DeskJet 500c hpgl *.hpgl-datei (z.b. für HP7575A-Plotter) hpljii Ausgabe auf HP Laserjet II Drucker hppj Ausgabe auf HP PaintJet- und HP3630-Drucker imagen Imagen-Laserdrucker mif *.mif-datei (für Frame Maker) pbm *.pbm-datei (NetPBM) png *.png-datei postscript *.ps-datei (PostScript) qms QMS/QUIC-Laserdrucker svg *.svg-datei (für Batik, Inkscape... ) 1 aus Lizenzgründen erzeugen manche GnuPlot-Versionen PNG-Dateien anstelle von GIF-Dateien 53

2 GnuPlot 54

2.8 Terminals Abbildung 2.33: PNG-Datei 2.8.2 Ausgabedatei erzeugen Um eine Ausgabedatei zu erzeugen, werden zwei Anweisungen benötigt: Mit set term Terminal [Terminal-Optionen] wird ein Terminal festgelegt (damit wird angegeben, was für eine Ausgabedatei erzeugt wird). Optional können weitere Optionen für das Terminal angegeben werden. Mit set output "Dateiname" wird ein Dateiname für die Ausgabe vorgegeben. Im Beispiel wird eine PNG-Datei erzeugt, diese kann z.b. in Webseiten eingebunden werden. 55

2 GnuPlot 1 s e t t e r m i n a l png t r a n s p a r e n t i n t e r l a c e 2 s e t o u t p u t " o u t p u t. png " 3 r p a r ( a, b ) = ( ( a > 0. 0 )? ( ( b > 0. 0 )? ( ( a *b ) / ( a+b ) ) : 0. 0 ) : 0. 0 ) 4 s e t x range [ 0. 0 : 1 0. 0 ] 5 s e t y range [ 0. 0 : 1 0. 0 ] 6 s e t hidden3d 7 s e t i s o s a m p l e s 30,30 8 s e t c o n t o u r b oth 9 s e t c n t r p a r a m c u b i c s p l i n e 10 s e t key l e f t t o p 11 s p l o t r p a r ( x, y ) n o t i t l e Verwenden Sie das Kommando 1 h e l p s e t term png für ausführlichere Informationen zum Setup des PNG-Terminals. Ersetzen Sie ggf. png durch den Terminal-Namen, falls Sie ein anderes Terminal verwenden möchten. 56

2.9 GnuPlot und LATEX 2.9 GnuPlot und L A TEX 2.9.1 GnuPlot oder pst-plot? GnuPlot ist sehr gut dafür geeignet, mathematische Zusammenhänge auf die Schnelle zu visualisieren, um Lösungsansätze zu finden oder Anschauungsmaterialien zu erstellen. Im Bereich der technischen Dokumentationen sollten Diagramme aber entsprechend DIN 461 angefertigt werden. Diese gilt insbesondere für Qualifikationsnachweise im Rahmen einer Ausbildung (z. B. Beleg-, Bachelor- und Diplomarbeiten). Das Paket pst-plot, das Bestandteil des PSTricks-Bundles ist, ermöglicht das Erstellen normgerechter Diagramme für die Einbindung in LATEX-Dokumente. Eine Einführung in pst-plot finden Sie z. B. unter http://www.fh-schmalkalden. de/schmalkaldenmedia/downloads/elektrotechnik/l/edv/pstpl.pdf. 2.9.2 Das MetaPost-Terminal GnuPlot-Ausgaben, die mit LATEX bzw. pdflatex verwendet werden, sollten folgende Anforderungen erfüllen: Es kommen nur Vektorgraphiken in Frage, da diese ohne Qualitätsverluste skalierbar sind. Der Unterschied zwischen der Vektor- und Bitmapgraphiken wird beim Vergleich von Abb. 2.33 auf Seite 55 (Bitmapgraphik) und Abb. 2.29 auf Seite 48 (Vektorgraphik) deutlich, insbesondere beim Hineinzoomen. Die GnuPlot-Ausgabe muss Nachbearbeitungen zulassen, diese müssen ohne großen Aufwand möglich sein. Daher sollte die GnuPlot-Ausgabe als Text- Datei vorliegen, das Dateiformat sollte unkompliziert sein. Die Datei bzw. eine Datei, die aus der GnuPlot-Ausgabe erzeugt wird muss sowohl mit LATEX als auch mit pdflatex verarbeitet werden können. Diese Anforderungen werden besonders gut durch das MetaPost-Terminal erfüllt. MetaPost-Dateien (*.mp) werden mit dem Programm metapost (bzw. mpost) verarbeitet. Dabei entsteht eine *.0 -Datei. Wird diese zu *.mps umbenannt, kann die *.mps -Datei sowohl mit LATEX als auch mit pdflatex verwendet werden. 57

2 GnuPlot Die MetaPost-Sprache ist wesentlich verständlicher als reines PostScript, z.b. bewirkt 1 b e g i n f i g ( 0 ) 2 p a t h p ; 3 p := ( f u l l c i r c l e s c a l e d 1cm ) s h i f t e d (2cm, 2 cm ) ; 4 f i l l p w i t h c o l o r ( r e d ) ; 5 pickup p e n c i r c l e s c a l e d 1mm; 6 draw p w i t h c o l o r ( b l a c k ) ; 7 e n d f i g ; 8 end. dasselbe wie 1 %!PS Adobe 2.0 2 %%BoundingBox : 0 0 73 73 3 1 0 0 s e t r g b c o l o r 4 newpath 5 70.866 56.693 moveto 6 56.693 56.693 14.173 0 360 a r c 7 c l o s e p a t h 8 f i l l 9 0 s e t g r a y 10 2.8346 s e t l i n e w i d t h 11 70.866 56.693 moveto 12 56.693 56.693 14.173 0 360 a r c 13 c l o s e p a t h 14 s t r o k e 58

2.9.3 MetaPost-Terminal verwenden 2.9 GnuPlot und LATEX Um das MetaPost-Terminal zu verwenden, schreiben Sie in der GnuPlot-Datei die Zeilen set term mp Optionen set output Dateiname Folgende Optionen werden empfohlen, wenn die GnuPlot-Ausgabe mit LATEX weiterverarbeitet werden soll: color für farbige Darstellung. latex legt fest, dass MetaPost LATEX für den Textsatz verwendet. psnfss bewirkt, dass PostScript-Fonts verwendet werden. Das Beispiel entsprechend Abb. 2.2 auf Seite 15 wird damit folgendermaßen abgewandelt, die Ausgabedatei gosp0003.mp wird erzeugt. 1 s e t t e r m i n a l mp c l a t e x p s n f s s 2 s e t o u t p u t " gosp0003. mp" 3 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 4 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 5 s e t y r a n g e [ 0. 0 : 5. 0 ] 6 p l o t r p a r ( 1 0. 0, x ) Verwenden Sie das Kommando 1 h e l p s e t term mp für weitere Informationen zu Optionen des MetaPost-Terminals. 59

2 GnuPlot 2.9.4 MetaPost-Datei konvertieren Verwenden Sie den Befehl mpost -tex=latex Dateiname und geben Sie den Dateinamen dabei ohne Endung an. Im Beispiel 1 mpost t e x = l a t e x gosp0003 wird die Datei gosp0003.mp verarbeitet, es entsteht die Datei gosp0003.0. Diese benennen Sie um zu gosp0003.mps. 60

2.9 GnuPlot und LATEX 5 rpar(10.0,x) 4 3 2 1 0 0 5 10 15 20 Abbildung 2.34: Meine Bildunterschrift 2.9.5 MetaPost-Ausgabe in L A TEX verwenden In der LATEX-Quelle binden Sie gosp0003.mps folgendermaßen ein: 1 \ b e g i n { f i g u r e } 2 { \ c e n t e r i n g 3 \ i n c l u d e g r a p h i c s { gosp0003. mps} 4 \ c a p t i o n { Meine B i l d u n t e r s c h r i f t } 5 \ l a b e l { f i g : i r g e n d e i n r e f e r e n z name} 6 } 7 \ end { f i g u r e } Das Ergebnis dieser Operation sehen Sie in Abb. 2.34. 61

2 GnuPlot 2.9.6 Anpassungen an der MetaPost-Datei Datei umbenennen Sollen Anpassungen an der GnuPlot-Ausgabe vorgenommen werden, muss die GnuPlot-Ausgabedatei vorher umbenannt werden. Andernfalls wird bei einem erneuten Aufruf von GnuPlot die MetaPost-Datei mit unseren Änderungen überschrieben, die Änderungen wären dann verloren. Also benennen wir im Beispiel gosp0003.mp um zu gomp0001.mp, bevor mit den Änderungen begonnen wird. 62

2.9 GnuPlot und LATEX Font-Anpassungen Meist stimmen die von MetaPost gewählten Fonts nicht mit denen überein, die im jeweiligen LATEX-Dokument verwendet werden. Um eine Übereinstimmung zu erreichen, muss die LATEX-Präambel in der MetaPost-Datei an die des Dokumentes angepasst werden. Lautet die Dokumenten-Präambel z.b. 1 \ d o c u m e n t c l a s s [ ngerman, 1 2 pt, a4paper, o r i g l o n g t a b l e ] { s c r b o o k } 2 \ u s e p a c k a g e { ngerman } 3 \ u s e p a c k a g e { i f p d f } 4 \ u s e p a c k a g e [ l a t i n 1 ] { i n p u t e n c } 5 \ u s e p a c k a g e [ T1 ] { f o n t e n c } 6 \ u s e p a c k a g e { textcomp } 7 \ u s e p a c k a g e { mathptmx } 8 \ u s e p a c k a g e [ s c a l e d =. 9 2 ] { h e l v e t } 9 \ u s e p a c k a g e { c o u r i e r } 10 \ u s e p a c k a g e [ i n t l i m i t s ] { amsmath } 11 \ u s e p a c k a g e { t r f s i g n s } 12 \ u s e p a c k a g e { a r r a y } 13 \ u s e p a c k a g e { enumerate } 14 \ u s e p a c k a g e { l o n g t a b l e } 15 \ u s e p a c k a g e { l a t e x s y m } 16 \ u s e p a c k a g e { l i s t i n g s } 17 \ u s e p a c k a g e [ ngerman ] { v a r i o r e f } 18 \ u s e p a c k a g e { makeidx } 19 \ u s e p a c k a g e { c o l o r } 20 \ i f p d f 21 \ u s e p a c k a g e [ a c t i v a t e = normal ] { p d f c p r o t } 22 \ u s e p a c k a g e [ p d f t e x ] { g r a p h i c x } 23 \ u s e p a c k a g e { e p s t o p d f } 24 \ p d f c o m p r e s s l e v e l =9 25 \ u s e p a c k a g e [ 26 p d f t e x, 27 a 4 p a p e r = t r u e, 28 p d f t i t l e ={Some t i t l e }, 29 p d f s u b j e c t ={Some s u b j e c t }, 30 p d f a u t h o r ={My Name}, 31 c o l o r l i n k s = t r u e, 32 bookmarks, 33 bookmarksnumbered, 34 l i n k c o l o r = l i n k g r e e n, 35 pdfpagemode =UseNone, 36 p d f s t a r t v i e w ={XYZ 0 835 1. 2 5 }, 37 ] { h y p e r r e f } 38 \ e l s e 39 \ u s e p a c k a g e [ d v i p s ] { g r a p h i c x } 40 \ D e c l a r e G r a p h i c s R u l e {. png }{ eps } {. bb }{ bmeps #1} 63

2 GnuPlot 41 \ u s e p a c k a g e [ d v i p s ] { h y p e r r e f } 42 \ f i 43 \ d e f i n e c o l o r { l i n k g r e e n }{ rgb } { 0, 0. 5, 0 } 44 \ d e f \ t h e y e a r {2006} 45 \ p a r i n d e n t 0 c m 46 \ a u t h o r {My Name} 47 \ t i t l e {Some t i t l e } 48 \ i n c l u d e { c o v e r } 49 \ renewcommand * { \ s e c t f o n t } { \ b f s e r i e s } 50 \ newcommand { \ i m a g e s c a l e f a c t o r } [ 0 ] { 0. 7 5 } 51 \ makeindex so kann daraus der Teil extrahiert werden, der die Fonts einstellt und sich auf Text- Encoding bezieht. 1 \ d o c u m e n t c l a s s [ ngerman, 1 2 pt, a4paper, o r i g l o n g t a b l e ] { s c r b o o k } 2 \ u s e p a c k a g e { ngerman } 3 \ u s e p a c k a g e [ l a t i n 1 ] { i n p u t e n c } 4 \ u s e p a c k a g e [ T1 ] { f o n t e n c } 5 \ u s e p a c k a g e { textcomp } 6 \ u s e p a c k a g e { mathptmx } 7 \ u s e p a c k a g e [ s c a l e d =. 9 2 ] { h e l v e t } 8 \ u s e p a c k a g e { c o u r i e r } 9 \ u s e p a c k a g e [ i n t l i m i t s ] { amsmath } 10 \ u s e p a c k a g e { t r f s i g n s } 11 \ u s e p a c k a g e { l a t e x s y m } Der Einfachheit halber kann in der MetaPost-Quelle die Dokumentenklasse article verwendet werden, als Präambel ergibt sich somit: 1 \ d o c u m e n t c l a s s [12 p t ] { a r t i c l e } 2 \ u s e p a c k a g e { ngerman } 3 \ u s e p a c k a g e [ l a t i n 1 ] { i n p u t e n c } 4 \ u s e p a c k a g e [ T1 ] { f o n t e n c } 5 \ u s e p a c k a g e { textcomp } 6 \ u s e p a c k a g e { mathptmx } 7 \ u s e p a c k a g e [ s c a l e d =. 9 2 ] { h e l v e t } 8 \ u s e p a c k a g e { c o u r i e r } 9 \ u s e p a c k a g e [ i n t l i m i t s ] { amsmath } 10 \ u s e p a c k a g e { t r f s i g n s } 11 \ u s e p a c k a g e { l a t e x s y m } 64

2.9 GnuPlot und LATEX Der Beginn der MetaPost-Quelle sieht aus wie folgt: 1 %GNUPLOT Metapost o u t p u t : Thu Jun 04 1 8 : 3 4 : 4 8 2009 2 3 4 %% Add \ d o c u m e n t c l a s s and \ b e g i n { dcoument } f o r l a t e x 5 %% NB you s h o u l d s e t t h e e n v i r o n m e n t v a r i a b l e TEX t o t h e name of your 6 %% l a t e x e x e c u t a b l e ( n o r m a l l y l a t e x ) i n o r d e r f o r m e t a p o s t t o work 7 %% or run 8 %% mpost t e x = l a t e x... 9 10 % BEGPRE 11 v e r b a t i m t e x 12 \ d o c u m e n t c l a s s { a r t i c l e } 13 \ u s e p a c k a g e [ l a t i n 1 ] { i n p u t e n c } 14 \ u s e p a c k a g e [ T1 ] { f o n t e n c } 15 \ u s e p a c k a g e { textcomp } 16 \ u s e p a c k a g e { mathptmx } 17 \ u s e p a c k a g e [ s c a l e d =. 9 2 ] { h e l v e t } 18 \ u s e p a c k a g e { c o u r i e r } 19 \ u s e p a c k a g e { l a t e x s y m } 20 \ b e g i n { document } 21 e t e x 22 % ENDPRE Zu erkennen ist, dass die LATEX-Präambel zwischen zwei Zeilen verbatimtex und etex eingeschlossen ist. Diese Konstruktion erlaubt, LATEX-Code anzugeben, der nicht direkt zu einer Ausgabe führt sondern zum Setup genutzt wird. Da derartiger Code an unterschiedlichen Stellen auftreten kann, ist die LATEX-Präambel durch zusätzliche Kommentare % BEGPRE und % ENDPRE markiert. Wird die Präambel durch eine solche ersetzt, die unserem LATEX-Dokument entspricht, führt dies zu einer Darstellung wie in Abb. 2.36 auf Seite 67. Im Wesentlichen werden dieselben Pakete für die Font-Auswahl verwendet, die Schriften sind in beiden Abbildungen gleich. Lediglich die Schriftgröße ist unterschiedlich, in Abb. 2.36 auf Seite 67 wird für die Skalenbeschriftungen und die Legende dieselbe Schriftart und Schriftgröße verwendet wie im umgebenden Text. 1 %GNUPLOT Metapost o u t p u t : S a t Mar 11 1 7 : 2 5 : 1 1 2006 2 3 4 %% Add \ d o c u m e n t c l a s s and \ b e g i n { dcoument } f o r l a t e x 5 %% NB you s h o u l d s e t t h e e n v i r o n m e n t v a r i a b l e TEX t o t h e name of your 6 %% l a t e x e x e c u t a b l e ( n o r m a l l y l a t e x ) i n o r d e r f o r m e t a p o s t t o work 7 %% or run 8 %% mpost t e x = l a t e x... 9 10 % BEGPRE 11 v e r b a t i m t e x 65

2 GnuPlot 12 \ d o c u m e n t c l a s s [12 p t ] { a r t i c l e } 13 \ u s e p a c k a g e { ngerman } 14 \ u s e p a c k a g e [ l a t i n 1 ] { i n p u t e n c } 15 \ u s e p a c k a g e [ T1 ] { f o n t e n c } 16 \ u s e p a c k a g e { textcomp } 17 \ u s e p a c k a g e { mathptmx } 18 \ u s e p a c k a g e [ s c a l e d =. 9 2 ] { h e l v e t } 19 \ u s e p a c k a g e { c o u r i e r } 20 \ u s e p a c k a g e [ i n t l i m i t s ] { amsmath } 21 \ u s e p a c k a g e { t r f s i g n s } 22 \ u s e p a c k a g e { l a t e x s y m } 23 \ b e g i n { document } 24 e t e x 25 % ENDPRE 66

2.9 GnuPlot und LATEX 5 rpar(10.0,x) 4 3 2 1 0 0 5 10 15 20 Abbildung 2.35: Darstellung mit den Standard-Schriftarten 5 rpar(10.0,x) 4 3 2 1 0 0 5 10 15 20 Abbildung 2.36: Darstellung mit angepassten Schriften 67

2 GnuPlot Größenanpassung Um die Diagrammdarstellung in ein Zentimeter-Raster zu bringen, müssen zunächst die Koordinatenbereiche so gewählt werden, dass Skalenanfang und Skalenende für jede Achse auf runde Werte fallen. Der x-bereich verläuft von 0 bis 10 und kann so belassen werden. Der y-bereich verläuft von 0 bis 5 und kann ebenfalls so belassen werden. 1 s e t t e r m i n a l mp c l a t e x p s n f s s 2 s e t o u t p u t " gosp0045. mp" 3 s e t x l a b e l " W i d e r s t a n d " 4 s e t y l a b e l " G e s a m t w i d e r s t a n d " 5 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 6 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 7 s e t y r a n g e [ 0. 0 : 5. 0 ] 8 s e t x t i c s 0,2,20 9 s e t y t i c s 0, 2, 4 10 p l o t r p a r ( 1 0. 0, x ) Diese Datei wird mit GnuPlot verarbeitet, die entstehende *.mp-datei wird zu gomp....mp umbenannt und die Präambel an das LATEX-Dokument angepasst wie in Abschnitt 2.9.6 auf Seite 63 beschrieben. Aus Abb. 2.37 auf der nächsten Seite ist zu entnehmen, dass für den x-bereich eine Breite von 10 cm und für den y-bereich eine Höhe von 10 cm angemessen erscheinen. 68

2.9 GnuPlot und LATEX Bildfläche Diagrammfläche y 2 y = y 2 y 1 h = 720b y 1 x 1 x = x 2 x 1 x 2 w = 1200a Abbildung 2.37: Aufteilung der Zeichenfläche 69

2 GnuPlot Standardmäßig verwendet GnuPlot für das gesamte zu erzeugende Bild eine Breite von 5 Zoll und eine Höhe von 3 Zoll. Die Bildbreite wird in 1200 Einheiten der Länge a unterteilt, die Höhe in 720 Einheiten der Länge b. Ein Teil von Breite und Höhe wird für Beschriftungen verwendet, der Rest für das Diagramm. Die Bildmessungen und die Aufteilung in a- und b-einheiten finden sich unmittelbar nach der beginfig(0) - Anweisung. 1 e nddef ; 2 3 b e g i n f i g ( 0 ) ; Im anschließenden Text werden zunächst die Skalen gezeichnet und beschriftet, hier finden sich immer jeweils mehrere draw und je eine put_text -Anweisung im Wechsel. Bevor die x- und y-label mit put_text angebracht werden, wird der Umriss der Diagrammfläche einmal gezeichnet. 1 draw ( 1 1 4 6. 3 a, 1 0 9. 8 b ) (1146.3 a, 1 2 6. 4 b ) ; 2 draw ( 1 1 4 6. 3 a, 6 8 4. 6 b ) (1146.3 a, 6 6 8. 0 b ) ; 3 p u t _ t e x t ( b t e x 20 etex, 1146.3 a, 7 3. 2 b, 0, 2 ) ; 4 draw ( 1 2 5. 7 a, 1 0 9. 8 b ) (1146.3 a, 1 0 9. 8 b ) (1146.3 a, 6 8 4. 6 b ) 5 (125.7a, 6 8 4. 6 b ) (125.7 a, 1 0 9. 8 b ) ; Kurz vor der endfig -Anweisung, die das Bild abschließt, wird der Diagram-Umriss nochmals gezeichnet. 1 (589.6a, 6 5 7. 2 b ) (599.9 a, 6 6 3. 5 b ) (610.2 a, 6 6 9. 7 b ) (620.5 a, 6 7 5. 8 b ) (630.8 a 2 (636.0a, 6 8 4. 6 b ) ; 3 l i n e t y p e 2; 4 draw ( 1 2 5. 7 a, 1 0 9. 8 b ) (1146.3 a, 1 0 9. 8 b ) (1146.3 a, 6 8 4. 6 b ) 5 (125.7a, 6 8 4. 6 b ) (125.7 a, 1 0 9. 8 b ) ; 6 e n d f i g ; 7 % BEGPOST 8 v e r b a t i m t e x 9 \ end { document } 10 e t e x In beiden Listings wurde die draw -Zeile umgebrochen, damit sie hier auf die Seite passt. Diesen Listings kann entnommen werden, dass woraus folgt x 1 = 125.7a x 2 = 1146,3a y 1 = 109,8b y 2 = 684,6b x = x 2 x 1 y = y 2 y 1 = 1020,6a = 574,8b 70

2.9 GnuPlot und LATEX rpar(10.0,x) 4 Gesamtwiderstand 2 0 0 2 4 6 8 10 12 14 16 18 20 Widerstand Abbildung 2.38: Korrigierte Skalenteilung Wenn die Diagrammfläche also 10 cm breit und 10 cm hoch werden soll, gilt für die Bildfläche w = 10cm 1200 1020,6 h = 10cm 720 574,8 Dies wird unmittelbar nach der beginfig -Anweisung eingegeben. Die Berechnung wird dabei MetaPost überlassen. 1 b e g i n f i g ( 0 ) ; 2 w: = 1 0. 0 cm * ( 1 2 0 0. 0 / ( 1 1 4 6. 3 1 2 5. 7 ) ) ; h : = 1 0. 0 cm * ( 7 2 0. 0 / ( 6 8 4. 6 1 0 9. 8 ) ) ; 3 a :=w/ 1 2 0 0. 0 ; b := h / 7 2 0. 0 ; Mit diesen Änderungen wird eine Darstellung wie in Abb. 2.38 erreicht. Werden Dokumente ausgedruckt, die auf Zentimeterdarstellung optimierte Plots enthalten, muss die automatische Größenanpassung beim Druck deaktiviert werden, siehe Abb. 2.39 auf der nächsten Seite. 71

2 GnuPlot Abbildung 2.39: Größenanpassung deaktivieren 72

2.9 GnuPlot und LATEX rpar(10.0,x) 4 Rges 2 0 0 2 4 6 8 10 12 14 16 18 20 R 1 Abbildung 2.40: LATEX-Textlabels LaTeX-Labels MetaPost verwendet LATEX für den Textsatz, daher können auch LATEX-Kommandos in Textlabels in MetaPost verwendet werden. Zu beachten ist, dass GnuPlot Backslashes in Labeln als Beginn einer Steuerzeichenfolge betrachtet. Um einen Backslash in die MetaPost-Datei auszugeben, müssen daher zwei Backslashes in der GnuPlot- Datei geschrieben werden, z.b. \\(R_1\\) um in der MetaPost-Datei \(R_1\) zu erzeugen. Das Beispiel 1 s e t t e r m i n a l mp c l a t e x p s n f s s 2 s e t o u t p u t " gosp0046. mp" 3 s e t x l a b e l " \ \ ( R_1 \ \ ) " 4 s e t y l a b e l " \ \ ( R_ \ \ t e x t { ges } \ \ ) " 5 r p a r ( ra, rb ) = ( r a * rb ) / ( r a + rb ) 6 s e t x r a n g e [ 0. 0 : 2 0. 0 ] 7 s e t y r a n g e [ 0. 0 : 5. 0 ] 8 s e t x t i c s 0,2,20 9 s e t y t i c s 0, 2, 4 73

2 GnuPlot 10 p l o t r p a r ( 1 0. 0, x ) erzeugt dann eine Darstellung entsprechend Abb. 2.40 auf der vorherigen Seite. 74

2.9.7 Tipps rund um GnuPlot und LaTeX Projekt-Organisation 2.9 GnuPlot und LATEX Es wird empfohlen, das Projekt mit all seinen Text- und Graphikdateien in etwa folgendermaßen zu organisieren (für das Beispiel wird angenommen, dass mb.pdf für Mein Buch erzeugt werden soll): mb.tex Die Hauptdatei enthält die Präambel und schließt dann per \input{} die Datei mbtext.tex ein. mbtext.tex Diese Datei enthält \section, \subsection... und schließt die zugehörigen Textabschnitte per \input ein, z.b. 1 \ s e c t i o n { E r s t e r A b s c h n i t t } 2 \ s u b s e c t i o n { E r s t e r U n t e r a b s c h n i t t } \ i n p u t {mb0101} 3 \ s u b s e c t i o n { Z w e i t e r U n t e r a b s c h n i t t } \ i n p u t {mb0102} 4 \ s e c t i o n { Z w e i t e r A b s c h n i t t } 5 \ s u b s e c t i o n {Noch e i n U n t e r a b s c h n i t t } \ i n p u t {mb0201} Dies hat den Vorteil, dass die Gliederung des Gesamtwerkes in einer Datei gut sichtbar und bearbeitbar ist. mb0101.tex... mb9999.tex Die zu den entsprechenden Überschriften gehörenden Texte. mbgp0001.gp... mbgp9999.gp Dies sind alle GnuPlot-Dateien, durchnummeriert in der Reihenfolge, in der sie angelegt wurden. Die Nummerierung ist unabhängig von der Kapitel- und Abschnittsnummerierung. mbmp0001.mp... mgmp9999.mp Zum einen finden sich hier MetaPost-Dateien, die Sie manuell angelegt haben. Zum anderen handelt es sich um MetaPost-Dateien, die Sie mit GnuPlot erzeugt haben, die aber umbenannt wurden bevor sie angepasst wurden. Die Nummerierung ist unabhängig von der Kapitel- und Abschnittsnummerierung und unabhängig von der Nummerierung der GnuPlot-Dateien. mbfi0001.fig... mbfi9999.fig Fig-Dateien, die mit XFig, jfig oder WinFig erzeugt wurden. mbbi0001.png... mbbi9999.jpg Bitmap-Dateien, die im Projekt verwendet werden. Die unterschiedlichen Quelldateien (*.gp, *.fig, *.png) können auf verschiedenen Wegen (z.b. über *.mp, *.eps, *.pdf) in Zieldateien verwandelt werden, die in 75

2 GnuPlot das LATEX-Dokument eingebunden werden. Die unterschiedlichen Stammnamen ( mbgp, mbmp, mbfi und mbbi ) sollen Namenskollisionen verhindern, die zu versehentlichen Überschreiben von Dateien führen könnten. 76

Das Script prepare.pl 2.9 GnuPlot und LATEX Übersicht Das Script prepare.pl 3 kann Ihnen bei größeren Projekten behilflich sein. Es nimmt Umwandlungen von Quell- in Zieldateien vor und konvertiert dabei nur Dateien, für die das auch erforderlich ist (Quelldatei neuer als Zieldatei). Es ist auch möglich, den Zeittest zu überspringen und alle Zieldateien neu zu erzeugen. Im einzelnen werden *.gp-dateien zu *.mp-dateien konvertiert, *.fig-dateien zu *.mp-dateien oder *.eps/*.pdf/*.tex-dateien, *.mp-dateien zu *.mps und *.png-dateien zu *.eps- und *.pdf-dateien. Setup Um das Script einzusetzen, benötigen Sie folgende Software: GnuPlot, Perl, bmeps 4, fig2vect 5. Perl und GnuPlot können Sie unter UNIX/Linux meist über das Paketmanagement installieren. Bmeps, png2pdf und fig2vect compilieren Sie aus den Quellen. Für Windows stellt die Firma ActiveState 6 die Perl-Distribution ActivePerl bereit. Bmeps, png2pdf und fig2vect sind im dklibs-win32 -Package 7 enthalten, verwenden Sie die Datei dklibs-win32-*-user-setup.exe mit der höchsten Versionsnummer. Das Script muss noch angepasst werden, bevor es benutzt werden kann. $preamblefile gibt den Namen für eine Datei an, die die LATEX-Präambel enthält, die in *.mp und *.tex-ausgaben verwendet wird. Diese Datei darf die Zeile \begin{document} nicht enthalten. $figtomp legt fest, ob *.fig-dateien zu MetaPost-Dateien (*.mp) konvertiert werden (1) oder zu *.eps/*.pdf/*.tex (0). 3 als Anlage in dieser PDF-Datei enthalten, siehe Anhang A.1 auf Seite 169 4 http://sourceforge.net/projects/bmeps 5 http://sourceforge.net/projects/fig2vect 6 http://www.activestate.com 7 http://sourceforge.net/projects/dklibs 77

2 GnuPlot usetransfig gibt vor, ob *.fig-dateien mit transfig (1) oder fig2vect (0) verarbeitet werden. $bmeps_options legt die Optionen für das Programm bmeps fest, das *.png-dateien zu *.eps- Dateien konvertiert. Standardmäßig ist hier -leps voreingestellt für PostScript Level 2, farbige Ausgabe und ASCII85- und Runlength-Encoding. Der wichtigste anzupassende Punkt ist meist die Erstellung einer eigenen LATEX- Präambel-Datei. 78

3 Erste Schritte mit GNU Octave und Scilab 3.1 Einführung Dieser Text versucht, einen Einstieg in GNU Octave und Scilab anhand ausgwählter Beispiele zu ermöglichen. Die Beispiele zeigen einige Verwendungsmöglichkeiten beider Programme auf und sollen Interesse für eine weitere Beschäftigung mit der Software wecken. Eine ausführliche oder gar vollständige Beschreibung beider Programme ist nicht das Ziel dieses Textes, hierfür sollte das Handbuch octave.pdf konsultiert werden, das GNU Octave wesentlich detaillierter beschreibt. Dieses ca. 400 Seiten umfassende Handbuch wird normalerweise bei der Installation von GNU Octave mit installiert. Für Informationen über Scilab kann die Projekt-Homepage http://www.scilab. org/ konsultiert werden. Eine PDF-Datei mit einer Einführung in Scilab ist unter ftp://ftp.inria.fr/inria/scilab/documentation/pdf/intro.pdf erhältlich. 79

3 Erste Schritte mit GNU Octave und Scilab 3.2 Octave-Installation 3.2.1 Octave-Installation unter Linux Gängige UNIX/Linux-Distributionen bieten meist an, GNU Octave über das Paketmanagement zu installieren. 3.2.2 Octave-Installation unter Unix/Linux aus den Quellen Die Quelltexte können von der Projekt-Homepage 1 bezogen werden. Nach dem Entpacken werden die Kommandos 1. / c o n f i g u r e 2 make 3 make i n s t a l l ausgeführt. 1 http://www.octave.org 80

3.2.3 Octave-Installation unter Windows GNU Octave ist ein Bestandteil der Cygwin-Tools. Download Die Software finden Sie unter http://www.cygwin.com. 3.2 Octave-Installation Installation Bei der Installation sollten Sie in den Abschnitten für Mathematik und Dokumentationen alles aktivieren, was octave im Namen hat. Pfad-Korrektur Nach der Installation sollten Sie den Pfad korrigieren (Umgebungsvariable PATH). Unter Systemsteuerung / System / Erweitert klicken Sie auf den Button Umgebungsvariablen. Es werden die nutzerspezifischen Variablen für den angemeldeten Benutzer (bei Software-Installationen meist Administrator ) und die systemweiten Umgebungsvariablen angezeigt. In den Systemvariablen doppelklicken Sie PATH und nehmen folgende Einstellungen vor: C:\Cygwin\bin;C:\Cygwin\usr\X11R6\bin;C:\Cygwin\lib\lapack werden hinter den Standardverzeichnissen angehangen, durch Semikolon vom bereits vorhandenen Text abgetrennt. Falls MikTex bzw. eine andere LATEX-Distribution installiert ist, sollten die Verzeichnisse mit den Binaries (z.b. C:\texmf\MikTeX\bin) vor den Cygwin-Verzeichnissen aufgeführt sein. Mitunter installiert Cygwin eine TeTeX-Version gemeinsam mit GNU Octave. Wenn Sie eine native Win32- LATEX-Distribution installiert haben, werden Sie sicherlich diese verwenden wollen und nicht die Cygwin-basierte. Falls sowohl MikTeX als auch dklibs-win32 installiert sind, sollte C:\Programme\Krause\bin im PATH vor C:\texmf\MikTeX\bin aufgeführt sein. Die dklibs-win32-packages enthalten Binaries der jeweils aktuellen bmeps-version, die bmeps-binaries in MikTeX sind meist nicht ganz so aktuell. Falls Perl und/oder Tcl/Tk installiert sind, sollten die entsprechenden bin- Verzeichnisse vor den Cygwin-Verzeichnissen in PATH aufgeführt sein. Auch hier sollten native Win32-Versionen den Vorzug vor den Cygwinbasierten Versionen erhalten. Testweiser Start des Cygwin X-Servers (falls dieser mit installiert wurde). Das Kommando startxwin.bat startet den X-Server. Dieser wird hier nicht benötigt, es soll nur die interne Verzeichnisstruktur des X-Servers angelegt werden. Das sich öffnende Terminal kann durch Eingabe von exit verlassen werden. Ein Klick mit der rechten Maustaste auf das Systray-Icon, das ein X darstellt, bietet eine Option zum Beenden des X-Servers. 81

3 Erste Schritte mit GNU Octave und Scilab Korrektur der Benutzerrechte. Die Cygwin-Software installiert sich standardmäßig in C:\Cygwin. Da bei der Installation keine Berechtigungen gesetzt werden, werden alle Berechtigungen von C:\ geerbt. Diese ererbten Berechtigungen sind für meinen Geschmack eine Spur zu großzügig und sollten etwas reduziert werden was detailliert im Anhang A.2 auf Seite 171 beschrieben wird. Der Gruppe Benutzer wird das Recht auf C:\Cygwin entzogen, in Verzeichnissen neue Dateien anzulegen und Daten zu schreiben. Auf C:\Cygwin\tmp erhält entweder die Gruppe Benutzer oder die Rolle INTERAKTIV Lese- und Ausführungszugriff sowie speziellen Zugriff für Dateien erstellen / Daten anhängen und Ordner erstellen / Daten anhängen. 82

3.3 Scilab-Installation 3.3 Scilab-Installation 3.3.1 Scilab-Installation unter Linux Die Quellen können von der Projekt-Homepage http://www.scilab.org/ bezogen werden. Für die Installation unter UNIX/Linux können die Kommandos 1. / c o n f i g u r e 2 make 3 make i n s t a l l verwendet werden. Mit 1. / c o n f i g u r e h e l p erhalten Sie Hilfestellung, welche Optionen das configure -Script verarbeitet. Evtl. findet das configure -Script Tcl/Tk nicht selbständig, hier muss durch Angabe der Installationsverzeichnisse nachgeholfen werden. 3.3.2 Scilab-Installation unter Windows Die Software kann von der Projekt-Homepage 2 bezogen werden. Zur Installation unter Windows wird die *.exe-datei gestartet. 2 http://www.scilab.org 83

3 Erste Schritte mit GNU Octave und Scilab 3.4 Octave starten 3.4.1 Interaktives Arbeiten Um interaktiv mit GNU Octave zu arbeiten, geben Sie unter UNIX/Linux in einem Terminalfenster bzw. unter Windows in einem Cygwin Bash Shell -Fenster 1 o c t a v e ein. Unter Windows können Sie GNU Octave nicht aus einem normalen Eingabeaufforderung-Fenster starten, Sie müssen eine der Cygwin-Shells verwenden, andernfalls erhalten Sie eine unschöne Fehlermeldung entsprechend Abb. 3.1 auf der nächsten Seite. 3.4.2 Datei verarbeiten Eine Datei mit Kommandos können Sie auf zwei Wegen verarbeiten: Verwendung der Datei als Standardeingabe für GNU Octave: octave < Dateiname Dateinamen als Kommandozeilenargument angeben: octave Dateiname 84

3.4 Octave starten Abbildung 3.1: Fehlermeldung des 16-Bit-Subsystems 85

3 Erste Schritte mit GNU Octave und Scilab 3.5 Scilab starten Abbildung 3.2: Scilab-Hauptfenster Unter Windows wird das Programm über den Startmenü-Eintrag gestartet, unter UN- IX/Linux geben Sie in einem Terminal-Fenster 1 s c i l a b ein. Das Scilab-Hauptfenster erscheint, siehe Abb. 3.2. 86

3.5 Scilab starten Abbildung 3.3: Editor starten Kommandos können direkt im Scilab-Hauptfenster eingegeben werden. Dies ist allerdings nur für kleinere Probleme empfehlenswert, wenn es sich nicht lohnt, diese Kommandos zur Wiederverwendung in einer Datei zu speichern. Sollen Kommandos wiederholt und mit Abwandlungen genutzt werden, wird die Kommandofolge in einer *.sce -Datei gespeichert. Zum Anlegen einer solchen Datei klicken Sie auf den Button Editor im Hauptfenster-Menü. Das Editorfenster wird geöffnet. Hier können Sie die Kommandos als Textdatei eingeben (siehe Abb. 3.4 auf der nächsten Seite) und abspeichern (siehe Abb. 3.5 auf Seite 89). Mit dem Menüpunkt Execute Load into Scilab werden die Kommandos durch Scilab ausgeführt. Die gewünschte Ausgabe ist dann im Hauptfenster sichtbar (Abb. 3.7 auf Seite 91). 87

3 Erste Schritte mit GNU Octave und Scilab Abbildung 3.4: Editorfenster 88

3.5 Scilab starten Abbildung 3.5: Datei speichern 89

3 Erste Schritte mit GNU Octave und Scilab Abbildung 3.6: Kommandos ausführen 90

3.5 Scilab starten Abbildung 3.7: Ergebnisse im Hauptfenster 91

3 Erste Schritte mit GNU Octave und Scilab Abbildung 3.8: Programm verlassen Über den Menüpunkt File Exit kann das Programm verlassen werden (Abb. 3.8). Alternativ kann im Hauptfenster das Kommando quit eingegeben werden. 92

3.6 Beispiele R 1 U q R 2 U 2 Abbildung 3.9: Spannungsteiler 1 Uq = 1 0. 0 ; 2 R1 = 4. 7 e3 ; 3 R2 = 1 0. 0 e3 ; 4 U2 = Uq * R2 / ( R1 + R2 ) ; 5 p r i n t f ( U2 = %g \ n, U2 ) ; 3.6 Beispiele 3.6.1 Einfache Berechnung Beispiel Listing 3.1: oe0001.m bzw. oe0001.sce Gegeben ist eine Schaltung entsprechend Abb. 3.9 mit folgenden Werten: U q = 10V R 1 = 4,7kΩ R 2 = 10kΩ Zu berechnen ist die Spannung U 2, die über dem Widerstand R 2 abfällt. Die Berechnung kann nach der Formel U 2 = R 2 R 1 + R 2 U q erfolgen, dies wird in GNU Octave durch die Datei oe0001.m bzw. in Scilab durch die Datei oe0001.sce realisiert, siehe Listing 3.1. Beide Dateien sind für dieses Beispiel identisch. Als Ergebnis wird ausgegeben, dass U 2 = 6,8V. 93

3 Erste Schritte mit GNU Octave und Scilab Aufbau der Eingabe Die Eingabe für GNU Octave und Scilab besteht jeweils aus einer Folge von Anweisungen. Die meisten Anweisungen sind dabei Zuweisungen, die einer Variable einen Wert zuweisen. Wird eine Anweisung nicht mit Semikolon abgeschlossen, wird der Wert, der sich bei der letzten Berechnung ergibt, als Report ausgegeben. Wird eine Anweisung mit Semikolon abgeschlossen, erfolgt diese Report-Ausgabe nicht. Es wird empfohlen, alle Anweisungen mit Semikolon abzuschließen. Zuweisung Eine Zuweisungsanweisung hat die Form Variablenname = Ausdruck Ein Variablenname beginnt mit Buchstaben oder Unterstrich, darauf können weitere Unterstriche, Buchstaben und Zahlen folgen. Ein mathematischer Ausdruck entsteht, indem Operanden (Zahlenwerte oder Variableninhalte) durch mathematische Operatoren und Funktionen verknüpft werden. 3 In GNU Octave ist bereits eine große Anzahl an Funktionen und Konstanten vordefiniert. Diese werden im Abschnitt Arithmetic in octave.pdf ausführlich vorgestellt. In Scilab öffnen Sie die Hilfe über den Menüpunkt? Scilab Help oder indem Sie das Kommando 1 h e l p ( ) ; eingeben. Das Fenster Scilab Browse Help wird geöffnet, es enthält im linken Teil ein Inhaltsverzeichnis als Baumstruktur. Wird hier ein Eintrag angeklickt, wird im rechten Teil des Fensters der zugehörige Text angezeigt. Der Eintrag Elementar Functions im Inhaltsverzeichnis enthält die Dokumentation der in Scilab vordefinierten Funktionen. 3 In diesem Sinne kann ein Ausdruck auch als Synonym für Berechnungsergebnis angesehen werden. 94

3.6 Beispiele Skalare Skalare sind Datentypen, die einen einzelnen Wert (entweder reell oder komplex) aufnehmen. Matrizen als weiterer numerischer Datentyp werden später behandelt. Der Dezimaltrenner für Gleitkommazahlen ist der Punkt. Die Multiplikation mit Zehnerpotenzen wird mittels eines e beschrieben, dem die Zehnerpotenz folgt, z.b.: 1.23e-6 für 1,23 10 6 oder 4.56e3 für 4,56 10 3. Für die Zahl π ist in GNU Octave die Konstante pi und in Scilab die Konstante %pi vordefiniert. Um komplexe Zahlen zu bilden, kann in GNU Octave die vordefinierte Variable i verwendet werden, in Scilab %i. Die Zahl 3 + 4i kann z.b. als 3+4*i (GNU Octave) bzw. 3+4*%i (Scilab) eingegeben werden. Als Kurzschreibweise ist in GNU Octave auch 3+4i möglich, hier darf zwischen dem numerischen Wert des Imaginärteiles und dem i kein Leerzeichen stehen. Octave Scilab π pi %pi Komplexe Zahlen 3+4*i 3+4*%i 3+4i 95

3 Erste Schritte mit GNU Octave und Scilab R 1 I 3 U q R 2 R 3 Abbildung 3.10: Schaltung 3.6.2 Selbstdefinierte Funktion Beispiel Gegeben sei eine Schaltung entsprechend Abb. 3.10 mit U q = 10V R 1 = 4,7kΩ R 2 = 10kΩ R 3 = 47kΩ Zu berechnen ist der Strom I 3 durch R 3. Die Dateien oe0002.m und oe0002.sce realisieren die Berechnung in GNU Octave und Scilab. 96

3.6 Beispiele 1 # F u n k t i o n s d e f i n i t i o n Listing 3.2: oe0002.m: Berechnung in Octave 2 # P a r a l l e l s c h a l t u n g z w e i e r W i d e r s t a e n d e 3 f u n c t i o n y = p a r a ( a, b ) 4 y = 0. 0 ; 5 i f ( a > 0. 0 ) 6 i f ( b > 0. 0 ) 7 y = a * b / ( a + b ) ; 8 e n d i f 9 e n d i f 10 e n d f u n c t i o n 11 # Gegebene Groessen 12 Uq = 1 0. 0 ; 13 R1 = 4. 7 e3 ; 14 R2 = 1 0. 0 e3 ; 15 R3 = 4 7. 0 e3 ; 16 # Berechnung 17 Rges = R1 + p a r a ( R2, R3 ) ; 18 I g e s = Uq / Rges ; 19 I3 = I g e s * R2 / ( R2 + R3 ) ; 20 # Ausgabe 21 p r i n t f ( I3 = %g \ n, I3 ) ; 97

3 Erste Schritte mit GNU Octave und Scilab 1 / / F u n k t i o n s d e f i n i t i o n Listing 3.3: oe0002.sce: Berechnung in Scilab 2 / / P a r a l l e l s c h a l t u n g z w e i e r W i d e r s t a e n d e 3 f u n c t i o n [ y ] = p a r a ( a, b ) 4 y = 0. 0 ; 5 i f ( a > 0. 0 ) 6 i f ( b > 0. 0 ) 7 y = a * b / ( a + b ) ; 8 end 9 end 10 e n d f u n c t i o n 11 / / Gegebene Groessen 12 Uq = 1 0. 0 ; 13 R1 = 4. 7 e3 ; 14 R2 = 1 0. 0 e3 ; 15 R3 = 4 7. 0 e3 ; 16 / / Berechnung 17 Rges = R1 + p a r a ( R2, R3 ) ; 18 I g e s = Uq / Rges ; 19 I3 = I g e s * R2 / ( R2 + R3 ) ; 20 / / Ausgabe 21 p r i n t f ( I3 = %g \ n, I3 ) ; 98

Funktionsdefinition 3.6 Beispiele Eine Funktionsdefinition hat in GNU Octave folgenden grundsätzlichen Aufbau: function Rückgabevariable = Funktionsname(Parameterliste) Anweisungsliste endfunction In Scilab wird die Rückgabevariable auch dann in eckige Klammern gesetzt, wenn nur ein Wert bzw. Objekt zurückgegeben wird: function [Rückgabevariable] = Funktionsname(Parameterliste) Anweisungsliste endfunction Definiert wird die Funktion mit dem angegebenen Funktionsnamen. In der Anweisungsliste wird die Rückgabevariable auf den Wert gesetzt, der als Funktionsergebnis zurückgegeben wird. Die Rückgabevariable und die Parameter aus der Parameterliste sind lokale Variablen der Funktion. Im Beispiel wird die Funktion para() definiert, die den Gesamtwiderstand bei der Parallelschaltung zweier Widerstände berechnet. Die Rückgabevariable y wird zunächst auf 0 gesetzt. Nur wenn beide Widerstände größer als 0 sind, wird die Berechnung durchgeführt, damit wird eine Division durch 0 vermieden. 99

3 Erste Schritte mit GNU Octave und Scilab 1 CMatrix = [ 2 1 1 2 2 6 2 3 1 3 4 2 3 2 4 2 0 4 3 ] ; 5 YVektor = [ 3 6 3 7 2 8 1 ] ; 9 XVektor = CMatrix \ YVektor ; 10 XVektor Listing 3.4: oe0003.m bzw. oe0003.sce 3.6.3 Vektoren, Matrizen und lineare Gleichungssysteme Beispiel 1 - Mathematisches Gleichungssystem Gesucht wird die Lösung für das Gleichungssystem 2x 1 x 2 x 3 + 2x 4 = 3 6x 1 2x 2 + 3x 3 x 4 = 3 4x 1 + 2x 2 + 3x 3 2x 4 = 2 2x 1 + 4x 3 3x 4 = 1 Das Gleichungssystem wird in Matrizenschreibweise ausgedrückt als 2 1 1 2 x 1 3 6 2 3 1 4 2 3 2 x 2 x 3 = 3 2 2 0 4 3 x 4 1 Die Octave- bzw. Scilab-Datei dieselbe Datei hier kann für beide Programme genutzt werden zur Lösung des Gleichungssystemes (Listing 3.4) erzeugt folgende Ausgabe: 1 XVektor = 2 3 8.0000 4 21.0000 5 2.0000 6 3.0000 100

Matrizen und Vektoren 3.6 Beispiele Matrizen sind ein zweiter numerischer Datentyp, Vektoren werden als Sonderformen von Matrizen mit nur einer Zeile bzw. Spalte betrachtet. Die Eingabe von Matrizen erfolgt in eckigen Klammern. Die einzelnen Elemente sind durch Leerzeichen getrennt (eine beliebige Folge von Leerzeichen und Tabulatoren wird als ein Trennzeichen zwischen zwei Elementen betrachtet). Alternativ kann das Komma als Trennzeichen verwendet werden. Jede Matrixzeile wird durch ein Zeilenende abgeschlossen. Lange Matrixzeilen können über mehrere Eingabezeilen hinweg eingegeben werden, dabei wird bedeutet ein Backslash vor dem Ende einer Eingabezeile, dass die Matrixzeile in der nächsten Eingabezeile fortgesetzt wird. Für Matrizen mit kurzen Zeilen ist es auch möglich, mehrere Matrixzeilen in einer Eingabezeile zusammenzufassen, die Matrixzeilen werden dabei durch eine Semikolon getrennt. Im Beispiel 1 A = [1 2 2 4 5 ] ; 3 B = [1 2 ; 6 7 ] ; 4 C = [1 \ 5 2 6 8 \ 7 9 ] ; 8 A( 1, 2 ) 9 B 10 C werden drei Matrizen ( ) 1 2 A = 4 5 B = angelegt. Ausgegeben wird A 1,2, B und C. 1 ans = 2 2 B = 3 4 1 2 5 6 7 6 7 C = 8 9 1 2 10 8 9 ( 1 2 6 7 ) C = ( 1 2 8 9 ) 101

3 Erste Schritte mit GNU Octave und Scilab 2 R 2 U q2 1 U q1 I 6 U q4 R 1 R 5 R 6 R 4 R 3 U q3 3 0 Abbildung 3.11: Schaltung entsprechend Aufgabenstellung Beispiel 2 - Knotenspannungsanalyse Für die gegebenen Größen U q1 = 15V U q2 = 20V U q3 = 25V U q4 = 30V R 1 = 15Ω R 2 = 3,3Ω R 3 = 4,7Ω R 4 = 3Ω R 5 = 33Ω R 6 = 20Ω ist I 6 mittels Knotenspannungsanalyse gesucht. Die Knoten werden nummeriert wie in Abb. 3.11 angegeben, eine Knotenspannungsanalyse ergibt das Gleichungssystem G 2 + G 4 + G 6 G 2 0 G 2 G 1 + G 2 + G 5 (G 1 + G 5 ) 0 (G 1 + G 5 ) G 1 + G 3 + G 5 Nach Lösung des Gleichungssystemes kann I 6 mit berechnet werden. U 10 U 20 U 30 = I 6 = U 10 R 6 U q2 G 2 +U q4 G 4 U q1 G 1 U q2 G 2 U q3 G 3 U q1 G 1 Die Schreibweise U 10 steht hier für die Spannung vom Knoten 1 zum Knoten 0. 102

3.6 Beispiele Listing 3.5: oe0004.m bzw. oe0004.sce 1 Uq1 = 1 5. 0 ; Uq2 = 2 0. 0 ; Uq3 = 2 5. 0 ; Uq4 = 3 0. 0 ; 2 R1 = 1 5. 0 ; R2 = 3. 3 ; R3 = 4. 7 ; R4 = 3. 0 ; 3 R5 = 3 3. 0 ; R6 = 2 0. 0 ; 4 5 G1 = 1. 0 / R1 ; G2 = 1. 0 / R2 ; G3 = 1. 0 / R3 ; G4 = 1. 0 / R4 ; 6 G5 = 1. 0 / R5 ; G6 = 1. 0 / R6 ; 7 8 CMatrix = [ ( G2+G4+G6 ) G2 0 9 G2 ( G1+G2+G5 ) (G1+G5 ) 10 0 (G1+G5 ) ( G1+G3+G5 ) ] ; 11 12 YVektor = [ ( Uq2*G2+Uq4*G4 ) 13 ( Uq1*G1 Uq2*G2 ) 14 ( Uq3*G3 Uq1*G1 ) ] ; 15 16 XVektor = CMatrix \ YVektor ; 17 18 U10 = XVektor ( 1 ) ; 19 I 6 = U10 / R6 ; 20 21 p r i n t f ( U10 = %g \ n, U10 ) ; 22 p r i n t f ( I6 = %g \ n, I6 ) ; Dieses Gleichungssystem wird mit der Datei oe0004.m bzw. oe0004.sce gelöst. Auch in diesem Beispiel sind die Eingabedateien für GNU Octave und Scilab gleich. Bei der Verarbeitung wird die folgende Ausgabe erzeugt: 1 U10 = 29.731134 2 I6 = 1.486557 Es gilt also U 10 = 29,7V und I 6 = 1,49A. Im Beispiel ist zu sehen, dass auch beim Erstellen von Matrizen die einzelnen Elemente in Form von Ausdrücken angegeben werden können. 103

3 Erste Schritte mit GNU Octave und Scilab 10 8 6 4 2 0 10 x+y 1 + 10 x y 10 x+5 y 0 1 2 3 4 5 0 1 2 3 4 5 Abbildung 3.12: 3 Funktionen als Gebirge über x-y-ebene 3.6.4 Nichtlineare Gleichungssysteme Beispiel Gegeben sind drei Funktionen als Gebirge über der xy-ebene. Gesucht ist der Schnittpunkt der drei Flächen. f 1 (x,y) = 10 x + y f 2 (x,y) = 1 + 10 x y f 3 (x,y) = 10 5 + x y Um das Gleichungssystem mit GNU Octave oder Scilab zu lösen, muss es erst in die entsprechende Schreibweise y = f ( x ) = 0 gebracht werden. z 1 = f 1 (x,y) = 10 x + y x x 1 y x 2 z x 3 y 1 = 10 x 1 + x 2 x 3 z 2 = f 2 (x,y) = 1 + 10 x y y 2 = 1 + 10 x 1 x 2 x 3 z 3 = f 3 (x,y) = Gesucht wird nun 10 5 + x y y 3 = 10 5 + x 1 x 2 x 3 0 = f ( x ) 104

3.6 Beispiele 1 f u n c t i o n y = f ( x ) 2 y = z e r o s ( 3, 1 ) ; Listing 3.6: oe0006.m 3 y ( 1 ) = 1 0. 0 / ( x ( 1 ) + x ( 2 ) ) x ( 3 ) ; 4 y ( 2 ) = 1. 0 + s q r t ( 1 0. 0 x ( 1 ) x ( 2 ) ) x ( 3 ) ; 5 y ( 3 ) = 1 0. 0 / ( 5. 0 + x ( 1 ) x ( 2 ) ) x ( 3 ) ; 6 e n d f u n c t i o n 7 8 [ x, i n f o ] = f s o l v e ( " f ", [ 0. 5 ; 2. 5 ; 2. 0 ] ) ; 9 10 i f ( i n f o == 1) 11 p r i n t f ( G l e i c h u n g s s y s t e m g e l o e s t. \ n ) ; 12 p r i n t f ( x = %g \ ny = %g \ nz = %g \ n, x ( 1 ), x ( 2 ), x ( 3 ) ) ; 13 e l s e 14 p e r r o r ( " f s o l v e ", 1 ) ; 15 e n d i f Die Eingabedatei oe0006.m für GNU Octave wird entsprechend Listing 3.6 erstellt, für Scilab wird oe0006.sce entsprechend Listing 3.7 auf der nächsten Seite verwendet. Die Ausgabe 1 G l e i c h u n g s s y s t e m g e l o e s t. 2 x = 0.201562 3 y = 2.500000 4 z = 3.701562 enthält die Koordinaten des Schnittpunktes. 105

3 Erste Schritte mit GNU Octave und Scilab 1 f u n c t i o n [ y ] = f ( x ) 2 y = z e r o s ( 3, 1 ) ; Listing 3.7: oe0006.sce 3 y ( 1 ) = 1 0. 0 / ( x ( 1 ) + x ( 2 ) ) x ( 3 ) ; 4 y ( 2 ) = 1. 0 + s q r t ( 1 0. 0 x ( 1 ) x ( 2 ) ) x ( 3 ) ; 5 y ( 3 ) = 1 0. 0 / ( 5. 0 + x ( 1 ) x ( 2 ) ) x ( 3 ) ; 6 e n d f u n c t i o n 7 8 [ x, v, i n f o ] = f s o l v e ( [ 0. 5 ; 2. 5 ; 2. 0 ], f ) ; 9 10 i f ( i n f o == 1) 11 p r i n t f ( G l e i c h u n g s s y s t e m g e l o e s t. \ n ) ; 12 p r i n t f ( x = %g \ ny = %g \ nz = %g \ n, x ( 1 ), x ( 2 ), x ( 3 ) ) ; 13 e l s e 14 p r i n t f ( Das G l e i c h u n g s s y s t e m konnte n i c h t g e l o e s t werden! \ n ) ; 15 end 106

Vektoren und Matrizen als Funktionswert und Argument 3.6 Beispiele Wie in Zeilen 2... 5 zu sehen ist, können sowohl Argumente als auch Rückgabewerte von Funktionen Matrizen (und somit auch Vektoren) sein. Die Anweisung 1 y = z e r o s ( 3, 1 ) ; legt fest, dass y ein Vektor mit drei Zeilen und einer Spalte ist. Würde diese Zuweisung weggelassen, ergäbe sich ein Ablauf wie folgt: Die erste Zuweisung bezieht sich auf Index 1, es wird ein Skalar angelegt. Die zweite Zuweisung bezieht sich auf Index 2, es wird ein Vektor mit 2 Zeilen angegelegt, der bisherige Inhalt von y wird kopiert und anschließend die Zuweisung für y(2) vorgenommen. Die dritte Zuweisung bezieht sich auf Index 3, der wiederum außerhalb der bisherigen Feldgröße liegt. Es wird also ein neuer Vektor mit 3 Zeilen angelegt, der bisherige Inhalt von y wird kopiert und anschließend die Zuweisung für y(3) vorgenommen. Das explizite Anlegen eines leeren Vektor mit drei auf 0 gesetzten Elementen verhindert das Neuanlegen und Kopieren durch die ständigen Größenänderungen. Diese sind zwar möglich, aber zeitaufwendig. 107

3 Erste Schritte mit GNU Octave und Scilab Gleichungssystem lösen In GNU Octave erhält die Funktion fsolve() als Argument den Namen der Funktion f als Text sowie einen Startwert für die Iteration. Der Name f wird als String d.h. mit Anführungszeichen angegeben. Zurückgegeben wird ein Zeilenvektor, der seinerseits einen Zeilenvektor x und eine Statusvariable in f o enthält. In Scilab erhält die Funktion fsolve() als Argumente zuerst den Iterations- Startpunkt und dann den Funktionsnamen als Identifier d.h. ohne Anführungszeichen. Zurückgegeben wird ein Zeilenvektor, der seinerseits einen Zeilenvektor x, einen Vektor v und eine Statusvariable in f o enthält. Wenn in f o = 1, wurde eine Lösung gefunden und x ist der Lösungsvektor. Weitere Informationen zum Lösen nichtlinearer Gleichungssystem finden sich in octave.pdf im Abschnitt Nonlinear Equations. 108

3.6 Beispiele Um die Berechnung zu optimieren, kann eine Funktion zur Berechnung der Jacobi- Matrix (engl.: Jacobian matrix) mit angegeben werden. Diese Matrix sieht folgendermaßen aus: J = dy 1 dx 1 dy 1 dx 2... dy 2 dx 1 dy 2 dx 2.... dy m dx 1.. dy m dx 2... dy 1 x n dy 2 x n. dy m x n im Beispiel = 10 (x 1 +x 2 ) 2 10 (x 1 +x 2 ) 2 1 1 2 10 x 1 x 2 1 2 10 x 1 x 2 1 10 (5+x 1 x 2 ) 2 10 (5+x 1 x 2 ) 2 1 In GNU Octave wird der Funktion fsolve() ein Feld von Strings mit 2 Elementen als Argument übergeben (siehe Listing 3.8 auf der nächsten Seite): Funktionsname für die Berechnung von y Funktionsname für die Berechnung von J In Scilab werden die Funktionsnamen zur Berechnung von y und J direkt im fsolve()-funktionsaufruf angegeben (siehe Listing 3.9 auf Seite 111). 109

3 Erste Schritte mit GNU Octave und Scilab 1 f u n c t i o n y = f ( x ) 2 y = z e r o s ( 3, 1 ) ; Listing 3.8: oe0009.m 3 y ( 1 ) = 1 0. 0 / ( x ( 1 ) + x ( 2 ) ) x ( 3 ) ; 4 y ( 2 ) = 1. 0 + s q r t ( 1 0. 0 x ( 1 ) x ( 2 ) ) x ( 3 ) ; 5 y ( 3 ) = 1 0. 0 / ( 5. 0 + x ( 1 ) x ( 2 ) ) x ( 3 ) ; 6 e n d f u n c t i o n 7 8 f u n c t i o n y = j a c o b i m a t r i x ( x ) 9 y = z e r o s ( 3, 3 ) 10 y ( 1, 1 ) = 10.0 / ( ( x ( 1 ) + x ( 2 ) ) ** 2 ) ; 11 y ( 1, 2 ) = 10.0 / ( ( x ( 1 ) + x ( 2 ) ) ** 2 ) ; 12 y ( 1, 3 ) = 1.0; 13 y ( 2, 1 ) = 1.0 / ( 2. 0 * s q r t ( 1 0. 0 x ( 1 ) x ( 2 ) ) ) ; 14 y ( 2, 2 ) = 1.0 / ( 2. 0 * s q r t ( 1 0. 0 x ( 1 ) x ( 2 ) ) ) ; 15 y ( 2, 3 ) = 1.0; 16 y ( 3, 1 ) = 10.0 / ( ( 5. 0 + x ( 1 ) x ( 2 ) ) ** 2 ) ; 17 y ( 3, 2 ) = 1 0. 0 / ( ( 5. 0 + x ( 1 ) x ( 2 ) ) ** 2 ) ; 18 y ( 3, 3 ) = 1.0; 19 e n d f u n c t i o n 20 21 names = f, j a c o b i m a t r i x ; 22 [ x, i n f o ] = f s o l v e ( names, [ 0. 5 ; 2. 5 ; 2. 0 ] ) ; 23 24 i f ( i n f o == 1) 25 p r i n t f ( G l e i c h u n g s s y s t e m g e l o e s t. \ n ) ; 26 p r i n t f ( x = %g \ ny = %g \ nz = %g \ n, x ( 1 ), x ( 2 ), x ( 3 ) ) ; 27 e l s e 28 p e r r o r ( " f s o l v e ", 1 ) ; 29 e n d i f 110

3.6 Beispiele 1 f u n c t i o n [ y ] = f ( x ) 2 y = z e r o s ( 3, 1 ) ; Listing 3.9: oe0009.sce 3 y ( 1 ) = 1 0. 0 / ( x ( 1 ) + x ( 2 ) ) x ( 3 ) ; 4 y ( 2 ) = 1. 0 + s q r t ( 1 0. 0 x ( 1 ) x ( 2 ) ) x ( 3 ) ; 5 y ( 3 ) = 1 0. 0 / ( 5. 0 + x ( 1 ) x ( 2 ) ) x ( 3 ) ; 6 e n d f u n c t i o n 7 8 f u n c t i o n [ y ] = j a c o b i m a t r i x ( x ) 9 y = z e r o s ( 3, 3 ) 10 y ( 1, 1 ) = 10.0 / ( ( x ( 1 ) + x ( 2 ) ) ** 2 ) ; 11 y ( 1, 2 ) = 10.0 / ( ( x ( 1 ) + x ( 2 ) ) ** 2 ) ; 12 y ( 1, 3 ) = 1.0; 13 y ( 2, 1 ) = 1.0 / ( 2. 0 * s q r t ( 1 0. 0 x ( 1 ) x ( 2 ) ) ) ; 14 y ( 2, 2 ) = 1.0 / ( 2. 0 * s q r t ( 1 0. 0 x ( 1 ) x ( 2 ) ) ) ; 15 y ( 2, 3 ) = 1.0; 16 y ( 3, 1 ) = 10.0 / ( ( 5. 0 + x ( 1 ) x ( 2 ) ) ** 2 ) ; 17 y ( 3, 2 ) = 1 0. 0 / ( ( 5. 0 + x ( 1 ) x ( 2 ) ) ** 2 ) ; 18 y ( 3, 3 ) = 1.0; 19 e n d f u n c t i o n 20 21 [ x, v, i n f o ] = f s o l v e ( [ 0. 5 ; 2. 5 ; 2. 0 ], f, j a c o b i m a t r i x ) ; 22 23 i f ( i n f o == 1) 24 p r i n t f ( G l e i c h u n g s s y s t e m g e l o e s t. \ n ) ; 25 p r i n t f ( x = %g \ ny = %g \ nz = %g \ n, x ( 1 ), x ( 2 ), x ( 3 ) ) ; 26 e l s e 27 p r i n t f ( Das G l e i c h u n g s s y s t e m konnte n i c h t g e l o e s t werden! \ n ) ; 28 end 111

3 Erste Schritte mit GNU Octave und Scilab Gewünscht wird eine Interpolation, um folgende Berechnungen durchführen zu können: Welcher magnetische Fluss stellt sich bei einer Feldstärke H = 250Acm 1 ein? Welche Feldstärke ist erforderlich, um einen Fluss von B = 0,8 T hervorzurufen? Bei welchem Paar (H,B) liegt der optimale Arbeitspunkt d.h. der Punkt der Kennlinie, für den B H einen Maximalwert erreicht? Wenn eine Kurve durch n Messwerte gegeben ist, gibt es unterschiedliche Möglichkeiten, Funktionen so aufzustellen, dass alle Messpunkte erfasst werden, z.b.: Ein Polynom vom Grad n 1 Natual Splines. Dabei werden n 1 Polynomstücken zwischen den Messpunkten verwendet. In der Praxis werden häufig Natural Splines verwendet, da ein durchgängiges Polynom hohen Grades meist Oszillationen aufweist. 112

3.6 Beispiele Natural Splines Bei der Verwendung von Natural Splines wird die Gesamtfunktion stückweise aus Polynomen dritten Grades zusammengesetzt. Das Polynom p i (x) = a i (x x i ) 3 + b i (x x i ) 2 + c i (x x i ) + d i beschreibt dabei den Kurvenverlauf zwischen den Punkten i und i+1, d.h. für x-werte mit x i x x i+1. Zwischen n Punkten bestehen n 1 Zwischenräume, somit werden n 1 Polynome benötigt. Da jedes Polynom 4 Koeffizienten aufweist, müssen 4(n 1) Koeffizienten bestimmt werden, hierzu werden 4(n 1) Gleichungen benötigt. Die Gleichungen werden folgendermaßen gewonnen: (a) n 1 Gleichungen (1 i n 1) für den Messwert am linken Polynomrand d i = y i (b) n 1 Gleichungen (1 i n 1) für den Messwert am rechten Polynomrand (x i+1 x i ) 3 a i + (x i+1 x i ) 2 b i + (x i+1 x i )c i + d i = y i+1 (c) n 2 Gleichungen (2 i n 1) aus der folgenden Stetigkeitsbedingung: An den inneren Punkten ist die erste Ableitung des jeweils linken und rechten Polynomes gleich. 3(x i x i 1 ) 2 a i 1 + 2(x i x i 1 )b i 1 + c i 1 = c i 3(x i x i 1 ) 2 a i 1 + 2(x i x i 1 )b i 1 + c i 1 c i = 0 (d) n 2 Gleichungen (2 i n 1) aus der folgenden Stetigkeitsbedingung: An den inneren Punkten ist die zweite Ableitung des jeweils linken und rechten Polynomes gleich. 6(x i x i 1 )a i 1 + 2b i 1 = 2b i 6(x i x i 1 )a i 1 + 2b i 1 2b i = 0 113

3 Erste Schritte mit GNU Octave und Scilab (e) 2 Gleichungen aus der folgenden Stetigkeitsbedingung: An den äußeren Punkten ist die zweite Ableitung des jeweiligen Polynomes 0. 2b 0 = 0 6a n 1 (x n x n+1 ) + 2b n 1 = 0 Natural Splines mit einfachen Polynomen Einige mathematische Probleme sind einfacher zu lösen, wenn ein Ansatz f i (x) = p i x 3 + q i x 2 + r i x + s i anstelle von f i (x) = a i (x x i ) 3 + b i (x x i ) 2 + c i (x x i ) + d i verwendet wird. Durch Ausmultiplizieren und Koeffizientenvergleich erhält man: = a i x 3 + (b i 3a i x i )x 2 + (c i 2b i x i + 3a i xi 2 )x + d i c i x i + b i xi 2 a i xi 3 p i = a i q i = b i 3a i x i r i = c i 2b i x i + 3a i xi 2 s i = d i c i x i + b i xi 2 a i xi 3 114

Installation des nsplines-paketes 3.6 Beispiele Quelltext-Archiv downloaden und entpacken Am Beispiel von nsplines wird gezeigt, wie zusätzliche Bibliotheken bzw. Pakete in GNU Octave und Scilab integriert werden können. Das nsplines-paket wird von http://sourceforge.net/projects/nsplines bezogen. Aus dem Downloadbereich des Projektes wird die Datei nsplines-*.tar.gz mit der höchsten Versionsnummer bezogen. Diese wird mit 1 g z i p dc n s p l i n e s *. t a r. gz t a r xf entpackt. Installationsmöglichkeiten Zusätzliche Funktionsbibliotheken auch selbst erstellte können auf zweierlei Weise installiert werden: als Nutzer root wird eine systemweite Installation vorgenommen, so dass das Paket allen Nutzern zur Verfügung steht oder als normaler Nutzer wird eine Installation für den Eigenbedarf vorgenommen. Eine systemweite Installation wird für fertige Bibliotheken und Pakete empfohlen. Für Eigenentwicklungen insbesondere wenn die Entwicklungsarbeit noch nicht abgeschlossen ist sollte nur eine nutzerspezifische Installation vorgenommen werden. 115

3 Erste Schritte mit GNU Octave und Scilab Systemweite Installation für Octave Die systemweite Installation durch Nutzer root geht in folgenden Schritten vor sich: Das programm GNU Octave wird gestartet. Am Eingabeprompt wird der Befehl 1 DEFAULT_LOADPATH eingeben. Das Programm antwortet, indem es den Pfad ausgibt, der nach Funktionsdateien durchsucht wird. Wird in GNU Octave eine Funktion aufgerufen (d.h. verwendet), die noch nicht definiert ist, sucht das Programm nach einer Datei, deren Dateiname aus dem Funktionsnamen und der Endung.m zusammengesetzt ist. Wird also eine Funktion testfct() aufgerufen, sucht GNU Octave nach einer Datei testfct.m, in der diese Funktion definiert ist. Der Standard-Suchpfad enthält eine Liste von Verzeichnissen, die nach der entsprechenden Datei durchsucht werden. Die einzelnen Verzeichnisse sind durch Doppelpunkte voneinander abgetrennt. Einige Verzeichnisnamen haben am Ende zwei angehängte Slashes, dies bedeutet, dass die Verzeichnisse rekursiv d.h. mit allen Unterverzeichnissen durchsucht werden. Aus der Liste der Verzeichnisse wird ein Verzeichnis ausgewählt, das alle folgenden Merkmale erfüllt: Das Verzeichnis wird rekursiv durchsucht (im Listing hat es zwei Slashes am Ende). Es ist keine GNU Octave Versionsnummer im Namen enthalten. Es ist keine API-Versionsnummer im Namen enthalten. Es ist keine Komponente im Namen enthalten, die auf eine bestimmte Architektur hindeutet. Nach Möglichkeit sollte das Verzeichnis /usr/local/share/octave/site/m bzw. /usr/share/octave/site/m verwendet werden, wenn es in der Liste enthalten ist. Im ausgewählten Verzeichnis wird ein Unterverzeichnis nsplines angelegt. Die Dateien m/*.m aus dem entpackten nsplines-archiv werden in das neue Verzeichnis nsplines kopiert. 116

3.6 Beispiele Nutzer-Installation für Octave Eine nutzerspezifische Installation geht wie folgt vonstatten: Im Home-Verzeichnis wird ein Unterverzeichnis octave für GNU Octave Funktionsdateien angelegt falls noch nicht vorhanden. Wir nehmen einmal an, dass der vollständige Pfadname dieses Verzeichnisses /home/erwin/octave lautet. Im Home-Verzeichnis wird die Datei.octaverc bearbeitet (erstellen, falls noch nicht vorhanden). Es wird eine Zeile 1 LOADPATH= / home / erwin / o c t a v e / / : : ; eingetragen. Der Suchpfad wird jetzt so gesetzt, dass zunächst einmal in /home/erwin/octave gesucht wird. Dieses Verzeichnis wird rekursiv d.h. mit allen Unterverzeichnissen durchsucht ( // ). Ist die Suche in diesem Verzeichnis erfolglos, wird der Standardsuchpfad verwendet ( :: ). Im octave -Verzeichnis wird wiederum ein Unterverzeichnis nsplines angelegt. Die Dateien m/*.m aus dem entpackten nsplines-archiv werden in das neue Verzeichnis nsplines kopiert. 117

3 Erste Schritte mit GNU Octave und Scilab Systemweite Installation für Scilab Sie benötigen root- bzw. Administrator-Rechte. Suchen Sie zunächst das Scilab-Installationsverzeichnis (z.b. C:\Programme\scilab-4.0). Hier finden Sie ein Unterverzeichnis macros. In macros legen Sie ein Unterverzeichnis nsplines an. Aus dem nsplines-quellarchiv kopieren Sie die Dateien sci/*.sci in das soeben angelegte nsplines -Verzeichnis. Starten Sie Scilab. Geben Sie das Kommando 1 g e n l i b ( n s p l i n e s, SCI / macros / n s p l i n e s ) ; ein. Damit wird eine lib -Datei angelegt. Um die Bibliothek zu nutzen, muss sie mit 1 l o a d ( SCI / macros / n s p l i n e s / l i b ) ; geladen werden. Für das automatische Laden der Bibliothek beim Start von Scilab gibt es zwei Möglichkeiten: Der load-befehl wird in die Datei C:\Programme\scilab-4.0\scilab.star geschrieben (hinter den bisherigen Inhalt). Bei jedem Start von Scilab wird nsplines automatisch mit geladen. Dies ist sinnvoll, wenn der überwiegende Teil der Scilab-Benutzer mit nsplines arbeitet. Falls nur einige Scilab-Nutzer mit nsplines arbeiten, können diese den load-befehl in die Datei.scilab in ihrem Homverzeichnis eintragen. Diese Datei enthält Kommandos, die bei jedem Start von Scilab ausgeführt werden. 118

3.6 Beispiele Nutzer-Installation für Scilab Bibliotheken, die sich noch in Entwicklung befinden, sollten nicht in das Scilab- Verzeichnis installiert werden. Ein automatisches Laden für alle Nutzer verbietet sich hier von selbst, da Fehler in den Bibliotheken zu Abbrüchen der Startup-Abläufe führen können. Legen Sie in Ihrem Homeverzeichnis ein Unterverzeichnis scilab an (Sie können selbstverständlich auch einen anderen Namen wählen). Legen Sie ein Unterverzeichnis für jede Bibliothek an. Kopieren Sie die Funktionsdateien für die Bibliothek (die *.sci-dateien, die die Funktionen der Bibliothek enthalten) in das neue Verzeichnis. Im Beispiel würden wir also die sci/*.sci-dateien des nsplines- Quelltextarchives nach c:\erwin\scilab\nsplines 4 bzw. /home/erwin/scilab/nsplines kopieren. In Scilab muss dann die Kommandofolge 1 exec ( c : \ erwin \ s c i l a b \ n s p l i n e s \ n s _ c r e a t e. s c i ) ; 2 exec ( c : \ erwin \ s c i l a b \ n s p l i n e s \ ns_polynom. s c i ) ; 3 exec ( c : \ erwin \ s c i l a b \ n s p l i n e s \ n s _ v a l u e. s c i ) ; 4 exec ( c : \ erwin \ s c i l a b \ n s p l i n e s \ n s _ g p f i l e. s c i ) ; 5 exec ( c : \ erwin \ s c i l a b \ n s p l i n e s \ n s s p _ c r e a t e. s c i ) ; 6 exec ( c : \ erwin \ s c i l a b \ n s p l i n e s \ nssp_polynom. s c i ) ; 7 exec ( c : \ erwin \ s c i l a b \ n s p l i n e s \ n s s p _ v a l u e. s c i ) ; 8 exec ( c : \ erwin \ s c i l a b \ n s p l i n e s \ n s s p _ g p f i l e. s c i ) ; 9 exec ( c : \ erwin \ s c i l a b \ n s p l i n e s \ n s _ n s s p. s c i ) ; Bei der Installation eigener Bibliotheken müssen Sie jeweils alle betreffenden *.sci-dateien aufführen. Die exec-befehle können in der Datei.scilab im Homeverzeichnis eingetragen werden. 4 Als Home-Verzeichnis wurde hier kurzerhand C:\erwin auserkoren, das Verzeichnis C:\Dokumente und Einstellungen\erwin könnte auch genutzt werden. Allerdings würde der lange Verzeichnisname natürlich zu entsprechend langen Dateinamen hier im Beispiel führen, so dass manche Befehle nicht mehr auf eine Zeile passen. 119

3 Erste Schritte mit GNU Octave und Scilab Verwendung des nspline-paketes Das API des Paketes umfasst folgende Funktionen: Eine Funktion ns_create(mw), die einen Satz Punkte in die Polynomsequenz für ein natural spline umwandelt. Die Punkte sind dabei als zweispaltige Matrix gegeben. Die Matrix enthält in jeder Zeile die Daten für einen Punkt der Kurve. Der x-wert steht in Spalte 1, der y-wert in Spalte 2. Optional können noch zwei weitere Spalten vorhanden sein, wenn der Anstieg in den Kurvenpunkten gegeben ist. Ist in Spalte 3 ein positiver Wert (> 0) eingetragen, bedeutet dies, dass Spalte 4 den Anstiegswert im Punkt angibt. Ist in Spalte 4 ein Wert 0 angegeben, wird Spalte 4 ignoriert. Die Funktion gibt eine Matrix mit 6 Spalten zurück, die die Beschreibung für die einzelnen Intervalle i enthält. Jede Zeile enthält die Daten für ein Intervall, die Spalten sind belegt mit x i,start, x i,end, a i, b i, c i und d i. Eine Funktion ns_value(m, x), die den Wert für ein bestimmtes x interpoliert. Das Argument M ist die mit ns_create() erzeugte Matrix. Die Funktion gibt den interpolierten Funktionswert zurück. Eine Funktion ns_gpfile(mw, M, name), die die Messwerte und die Interpolationswerte in eine rudimentäre GnuPlot-Datei mit dem angegebenen Namen (Argument name) schreibt. Funktionen nssp_create(), nssp_value() und nssp_gpfile() analog zu den ns_... ()-Funktionen. Der Unterschied liegt darin, dass hier die Matrix M die Polynomkoeffizienten für einfache Polynome enthält, die Spalten sind also belegt mit x i,start, x i,end, p i, q i, r i und s i. Hinweis: Für Matrizen, die mit ns_create() erzeugt wurden, dürfen nur die ns_... ()-Funktionen verwendet werden. Für Matrizen, die mit nssp_create() erzeugt wurden, dürfen nur die nssp_... ()- Funktionen verwendet werden. Eine Funktion ns_nssp(m), die eine mit ns_create() erzeugte Matrix in eine solche umwandelt, die mit den nssp_... ()-Funktionen verwendet werden kann. 120

3.6 Beispiele Vorüberlegungen zum Beispiel Aus den Messwerten kann ein natural Spline B = f (H) gewonnen werden, die Teilaufgaben werden damit wie folgt gelöst: der Wert B 1 für H 1 = 250Acm 1 kann direkt mittels ns_value() bzw. nssp_value() gewonnen werden. der Wert H 2 für B 2 = f (H 2 ) = 0,8T wird als Nullstelle der Funktion gewonnen. g(h) = f (H) B 2 Der optimale Arbeitspunkt (der den Maximalwert für B H aufweist), ist ein Extremwert, es gilt 0 = d dh (BH) Haben wir den Spline in Form einfacher Polynome gegeben, gilt für jedes Intervall i und somit Es muss also die Nullstelle von BH = p i H 4 + q i H 3 + r i H 2 + s i H d dh (BH) = 4p ih 3 + 3q i H 2 + 2r i H + s i 0 = 4p i H 3 + 3q i H 2 + 2r i H + s i h(h) = 4p i H 3 + 3q i H 2 + 2r i H + s i Die letzte Funktion ist ebenfalls wieder eine Folge von Polynomen dritter Ordnung, wobei die Intervallgrenzen dieselben sind wie die von f (H). Es kann also zur Berechnung der nssp_... ()-Mechanismus genutzt werden. Um die Interpolationsmatrix für h(h) zu erstellen, wird zunächst eine Kopie der Interpolationsmatrix von f (H) erzeugt. In dieser Kopie werden dann alle Werte der dritten Spalte mit 4 multipliziert, alle Werte der vierten Spalte mit 3 und alle Werte der fünften Spalte mit 2. 121

3 Erste Schritte mit GNU Octave und Scilab Lösung für das Beispiel Zunächst wird eine Eingabedatei oe0008.m bzw. oe0008.sce erstellt, siehe Listings 3.10 auf der nächsten Seite und 3.11 auf Seite 124. Die Verarbeitung mit 1 o c t a v e q oe0008.m ergibt 1 Problem 1 i s t g a r zu e i n f a c h : 2 H = 2 5 0. 0 3 B = 1.45149 4 5 Problem 2 e r f o l g r e i c h g e l o e s t : 6 H = 391.629 7 B = 0. 8 8 9 Problem 3 e r f o l g r e i c h g e l o e s t : 10 H = 368.153 11 B = 0.857926 12 BH = 315.848 122

3.6 Beispiele Listing 3.10: oe0008.m 1 mw = [ 525.0 0. 0 2 470.0 0. 5 3 420.0 0. 7 2 4 330.0 0. 9 4 5 220.0 1. 1 2 6 120.0 1. 2 2 7 0. 0 1. 3 ] ; 8 9 g l o b a l M1; 10 M1 = n s s p _ c r e a t e (mw) ; 11 12 g l o b a l M2; 13 M2 = M1; 14 [ r, c ] = s i z e (M2 ) ; 15 f o r i =1: r 16 M2( i, 3 ) = 4. 0 *M2( i, 3 ) ; 17 M2( i, 4 ) = 3. 0 *M2( i, 4 ) ; 18 M2( i, 5 ) = 2. 0 *M2( i, 5 ) ; 19 e n d f o r 20 21 f u n c t i o n back = g (H) 22 g l o b a l M1; 23 back = n s s p _ v a l u e (M1, H) 0. 8 ; 24 e n d f u n c t i o n 25 26 f u n c t i o n back = h (H) 27 g l o b a l M2; 28 back = n s s p _ v a l u e (M2, H ) ; 29 e n d f u n c t i o n 30 31 p r i n t f ( Problem 1 i s t g a r zu e i n f a c h : \ n ) ; 32 p r i n t f ( H = 2 5 0. 0 \ n ) ; 33 p r i n t f ( B = %g \ n, n s s p _ v a l u e (M1, 2 5 0. 0 ) ) ; 34 35 [H, i n f o ] = f s o l v e ( " g ", [ 5 2 5. 0 / 2. 0 ] ) ; 36 i f ( i n f o == 1) 37 p r i n t f ( \ nproblem 2 e r f o l g r e i c h g e l o e s t : \ n ) ; 38 p r i n t f ( H = %g \ n, H ) ; 39 p r i n t f ( B = %g \ n, n s s p _ v a l u e (M1, H ) ) ; 40 e l s e 41 p e r r o r ( " f s o l v e ", i n f o ) ; 42 e n d i f 43 44 [H, i n f o ] = f s o l v e ( " h ", [ 5 2 5. 0 / 2. 0 ] ) ; 45 i f ( i n f o == 1) 123

3 Erste Schritte mit GNU Octave und Scilab 46 p r i n t f ( \ nproblem 3 e r f o l g r e i c h g e l o e s t : \ n ) ; 47 p r i n t f ( H = %g \ n, H ) ; 48 p r i n t f ( B = %g \ n, n s s p _ v a l u e (M1, H ) ) ; 49 p r i n t f ( BH = %g \ n, abs (H* n s s p _ v a l u e (M1,H ) ) ) ; 50 e l s e 51 p e r r o r ( " f s o l v e ", i n f o ) ; 52 e n d i f 1 mw = [ 525.0 0. 0 2 470.0 0. 5 3 420.0 0. 7 2 4 330.0 0. 9 4 5 220.0 1. 1 2 6 120.0 1. 2 2 7 0. 0 1. 3 ] ; 8 9 g l o b a l M1; 10 M1 = n s s p _ c r e a t e (mw) ; 11 12 g l o b a l M2; 13 M2 = M1; 14 [ r, c ] = s i z e (M2 ) ; 15 f o r i =1: r 16 M2( i, 3 ) = 4. 0 *M2( i, 3 ) ; 17 M2( i, 4 ) = 3. 0 *M2( i, 4 ) ; 18 M2( i, 5 ) = 2. 0 *M2( i, 5 ) ; 19 end 20 Listing 3.11: oe0008.sce 21 f u n c t i o n [ back ] = g (H) 22 g l o b a l M1; 23 back = n s s p _ v a l u e (M1, H) 0. 8 ; 24 e n d f u n c t i o n 25 26 f u n c t i o n [ back ] = h (H) 27 g l o b a l M2; 28 back = n s s p _ v a l u e (M2, H ) ; 29 e n d f u n c t i o n 30 31 p r i n t f ( Problem 1 i s t g a r zu e i n f a c h : \ n ) ; 32 p r i n t f ( H = 2 5 0. 0 \ n ) ; 33 p r i n t f ( B = %g \ n, n s s p _ v a l u e (M1, 2 5 0. 0 ) ) ; 34 35 [H, v, i n f o ] = f s o l v e ( [ 5 2 5. 0 / 2. 0 ], g ) ; 36 i f ( i n f o == 1) 37 p r i n t f ( \ nproblem 2 e r f o l g r e i c h g e l o e s t : \ n ) ; 124

3.6 Beispiele 38 p r i n t f ( H = %g \ n, H ) ; 39 p r i n t f ( B = %g \ n, n s s p _ v a l u e (M1, H ) ) ; 40 e l s e 41 p r i n t f ( Das Problem 2 konnte n i c h t g e l o e s t werden! \ n ) ; 42 end 43 44 [H, v, i n f o ] = f s o l v e ( [ 5 2 5. 0 / 2. 0 ], h ) ; 45 i f ( i n f o == 1) 46 p r i n t f ( \ nproblem 3 e r f o l g r e i c h g e l o e s t : \ n ) ; 47 p r i n t f ( H = %g \ n, H ) ; 48 p r i n t f ( B = %g \ n, n s s p _ v a l u e (M1, H ) ) ; 49 p r i n t f ( BH = %g \ n, abs (H* n s s p _ v a l u e (M1,H ) ) ) ; 50 e l s e 51 p r i n t f ( Das Problem 3 konnte n i c h t g e l o e s t werden! \ n ) ; 52 end 125

3 Erste Schritte mit GNU Octave und Scilab 126

4 Maxima 4.1 Installation 4.1.1 Installation unter Windows Das Installationsprogramm kann von http://maxima.sourceforge.net bezogen werden. Das entsprechende Paket heißt WxMaxima. Das Maxima-System besteht aus mehreren Komponenten, u. a. ist eine Komponente für die algebraischen Arbeiten vorhanden und eine weitere für das GUI. Beide Komponenten kommunizieren über das Netzwerk bzw. das virtuelle Loopback-Netzwerk. Diese Kommunikation muss von der Firewall zugelassen werden. Nach der Installation bleiben Sie als Administrator angemeldet und starten Maxima einmal. Wenn Sie mit der Windows-eigenen Firewall arbeiten, werden Sie beim ersten Start von Maxima gefragt, ob Sie eine Firewall-Regel einrichten möchten, um Maxima die Kommunikation zu erlauben. Diese Frage sollten Sie mit ja beantworten. In der Systemsteuerung finden Sie den Unterpunkt Windows-Firewall. Hier können Sie die Firewall-Regel ändern, z. B. in der Liste der Ausnahmen den Zugriff auf wxmaxima nicht allen Computern gestatten sondern nur für eine benutzerdefinierte Liste an Computern. Diese Liste sollte auf alle Fälle das Loopback- Netzwer (d. h. 127.0.0.0/255.255.255.0 ) enthalten sowie die IP-Adresse des Computers (z. B. 192.168.1.33/255.255.255.255 ) falls der Computer über eine statische IP-Adresse verfügt. Da Maxima für graphische Darstellungen das Programm GnuPlot verwendet, muss GnuPlot ebenfalls installiert werden. 4.1.2 Installation unter Linux Maxima kann über die Paketverwaltung installiert werden. Das Programm GnuPlot sollte ebenfalls installiert werden, da es von Maxima für graphische Darstellungen verwendet wird. 4.1.3 Dokumentation Weitere Dokumentation (z. B. ein Handbuch) sind unter http://maxima. sourceforge.net verfügbar. 127

4 Maxima Abbildung 4.1: Hauptfenster von wxmaxima 0.7.6 4.2 Programmstart 4.2.1 Programmstart unter Windows Zum Starten des Programmes kann entweder das wxmaxima Desktop-Icon oder der Startmenü-Eintrag genutzt werden. Beim Programmstart erscheinen Tipps, nachdem diese geschlossen wurden, kann mit der Anwendung gearbeitet werden. wxmaxima 0.7.6 Neben dem üblichen Menü und der Buttonbar enthält das Anwendungsfenster einen Ausgabebereich, eine Eingabezeile und im unteren Bereich ein Feld mit Buttons für bestimmte Aufgaben (siehe Abb. 4.1). 128

4.2 Programmstart Abbildung 4.2: Befehl in der Eingabezeile In der Eingabezeile kann ein Befehl eingeben werden. Mit ENTER wird die Bearbeitung des Befehles veranlasst. Ein eventuell fehlendes Semikolon am Ende des Befehles wird vom GUI automatisch eingefügt. 129

4 Maxima Abbildung 4.3: Ergebnisanzeige Nach der Verarbeitung eines Befehles wird der Befehl mitsamt dem Ergebnis im Ausgabebereich angezeigt. 130

4.2 Programmstart Abbildung 4.4: Hauptfenster von wxmaxima 0.8.1 wxmaxima 0.8.1 Die Nutzeroberfläche von wxmaxima 0.8.1 verhält sich ein wenig anders als die von wxmaxima 0.7.6. Es wird ein Bereich kombiniert für Ein- und Ausgaben genutzt. Werden Tastatureingaben getätigt, startet wxmaxima einen Eingabeblock, der sich durchaus über mehrere Zeilen erstrecken kann. Mit den Cursortasten kann innerhalb des Blockes navigiert werden und es können Korrekturen vorgenommen werden (siehe Abb. 4.5 auf der nächsten Seite). Mit SHIFT-ENTER wird der gesamte Eingabeblock verarbeitet, anschließend werden die Ergebnisse der einzelnen Anweisungen nacheinander angezeigt (siehe Abb. 4.6 auf der nächsten Seite). 131

4 Maxima Abbildung 4.5: Eingabeblock Abbildung 4.6: Nach Verarbeitung des Eingabeblockes 132

4.2 Programmstart Abbildung 4.7: Maxima-Hauptfenster mit Dokumenten-Browser 4.2.2 Programmstart unter Linux In einem Terminalfenster wird 1 xmaxima & eingegeben. Im Terminal erscheinen einige informative Zeilen, anschließend öffnet sich die Anwendung (Abb. 4.7). Das Hauptfenster ist zweigeteilt: oben der Arbeitsbereich, unten der Dokumentenbrowser. 133

4 Maxima Abbildung 4.8: Maxima-Hauptfenster Mit dem Menüpunkt Options Toggle Browser Visibility kann der Dokumentenbrowser ausgeblendet werden, es steht dann das ganze Hauptfenster für den Arbeitsbereich zur Verfügung. 134

4.2 Programmstart Abbildung 4.9: Befehlseingabe Im Hauptfenster können Befehle eingegeben werden (im Beispiel 3+5; ). 135

4 Maxima Abbildung 4.10: Ergebnisanzeige Wird ein Befehl mit ENTER bestätigt, so wird er von Maxima verarbeitet. Nach der Verarbeitung wird das Ergebnis angezeigt. 136

4.3 Verarbeitung von Dateien Abbildung 4.11: Maxima-Neustart 4.3 Verarbeitung von Dateien Mit Maxima können Sie einerseits interaktiv arbeiten, andererseits aber auch Dateien verarbeiten. Das Arbeiten mit Dateien hat den Vorteil, dass auf bereits vorhandene Lösungen bzw. Lösungswege zurückgegriffen werden kann, wenn ein Problem auftaucht, das einem bereits gelösten ähnelt. Dateien müssen die Endung.mac haben bzw..wmx für wxmaxima 0.7.6. Bevor eine Datei eingelesen wird, sollte ein Maxima-Neustart erfolgen, um bereits definierte Variablen und Objekte zu löschen. Andernfalls können beim Anlegen von Objekten Konflikte mit bereits vorhandenen Objekten auftreten. Zum Neustart kann der Menüpunkt Maxima Maxima neustarten verwendet werden (Abb. 4.11). Der Neustart muss in einer Dialogbox nochmals bestätigt werden. 137

4 Maxima Abbildung 4.12: Datei einlesen Anschließend kann mit dem Menüpunkt Datei Datei abarbeiten (0.7.6: Datei Read file ) eine Datei eingelesen werden. Im Beispiel wird eine Datei mit dem Inhalt 1 ( 3 * 5 ) / ( 3 + 5 ) ; eingelesen. Listing 4.1: Kleine Eingabedatei 138

4.3 Verarbeitung von Dateien Abbildung 4.13: Verarbeitung der Datei beendet Bei der Verarbeitung von Dateien wird jeder eingelesene Befehle im Ausgabebereich dargestellt, dabei werden Multiplikationspunkte weggelassen. Den gelesenen Eingaben wird dabei ein in Klammern stehendes Promptzeichen vorangestellt, das aus Prozentzeichen, i (für Input) und einer laufenden Nummer besteht. Nach der Verarbeitung eines Befehles wird das Ergebnis dargestellt, hier besteht das vorangestellte Promptzeichen aus Prozentzeichen, o (für Output) und einer laufenden Nummer. 139

4 Maxima 4.4 Beispiele Abbildung 4.14: Numerische Darstellung 4.4.1 Ergebnis numerisch, nicht als Bruch Wie gerade gesehen, stellt Maxima das Ergebnis als Bruch dar, wenn bei der Berechnung Divisionen auftraten. Soll die Bruchdarstellung unterdrückt werden und stattdessen eine numerische Darstellung erfolgen, muss der Zusatz, numer angegeben werden, z. B. 1 ( 3 * 5 ) / ( 3 + 5 ), numer 140

4.4 Beispiele Abbildung 4.15: Definition einer Funktion 4.4.2 Selbst definierte Funktionen Funktionen werden in der Form Funktionsname(Argumente):=Ausdruck; angegeben. Beispiel: 1 p a r a l l e l ( a, b ) : = ( a *b ) / ( a+b ) ; Diese Funktion kann zur Berechnung des Gesamtwiderstandes zweier parallel geschalteter Widerstände verwendet werden. Die Berechnung kann für 3 und 5 Ω mit 1 p a r a l l e l ( 3, 5 ), numer erfolgen. 141

4 Maxima Abbildung 4.16: Verwendung der Funktion 142

4.4 Beispiele Abbildung 4.17: Zuweisungsoperationen mit Ersetzungen 4.4.3 Zuweisungen mit Werten In Maxima können Variable nicht nur Zahlenwerte, Vektoren und Matrizen sondern auch mathematische Ausdrücke und Gleichungen enthalten. Um Zuweisungsoperationen von Gleichungen zu unterscheiden, wird für die Zuweisung der Doppelpunkt als Operator verwendet. Beispiel: 1 a : 2 ; 2 b : 3 + a ; 3 c : b / 2 ; Werden in Berechnungen Variablen verwendet, denen bereits ein Inhalt zugewiesen wurde, wird in die Berechnung der Variableninhalt eingesetzt. 143

4 Maxima I ges I 3,4,5 I 5 R 1 I 2 I 4 R 3 U q R 2 R 4 R 5 Abbildung 4.18: Beispielschaltung 4.4.4 Zuweisungen mit Unbekannten Für die Beispielschaltung entsprechend Abb. 4.18 mit U q = 10V R 1 = 11Ω R 2 = 12Ω R 3 = 13Ω R 4 = 14Ω R 5 = 15Ω soll I 4 sowohl analytisch als auch wertmäßig ermittelt werden. Für die manuelle Berechnung mit Ersatzschaltbildern würde man folgendermaßen vorgehen: Zusammenfassung R 4 und R 5 R4,5 = R4 R5 = R 4R 5 R 4 + R 5 Zusammenfassung R 3 und R 4,5 R3,4,5 = R3 + R4,5 Zusammenfassung R 2 und R 3,4,5 R 2,3,4,5 = R 2 R 3,4,5 = R 2R 3,4,5 R 2 + R 3,4,5 Zusammenfassung Gesamtwiderstand R ges = R 1 + R 2,3,4,5 144

4.4 Beispiele Berechnung des Gesamtstromes I ges = U q R ges Aufteilung des Gesamtstromes I 3,4,5 = R 2 R 2 + R 3,4,5 I ges Aufteilung von I 3,4,5 I 4 = R 5 R 4 + R 5 I 3,4,5 Bei jedem Schritt müssten die Formeln für die bereits bekannten Größen eingesetzt werden, anschließend müsste gekürzt werden. All diese Schritte können Maxima überlassen werden: 1 p a r a l l e l ( a, b ) : = ( a *b ) / ( a+b ) ; 2 R45 : p a r a l l e l ( R4, R5 ) ; 3 R345 : R3+R45 ; 4 R2345 : p a r a l l e l ( R2, R345 ) ; 5 Rges : R1+R2345 ; 6 I g e s : Uq / Rges ; 7 I345 : I g e s *R2 / ( R2+R345 ) ; 8 I4 : I345 *R5 / ( R4+R5 ) ; Listing 4.2: Einsetzen bekannter Formeln Ist einer Variablen als Inhalt eine Formel hinterlegt, wird diese Formel immer dann eingesetzt, wenn die Variable selbst wiederum in einer Formel zur Berechnung einer anderen Größe angegeben ist. Für I 4 erhalten wir die noch nicht vereinfachte Formel I 4 = U q R 2 R 5 ( ( ) ) R4 ) R (R 5 + R 4 )( R4 R R 5 2 5 R R 4 +R 5 + R 3 + R 4 +R +R 3 5 2 R 4 R 5 + R 1 R 4 +R +R 3 +R 2 5 145

4 Maxima Abbildung 4.19: Ergebnis nach Einsetzen 146

4.4.5 Formeln Vereinfachen 4.4 Beispiele Mit ratsimp(ausdruck); kann ein mathematischer Ausdruck vereinfacht werden. Dabei kann wie auch in Formeln mit %ozahl Bezug auf die Ausgabe eines beliebigen vorherigen Schrittes bzw. mit % Bezug auf das Ergebnis des vorangegangenen Schrittes genommen werden. Mit 1 p a r a l l e l ( a, b ) : = ( a *b ) / ( a+b ) ; 2 R45 : p a r a l l e l ( R4, R5 ) ; 3 R345 : R3+R45 ; 4 R2345 : p a r a l l e l ( R2, R345 ) ; 5 Rges : R1+R2345 ; 6 I g e s : Uq / Rges ; 7 I345 : I g e s *R2 / ( R2+R345 ) ; 8 I4 : I345 *R5 / ( R4+R5 ) ; 9 r a t s i m p (%); Listing 4.3: Vereinfachtes Ergebnis wird die gleiche Berechnung wie im vorangegangenen Abschnitt ausgeführt, im letzten Schritt wird eine Vereinfachung (Entfernung von Mehrfachbrüchen und Kürzen) vorgenommen. Wir erhalten das Ergebnis U q R 2 R 5 I 4 = ((R 2 + R 1 )R 4 + (R 2 + R 1 )R 3 + R 1 R 2 )R 5 + ((R 2 + R 1 )R 3 + R 1 R 2 )R 4 147

4 Maxima Abbildung 4.20: Vereinfachte Formel 148

4.4 Beispiele Abbildung 4.21: Einsetzen von Werten in Formeln 4.4.6 Werte in Formel einsetzen Soll der Wert einer Formel bzw. einer Funktion an einer bestimmten Stelle berechnet werden, wird der Befehl at(ausdruck,parameterliste); verwendet. Dabei erfolgt die Ausgabe als Bruch, wenn nicht explizit eine numerische Ausgabe gefordert wird. 1 p a r a l l e l ( a, b ) : = ( a *b ) / ( a+b ) ; 2 R45 : p a r a l l e l ( R4, R5 ) ; 3 R345 : R3+R45 ; 4 R2345 : p a r a l l e l ( R2, R345 ) ; 5 Rges : R1+R2345 ; 6 I g e s : Uq / Rges ; 7 I345 : I g e s *R2 / ( R2+R345 ) ; 8 I4 : I345 *R5 / ( R4+R5 ) ; 9 r a t s i m p (%); Listing 4.4: Einsetzen von Werten in Formeln 10 a t ( I4, [ Uq=10, R1=11, R2=12, R3=13, R4=14, R5 = 1 5 ] ) ; 11 a t ( I4, [ Uq=10, R1=11, R2=12, R3=13, R4=14, R5 = 1 5 ] ), numer ; 149

4 Maxima Wir erhalten I 4 = 0,1039A 150

4.4 Beispiele R 1 R 3 U q R 2 R4 R 5 I A I B I C Abbildung 4.22: Maschenströme 4.4.7 Lineare Gleichungssysteme Die Aufgabenstellung aus Abschnitt 4.4.4 auf Seite 144 kann auch einfacher gelöst werden, z. B. mit dem Maschenstromverfahren. Hierbei wird ein lineares Gleichungssystem aus 3 Gleichungen mit 3 Unbekannten (den Maschenströmen I A, I B und I C ) aufgestellt und gelöst, der Strom I 4 ergibt sich dann als I 4 = I B I C Listing 4.5: Lineares Gleichungssystem 1 g l 1 : 0 = IA *(R1+R2 ) IB*R2 Uq ; 2 g l 2 : 0 = IB *(R2+R3+R4 ) IA*R2 IC*R4 ; 3 g l 3 : 0 = IC *(R4+R5 ) IB*R4 ; 4 s o l v e ( [ gl1, gl2, g l 3 ], [ IA, IB, IC ] ) ; Mit dem solve()-befehl werden die Lösungen des Gleichungssystemes nur angezeigt, die Lösungsformeln werden aber nicht in globale Variablen übernommen. Mit 1 g l o b a l s o l v e : t r u e wird ein Flag globalsolve gesetzt, das veranlasst, dass für die Lösungen von solve() entsprechende globale Variablen erzeugt werden, deren Inhalt das Gleichungssystem löst. Listing 4.6: Lineares Gleichungssystem 1 g l 1 : 0 = IA *(R1+R2 ) IB*R2 Uq ; 2 g l 2 : 0 = IB *(R2+R3+R4 ) IA*R2 IC*R4 ; 3 g l 3 : 0 = IC *(R4+R5 ) IB*R4 ; 4 g l o b a l s o l v e : t r u e ; 5 s o l v e ( [ gl1, gl2, g l 3 ], [ IA, IB, IC ] ) ; 6 I4 : r a t s i m p ( IB IC ) ; 7 a t ( I4, [ Uq=10, R1=11, R2=12, R3=13, R4=14, R5 = 1 5 ] ), numer ; 151

4 Maxima Abbildung 4.23: Lineares Gleichungssystem gelöst 152

4.4 Beispiele 4.4.8 Differenzieren Abbildung 4.24: Differenzieren Zum Differenzieren einer Funktion kann diff(ausdruck,variable); verwendet werden. Der Ausdruck wird nach der angegebenen Variablen differenziert. Im Beispiel fließt ein sinusförmiger Wechselstrom durch eine Spule. Gesucht ist die über der Spule abfallende Spannung. i(t) = I max sinωt u L = L di dt = LωI max cosωt 1 i : Imax* s i n ( omega* t ) ; 2 u : L* d i f f ( i, t ) ; Listing 4.7: Spannungsabfall über einer Spule 153

4 Maxima 4.4.9 Integrieren Abbildung 4.25: Spannung über einem Kondensator Zum Integrieren dient integrate(ausdruck,variable); Damit wird versucht, den Ausdruck nach der angegebenen Variable zu integrieren. Falls Maxima das Integral nicht lösen kann, wird die noun-form integrate(ausdruck,variable) als Ergebnis zurückgegeben. Im Beispiel fließt ein sinusförmiger Wechselstrom durch einen Kondensator. Die Kondensatorspannung kan mit i(t) = I max sinωt u C (t) = 1 i(t)dt C = I max ωc cosωt errechnet werden. 1 i : Imax * s i n ( omega* t ) ; 2 u : 1 /C * i n t e g r a t e ( i, t ) ; Listing 4.8: Spannung über Kondensator 154

4.4 Beispiele R 1 i i 2 i C U q C R 2 Abbildung 4.26: Umladevorgang 4.4.10 Differentialgleichungen Für eine Schaltung entsprechend Abb. 4.26 sei der Schalter lange genug geöffnet, so dass der Kondensator auf u C = U q aufgeladen ist. Zum Zeitpunkt t 0 = 0 wird der Schalter geschlossen. Gesucht ist der zeitliche Verlauf u C (t). Aus den Grundlagen der Elektrotechnik ist bekannt, dass für diese Umladung gilt: U End = R 2 R 1 + R 2 U q u C (t) = U End ( U End U q ) e t/τ τ = R 1R 2 C R 1 + R 2 Endwert der Kondensatorspannung Ist diese Lösung nicht bereits bekannt, kann man Gleichungen aufstellen: i(t) = i 2 (t) + i C (t) i(t) = U q u C (t) R 1 i 2 (t) = u C(t) R 2 i C (t) = C du C dt 155

4 Maxima Werden alle diese Gleichungen ineinander eingesetzt, ergibt sich: U q u C (t) R 1 = u C(t) R 2 +C du C dt Dies kann umgeformt werden zu Der Ansatz 0 = R 1 R 2 C du C dt + (R 1 + R 2 )u C (t) U q R 2 u C (t) = U A e t/τ +U B du C dt ergibt beim Einsetzen = U A τ e t/τ 0 = U A τ R 1R 2 Ce t/τ + (R 1 + R 2 )U A e t/τ + (R 1 + R 2 )U B R 2 U q Durch Koeffizientenvergleich erhalten wir Daraus ergibt sich 0 = R 1R 2 C + R 1 + R 2 τ 0 = (R 1 + R 2 )U B R 2 U q τ = R 1R 2 C R 1 + R 2 U B = R 2 R 1 + R 2 U q U A muss aus den Randwerten bestimmt werden: u C (t 0 ) = U q U q = U A + R 2 R 1 + R 2 U q U A = U q R 2 R 1 + R 2 U q = R 1 R 1 + R 2 U q Somit ergibt sich als Gesamtlösung u C (t) = R 1 U q e t(r 1 +R 2 ) R 1 R 2C + R 2 U q R 1 + R 2 R 1 + R 2 156

4.4 Beispiele Wird Maxima verwendet, kann die Gleichung U q u C (t) R 1 = u C(t) R 2 +C du C dt mit dem Befehl ode2(differentialgleichung, y-variable, x-variable); gelöst werden. Dabei ist Differentialgleichung die zu lösende Gleichung, y-variable gibt an, welche Variable abgeleitet wurde und x-variable gibt an, nach welcher Variable die Ableitung erfolgte. Für du C dt ist die y-variable u C (t) und die x-variable t. Nach dem Finden der allgemeinen Lösung können mit ic1(lösungsgleichung, x-position, y-wert); bekannte Randwerte eingesetzt werden, um ggf. weitere Konstanten zu bestimmen. Im Beispiel wird angegeben, dass zum Zeitpunkt t = 0 gilt u C = U q. Listing 4.9: Lösung einer Differentialgleichung 1 g l : ( Uq uc ) / R1=uc / R2+C* d i f f ( uc, t ) ; 2 l s g : ode2 ( gl, uc, t ) ; 3 rwp : i c 1 ( l s g, t =0, uc=uq ) ; Maxima findet hier die Lösung: u C (t) = e t R 2 C (R 2 U q e t R 2 C + t R 1C + R 1 U q ) (R 1 + R 2 )e t R 1 C Einige einfache Umformungen zeigen, dass diese Lösung identisch zu der manuell gefundenen Lösung ist. 157

4 Maxima Abbildung 4.27: Lösung einer Differentialgleichung 158

4.4 Beispiele 4.4.11 Analyse eines Bandpasses R 1 C 2 U 1 C 1 R 2 U 2 Abbildung 4.28: Bandpass Aufgabenstellung Für den Bandpass entsprechend Abb. 4.28 mit R 1 = R 2 = 1kΩ und C 1 = C 2 = 10nF sind folgende Größen gesucht: G m Maximalwert (betragsmäßig) des Amplitudenganges. ω m Kreisfrequenz, bei der der Maximalwert auftritt. ω g,u ω g,o untere und obere Grenzfrequenz. Allgemeines Vorgehen Bei den Berechnungen am Bandpass wird folgendermaßen vorgegangen: Aus der Übertragungsfunktion G(jω) wird der Amplitudengang bestimmt. G(ω) = G(jω) Es wird das Maximum des Amplitudenganges G m gesucht und die Kreisfrequenz ω m, bei der das Maximum auftritt. An der Extremwertstelle muss gelten: dg dω = 0 ω=ωm 159

4 Maxima Wenn das Maximum des Amplitundenganges ermittelt ist, gilt für den Amplitudengang bei der Grenzfrequenz G g = G(ω) ω=ωg = 1 2 G m Zur Vereinfachung der weiteren Berechnungen wird eine Normierung der Frequenz ω auf die Maximums-Kreisfrequenz ω m vorgenommen. ω = x ω m g(x) = G(xω m ) = G(jxω m ) Um die Grenz-Kreisfrequenz ω g zu finden, muss die Nullstelle der Funktion gefunden werden. f (x) = g(x) G g Berechnung Da für das Netzwerk R 1 = R 2 und C 1 = C 2 vorgegeben ist, wird gleich R 1 = R 2 = R und C 1 = C 2 = C eingesetzt, um die Berechnungen zu vereinfachen. Die Eingabesprache von Maxima erfordert die Angabe von Bezeichnern (Namen) für Objekte, für diese Variablennamen gelten die in Programmiersprachen üblichen Regeln. Folgende Namen werden verwendet: ω w R R Z C ZC G G G m Gm G = G ag ω m wm Die Eingabedatei setzt sich folgendermaßen zusammen: dg dω dag Zunächst wird eine Funktion zur Berechnung des Gesamtwiderstandes einer Parallelschaltung zweier Widerstände definiert. 1 p a r a ( a, b ) : = ( a *b ) / ( a+b ) ; a b = a b a + b 160

4.4 Beispiele Abbildung 4.29: Screenshot 1 Anschließend wird ein Berechnungsterm für Z C angegeben und als Variable ZC gespeichert. Z C = 1 jωc 2 ZC : 1. 0 / ( % i *w*c ) ; Wird das Symbol ZC in nachfolgenden Formeln verwendet, wird automatisch der Berechnungsterm anstelle des ZC eingesetzt. In der Variablen G wird der Berechnungsterm für die Spannungsübertragungsfunction G(jω) gespeichert. G(jω) = Z C (R + Z C ) R + Z C (R + Z C ) R R + Z C 3 G: ( p a r a (ZC, ZC+R ) ) * ( R ) / ( ( R+ p a r a (ZC, ZC+R ) ) * ( R+ZC ) ) ; Die Formel nach Einsetzung der Berechnungsterme für Z C und die Parallelschaltung wird als Ausgabe %o4 angezeigt, siehe Abb. 4.29. 161

4 Maxima Abbildung 4.30: Screenshot 2 In der Variablen ag wird ein Berechnungsterm für G hinterlegt. Es wird angefordert, dass vor der Betragsbildung noch eine Vereinfachung erfolgen soll. 4 ag : abs ( r a t s i m p (G ) ) ; G(ω) = G(jω) Die Formel für die Berechnung des Betrages wird als Ausgabe %o5 angezeigt, siehe Abb. 4.30. ω 5 C 5 R 5 2 (ω 3 C 3 R 3 7ωCR) 2 +(2 5ω 2 C 2 R 2 ) 2 3ω 3 C 3 R 3 (ω 3 C 3 R 3 7ωCR) 2 +(2 5ω 2 C 2 R 2 ) 2 G(ω) = 4ωCR + (ω 3 C 3 R 3 7ωCR) 2 +(2 5ω 2 C 2 R 2 ) 2 3ω 4 C 4 R 4 2 (ω + 3 C 3 R 3 7ωCR) 2 +(2 5ω 2 C 2 R 2 ) 2 12ω + 2 C 2 R 2 (ω 3 C 3 R 3 7ωCR) 2 +(2 5ω 2 C 2 R 2 ) 2 ( ω 5 C 5 R 5 3ω 3 C 3 R 3 + 4ωCR) 2 + (3ω 4 C 4 R 4 + 12ω 2 C 2 R 2 ) 2 = (ω 3 C 3 R 3 7ωCR) 2 + (2 5ω 2 C 2 R 2 ) 2 162

4.4 Beispiele Abbildung 4.31: Screenshot 3 In dag wird die Ableitung des Betrages nach der Kreisfrequenz hinterlegt. 5 dag : r a t s i m p ( d i f f ( ag, w ) ) ; Die Formel wird als Ausgabe %o6 angezeigt. In gl01 wird eine Gleichung hinterlegt, die die Ableitung auf 0 setzt. 6 gl01 : dag = 0 ; Die Ausgabe %o7 zeigt die Gleichung an. Es wird nach einem ω gesucht, das diese Gleichung löst. 7 s o l v e ( gl01, w ) ; Da die zu lösende Gleichung Polynome höherer Ordnung enthält, existieren aus mathematischer Sicht mehrere Lösungen, siehe Ausgabe %o8 in Abb. 4.31. Davon ist technisch nur eine Lösung ω m = 1 RC sinnvoll, da ω m einen positiven reellen Wert haben muss. 8 wm: 1 / ( R*C ) ; 163

4 Maxima Abbildung 4.32: Screenshot 4 Die gefundene Lösung wird nun verwendet, um den Wert von G an der Stelle ω m zu berechnen. 9 Gm: a t ( ag, w=wm) ; Es ergibt sich (Ausgabe %o10): G m = G(jω) ω=ωm G m = 1 3 Bei der Grenzfrequenz muss die Amplitude auf den 1/ 2-fachen Wert des Maximalwertes abfallen. 10 Gg : Gm/ s q r t ( 2 ) ; G g = 1 2 G m = 1 3 2 Die in %o5 erhaltene Formel ( ω 5 C 5 R 5 3ω 3 C 3 R 3 + 4ωCR) 2 + (3ω 4 C 4 R 4 + 12ω 2 C 2 R 2 ) 2 G(ω) = (ω 3 C 3 R 3 7ωCR) 2 + (2 5ω 2 C 2 R 2 ) 2 164

4.4 Beispiele wird mit ω = x ω m bzw. x = ω ω m normiert zu g(x) = G(x ω m ) ( x 5 3x 3 + 4x) 2 + (3x 4 + 12x 2 ) 2 = (x 3 7x) 2 + (2 5x 2 ) 2 11 g ( x ) : = s q r t (( x**5 3*x **3+4* x )**2+(3* x **4+12* x * * 2 ) * * 2 ) 12 / ( ( x**3 7*x )**2+(2 5* x * * 2 ) * * 2 ) ; Die Funktion f (x) = g(x) G g wird eingegeben. 13 f ( x ) : = g ( x) Gg ; 165

4 Maxima Abbildung 4.33: Screenshot 5 Die Grenz-Kreisfrequenzen können aus den Nullstellen x g,u und x g,o mit den Formeln ω g,u = x g,u ω m und ω g,o = x g,o ω m berechnet werden. Für die der unteren bzw. oberen Grenzfrequenz entsprechenden Nullstellen muss gelten: 0 < x g,u < 1 1 < x g,o Diese beiden Nullstellen werden numerisch gesucht, dabei wird jeweils eine linke und eine rechte Grenze für den Suchbereich vorgegeben. 14 f i n d _ r o o t ( f ( x ), x, 0, 1 ) ; 15 f i n d _ r o o t ( f ( x ), x, 1, 1 0 0 0 ) ; Die Ausgaben %o14 und %o15 zeigen die gefundenen Nullstellen. Zur Probe wird nochmals 1/3 2 berechnet und mit den Werten g(x g,u ) und g(x g,o ) verglichen. 16 1 / ( 3 * s q r t ( 2 ) ), numer ; 17 a t ( ag, w=0.30277563773199*wm), numer ; 18 a t ( ag, w=3.302775637731996*wm), numer ; 166

4.4 Beispiele Somit gilt für diesen Bandpass: ω m = 1 RC f m = 1 2πRC ω g,u = 0,303 RC f g,u = 0,303 2πRC ω g,o = 3,303 RC f g,o = 3,303 2πRC Mit der Datei bp.wxm können die Berechnungen nachvollzogen werden: 1 p a r a ( a, b ) : = ( a *b ) / ( a+b ) ; 2 ZC : 1. 0 / ( % i *w*c ) ; 3 G: ( p a r a (ZC, ZC+R ) ) * ( R ) / ( ( R+ p a r a (ZC, ZC+R ) ) * ( R+ZC ) ) ; 4 ag : abs ( r a t s i m p (G ) ) ; 5 dag : r a t s i m p ( d i f f ( ag, w ) ) ; 6 gl01 : dag = 0 ; 7 s o l v e ( gl01, w ) ; 8 wm: 1 / ( R*C ) ; 9 Gm: a t ( ag, w=wm) ; 10 Gg : Gm/ s q r t ( 2 ) ; 11 g ( x ) : = s q r t (( x**5 3*x **3+4* x )**2+(3* x **4+12* x * * 2 ) * * 2 ) 12 / ( ( x**3 7*x )**2+(2 5* x * * 2 ) * * 2 ) ; 13 f ( x ) : = g ( x) Gg ; 14 f i n d _ r o o t ( f ( x ), x, 0, 1 ) ; 15 f i n d _ r o o t ( f ( x ), x, 1, 1 0 0 0 ) ; 16 1 / ( 3 * s q r t ( 2 ) ), numer ; 17 a t ( ag, w=0.30277563773199*wm), numer ; 18 a t ( ag, w=3.302775637731996*wm), numer ; 19 log10 ( x ) : = l o g ( x ) / l o g ( 1 0. 0 ) ; 20 p l o t 2 d (20* log10 ( g ( x ) ), [ x, 0. 0 0 1, 1 0 0 0 ], 21 [ g n u p l o t _ p r e a m b l e, " s e t l o g s c a l e x ; " ], 22 [ x l a b e l, " f / f_g " ], 23 [ y l a b e l, " G( f ) / db " ] 24 ) ; Die plot2d-anweisung erfordert, dass GnuPlot installiert und die Umgebungsvariable PATH entsprechend gesetzt ist. Ist GnuPlot nicht vorhanden, muss die plot2d- Anweisung (die letzten 5 Zeilen) entfernt werden. 167

4 Maxima Abbildung 4.34: Bodediagramm 168

A Anhang A.1 PDF-Attachments abspeichern Um Dateianlagen aus PDF-Dateien abzuspeichern, gehen Sie folgendermaßen vor: Klicken Sie am linken Rand des Adobe-Reader-Fensters auf den Reiter Anlagen Markieren Sie die gewünschte Datei. Mit einem Klick auf die rechte Maustaste gelangen Sie in das Kontextmenü, hier wählen Sie Anlage speichern.... 169

A Anhang 170

A.2 Zugriffsrechte auf C:\Cygwin unter Windows setzen Abbildung A.1: Kontextmenü Eigenschaften A.2 Zugriffsrechte auf C:\Cygwin unter Windows setzen Markieren Sie das Verzeichnis C:\Cygwin (auf meinem PC habe ich die Installation nach C:\P\Cygwin vorgenommen), klicken Sie mit der rechten Maustaste und wählen Sie im Kontextmenü Eigenschaften, siehe Abb. A.1. 171

A Anhang Abbildung A.2: Spezielle Berechtigungen bearbeiten In der Liste Gruppen oder Benutzernamen markieren Sie Benutzer, um die Berechtigungen anzuzeigen, die jeder beliebige Nutzer hat, der auf Ihrem PC eingerichtet ist. Zusätzlich zu den akzeptablen Lese- und Ausführungsrechten sind für diesen Nutzerkreis spezielle Berechtigungen vorgesehen (Abb. A.2). Diese können mit dem Button Erweitert bearbeitet werden. 172

A.2 Zugriffsrechte auf C:\Cygwin unter Windows setzen Abbildung A.3: Erben deaktivieren Um die geerbten Berechtigungen ändern zu können, muss zunächst einmal das Erben deaktiviert werden, siehe Abb. A.3. 173

A Anhang Abbildung A.4: Kopie der bisher geerbten Berechtigungen verwenden Als Basis für neue Berechtigungen werden zunächst einmal die bisher ererbten Berechtigungen verwendet, siehe Abb. A.4. Die bisher geerbten Berechtigungen werden zum aktuellen Verzeichnis kopiert. 174

A.2 Zugriffsrechte auf C:\Cygwin unter Windows setzen Abbildung A.5: Berechtigungen löschen Die speziellen Berechtigungen der Gruppe Benutzer können angezeigt werden, indem ein Doppelklick auf den Listeneintrag ausgeführt wird. Dies ist hier nicht dargestellt. Zum Löschen wird der Listeneintrag markiert und der Button Entfernen verwendet, siehe Abb. A.5. 175

A Anhang Abbildung A.6: Bearbeitete Berechtigungen bestätigen Die geänderten Berechtigungen werden mit OK bestätigt, siehe Abb. A.6. 176

A.2 Zugriffsrechte auf C:\Cygwin unter Windows setzen Abbildung A.7: Vollzugriff für Administratoren und System Für Administrator, Administratoren und SYSTEM wird überprüft, dass Vollzugriff möglich ist. Falls noch nicht vorhanden, wird Vollzugriff eingestellt, siehe Abb. A.7. Die Berechtigungen werden mit OK bestätigt. 177

A Anhang Abbildung A.8: Berechtigungen auf tmp bearbeiten Nun müssen noch die Berechtigungen auf C:\Cygwin\tmp gesetzt werden, siehe Abb. A.8. Hinweis: Falls Sie alleiniger Nutzer Ihres PC sind, setzen Sie hier die Berechtigung für Nutzer INTERAKTIV auf Vollzugriff um das Verfahren abzukürzen. Andernfalls sind die nachfolgenden Schritte erforderlich. Markieren Sie das Verzeichnis C:\Cygwin\tmp, aus dem Kontextmenü (rechte Maustaste) wählen Sie Eigenschaften, siehe Abb. A.8. 178

A.2 Zugriffsrechte auf C:\Cygwin unter Windows setzen Abbildung A.9: Weitere Berechtigungen hinzufügen Mit dem Button Hinzufügen können Sie weitere Berechtigungen erstellen, siehe Abb. A.9. 179

A Anhang Abbildung A.10: Namen INTERAKTIV eingeben Abbildung A.11: NT-Rolle INTERAKTIV auswählen Geben Sie den Namen ein, für den neue Berechtigungen hinzugefügt werden sollen ( INTERAKTIV ), siehe Abb. A.10. Möglicherweise sind mehrere Benutzer, Gruppen oder Rollen auf dem PC vorhanden, die INTERAKTIV im Namen haben. In diesem Fall erscheint ein Auswahlfenster, siehe Abb. A.11. Hier doppelklicken Sie INTERAKTIV. 180

A.2 Zugriffsrechte auf C:\Cygwin unter Windows setzen Abbildung A.12: Berechtigungen zum Lesen und Ausführen erteilen Für den Benutzer INTERAKTIV werden zunächst Berechtigungen zum Lesen und Ausführen eingerichtet, diese werden mit dem Button Übernehmen aktiviert, siehe Abb. A.12. 181

A Anhang Abbildung A.13: Zusätzliche spezielle Berechtigungen einrichten Mit dem Button Erweitert werden spezielle Berechtigungen eingerichtet, siehe Abb. A.13. 182

A.2 Zugriffsrechte auf C:\Cygwin unter Windows setzen Abbildung A.14: Weitere Berechtigungen erteilen Mit dem Button Hinzufügen können weitere Berechtigungen erteilt werden, siehe Abb. A.14. Zunächst wird wieder gefragt, für welchen Nutzer Zugriffsrechte festgelegt werden sollen, hier wird INTERAKTIV eingegeben. In der Auswahlliste wird INTERAKTIV mit Doppelklick ausgewählt, siehe Abb. A.10 auf Seite 180 und A.11 auf Seite 180. 183

A Anhang Abbildung A.15: Berechtigungen auswählen In der Auswahlliste der Berechtigungen werden Dateien erstellen / Daten schreiben und Ordner erstellen / Daten anhängen markiert und mit OK übernommen, siehe Abb. A.15. 184

A.2 Zugriffsrechte auf C:\Cygwin unter Windows setzen Abbildung A.16: Berechtigungen einmal bestätigen... Zurück in der Auflistung aller Berechtigungen bestätigen Sie die Änderungen nochmals mit OK, siehe Abb. A.16. 185