Ing Mathematik: Funktionenplotter am Beispiel von Gnuplot
Einleitung
BearbeitenWas ist Gnuplot?
Bearbeiten- Gnuplot ist ein Funktionen- und Datenplotter.
- Gnuplot ist Open-Source.
- Gnuplot ist für viele Betriebssysteme verfügbar (z.B. Linux, MS Windows, macOS).
- Gnuplot ist ein Interpreter.
- Gnuplot als Programmiersprache ist case-sensitiv, d.h. Groß- und Kleinschreibung ist relevant bei der Eingabe von Befehlen.
Der folgende Text bezieht sich auf die Gnuplot-Version 5.2 patchlevel 8. Getestet wurden die Programme unter dem Betriebssystem MS Windows 10.
Installation von Gnuplot
BearbeitenLaden Sie die aktuelle Gnuplot-Version für MS Windows von der Website [1] herunter. Starten Sie das Installationsprogramm und führen Sie die Setup-Prozedur durch.
Ein erstes einfaches Beispiel
BearbeitenÖffnen Sie die grafische Benutzeroberfläche von Gnuplot (wgnuplot.exe). Es erscheint folgendes Fenster:
"gnuplot>" ist der Prompt. Hier können Sie ihre Befehle eintippen. Als erstes Beispiel wollen wir den Grafen der Funktion zeichnen:
gnuplot> plot cos(x**2)
Als Ausgabe erhalten wir folgenden Plot:
Hilfe erhält man durch Eingabe von help und der gesuchten Funktion, also z.B.
help cos
Es öffnet sich ein Hilfefenster mit Informationen zur gesuchten Funktion.
The cos(x) function returns the cosine of its argument. cos accepts its argument in radians or degrees, as selected by set angles.
Gnuplot als Skriptsprache
BearbeitenQuelldateien
BearbeitenGeben Sie folgenden Befehl in einen Texteditor Ihrer Wahl ein:
plot cos(x**2)
Wir speichern dieses "Hauptprogramm" unter dem Dateinamen "c:/tmp/test1.plt".
Aufrufen können wir dieses Programm in wgnuplot mittels Menü, und zwar via File -> Open. Es erscheint ein Dateidialogfenster, in dem Sie die gewünschte Datei auswählen können. Es wird wieder ein Funktionsgraf geplottet. Alternativ können Sie auch
gnuplot> load 'c:/tmp/test1.plt'
in das Konsolenfenster eintippen. Statt Hochkommatas (') können sie auch Anführungszeichen (") verwenden. Wird nicht anderes gesagt, so sei im Folgenden "c:/tmp/test1.plt" immer der Speicherort.
Kommentare
BearbeitenKommentare werden in Gnuplot mittels Hashtag (#) eingeleitet.
# Dies ist ein Kommentar
Hallo Welt
Bearbeiten# Hallo Welt print "Hallo, Welt"
Ausgabe:
Hallo, Welt
Integer vs. Real
Bearbeiten# Integer print 5/2 # Real print 5.0 / 2.0 print 5 / 2. print 5. / 2
Ausgabe:
2 2.5 2.5 2.5
Wie man sieht, ist das Ergebnis nur dann korrekt, wenn zumindest eine Zahl als Real eingegeben wird.
Funktionen
Bearbeitena = 2 f(x) = a * sin(x) plot f(x)
Als Ausgabe ergibt sich eine Sinusfunktion. Da sie allgemein bekannt ist, wird sie hier nicht dargestellt. Die "plot"-Funktion zeichnet den Funktionsgrafen. Näheres dazu später.
Verzweigungen
Bearbeitenreset; x = 1 if (x > 2) { print("IF") } else { print("ELSE) }
In diesem Fall wird "ELSE" geschrieben.
Schleifen
Bearbeitenreset; do for [x = 1 : 10 : 2] { print x }
Ausgabe:
1 3 5 7 9
Im Schleifenkopf wird also von 1 bis 10 gezählt. Die Schrittweite ist 2.
Grafiken
Bearbeiten2D
BearbeitenGnuplot als Funktionenplotter
BearbeitenExplizite Darstellung
Bearbeitenplot sin(x) title 'Sinus', cos(x) title 'Cosinus', tan(x) title 'Tangens'
Ausgabe:
Nachfolgend ist :
plot [-5:5] sin(x) title 'Sinus', cos(x) title 'Cosinus', tan(x) title 'Tangens'
Ausgabe:
Alternativ kann man diesen Befehl auch so eingeben:
reset set xrange [-5:5] plot sin(x) title 'Sinus', cos(x) title 'Cosinus', tan(x) title 'Tangens'
Parameterdarstellung
BearbeitenGezeichnet werden soll eine Zykloide , mit r = 2, c = 3. Die Linienstärke soll 2 betragen.
reset; set parametric plot 2*t - 3*sin(t) , 2- 3*cos(t) lw 2
Multiplot
BearbeitenMultiplot ist ähnlich zu subplot in Octave:
reset set multiplot set size 0.5,1.0 set origin 0.0,0.0 plot sin(x) set origin 0.5,0.0 plot tan(x) unset multiplot
Ausgabe:
Gnuplot als Datenplotter
BearbeitenDatei c:/tmp/daten.dat:
# Datei c:/tmp/daten.dat 1 2 5 2 3 6 3 5 7 3.5 10 8 4 12 9 4.5 21 11
Datei c:/tmp/test1.plt:
plot "c:/tmp/daten.dat" using 1:2 title 'A', \ "c:/tmp/daten.dat" using 1:3 title 'B'
Der Backslash (\) ist das Zeilenfortsetzungszeichen. Wenn ein Befehl zu lang wird, kann man ihn so umbrechen. Nach dem Backslash soll kein Leerzeichen folgen!
Ausgabe:
3D
BearbeitenEine einfache 3D-Fläche:
reset set autoscale splot sin(x) + cos(y/2.)
Ausgabe:
"reset" setzt die Einstellungen auf den Standard zurück.
Das Ganze mit "hidden3d":
reset set autoscale set hidden3d splot sin(x) + cos(y/2.)
Ausgabe:
Und nochmal mit "isosamples":
reset; set hidden3d set isosamples 40 splot sin(x) + sin(y/2.)
Mit "contour base":
reset; set hidden3d set isosamples 40 set contour base splot sin(x) + sin(y/2.)
Ausgabe:
Mit "pm3d"
reset; set hidden3d set isosamples 100 set pm3d unset contour splot sin(x) + sin(y/2.)
Ausgabe:
Ein komplexeres Beispiel ist folgendes (wurde mit kleinen Änderungen von Wikimedia Commons entnommen, Autor: Tttrung, Lizenz: GNU Free Documentation License und Creative Commons Attribution-Share Alike):
x(u,v)= v<pi ? (2.5-1.5*cos(v))*cos(u): \ v<2*pi ? (2.5-1.5*cos(v))*cos(u):\ v<3*pi ? -2+(2+cos(u))*cos(v): -2+2*cos(v)-cos(u) y(u,v)= v<pi ? (2.5-1.5*cos(v))*sin(u): \ v<2*pi ? (2.5-1.5*cos(v))*sin(u): \ v<3*pi ? sin(u): sin(u) z(u,v)= v<pi ? -2.5*sin(v): v < 2*pi ? 3*v-3*pi:\ v<3*pi ? (2+cos(u))*sin(v)+3*pi: -3*v+12*pi reset set parametric set pm3d explicit set pal rgb 9,9,3 unset colorbox unset key unset border unset xtics unset ytics unset ztics set hidden3d set surface set ticslevel 0 set size square set view 60,210,1.5,1 set isosamples 18,48 set xrange[-8:10] set yrange[-9:9] set urange[0:2*pi] set vrange[0:4*pi] set multiplot splot x(u,v),y(u,v),-z(u,v) w pm3d splot x(u,v),y(u,v),-z(u,v) lt 4 unset multiplot
Ausgabe:
Ausblick
BearbeitenDies war eine kurze Einführung in das Zeichnen mit Gnuplot. Gnuplot kennt noch viel mehr Befehle, als hier dargestellt wurden. Es sollten aber ein paar relevante Themen behandelt, oder zumindest kurz angesprochen worden sein. Für weiterführende Studien siehe insbesondere die Gnuplot-Hilfefunktion.