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.

Wikipedia hat einen Artikel zum Thema:


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

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

Ausgabe:  

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:

 

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.)

Ausgabe:  

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.