Zum Inhalt springen

Ing Mathematik: Funktionenplotter am Beispiel von Gnuplot

Aus Wikibooks


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.