Ing Mathematik: Funktionenplotter am Beispiel von Gnuplot
Einleitung Bearbeiten
Was 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 Bearbeiten
Laden 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 Bearbeiten
Quelldateien Bearbeiten
Geben 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 Bearbeiten
Kommentare 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 Bearbeiten
a = 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 Bearbeiten
reset; x = 1 if (x > 2) { print("IF") } else { print("ELSE) }
In diesem Fall wird "ELSE" geschrieben.
Schleifen Bearbeiten
reset; 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 Bearbeiten
2D Bearbeiten
Gnuplot als Funktionenplotter Bearbeiten
Explizite Darstellung Bearbeiten
plot 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 Bearbeiten
Gezeichnet 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 Bearbeiten
Multiplot 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 Bearbeiten
Datei 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 Bearbeiten
Eine 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 Bearbeiten
Dies 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.