NumDGl

NumDGL ist ein in Java geschriebenes Programm zur numerischen Behandlung von Differenzialgleichungssystemen. Es ermoeglicht die Integration von Differentialgleichungssystemen, sowie die Erstellung von Daten zur Poincare-(Wiederkehr-), Min- und Maxabbildung. Es erstellt keine Plots, sondern berechnet lediglich Daten, die dann mit geeigneten Werkzeugen (zb. Gnuplot) grafisch aufgearbeitet werden koennen. Die zu behandelnden Systeme werden als Klassen in Java programmiert, wobei diese Klassen von der beidliegenden abstrakten Klasse Modell.java abgeleitet werden muss. Dabei ist mindestens eine Methode public double[] berechneDx() zu implementieren, welche die infinitesimalen dx - Schritte in einem Zeitintervall dt berechnet. Auszerdem muss jede abgeleitete Kklasse einen Konstruktor definieren, welcher mindestens den Aufruf super(int i, int j) enthaelt, wobei i die Zahl der Differenzialgleichungen des Systemes und j die Zahl der internen Parameter ist. Eine detailiertere Besschreibung der Klasse Modell sowie weitergehenden Moeglichkeiten, die diese Klasse zur Zusammenarbeit mit NumDGL ermoeglicht, kann in den Javadocs zu NumDGL eingesehen werden.

NumDGL als Tarball runterladen

NumDGLquellen einsehen

Beispieleingabe zum beiliegenden Scheffermodell
Beispielskript fuer Gnuplot
Und die so erzeugten Grafiken



Kurze Bedienungsanleitung zu NumDGL

Referenz im PS - Format zum Runterladen

Das Programm ist wie folgt zu bedienen:

Nach dem Start erscheint eine Eingabeaufforderung, bei der verschiedene Befehle eingegeben werden koennen. Bei der Eingabe ist auf die Grosz/Kleinschreibung zu achten:

pp
zeigt alle zur Zeit gesetzten Parameter an

quit
beendet das Programm


set [Parameter] [wert(e)]
setzt verschiedene Parameter/ Einstellungen:


pparam
Parameter moegliche WerteStandart
metrk, euler
mod Klassenname des ModellsDummymodell
anfb Anfangsbedingungen der Art t0 x01 x02 ...
(Zahl der x0i vom Modell abhaengig
0 0
ausgabeschirm : gibt Daten auf stdout aus
datei [name]: gibt Daten in Datei name aus
schirm
param [Werte der einzelen Parameter] uebergibt
dem Modell Parameter (Zahl der zu uebergebenden Parameter abhaengig vom Modell)
nichts
iparam [Endzeitpunkt][Schrittzahl]
setzt Werte fuer Integr.
1 1
[Ebene][Abstand vom Urspr]
setzt Parameter fuer die Poincare/Max/Minabbildung
Ebene dient der Wahl der Ebene, in der die Poincare-
abb. erfolgen soll (zB.0 = x1-x2 - Ebene bei 3 Zv,
1 = x0-x2- Ebene bei 3 Zv) Abstand gibt den Abstand d.
Ebene vom Nullpunkt an) Bei Max/Minabb. bezeichnet
Ebene die Zv, von welcher die Extremumsabb. gemacht
werden soll ( 0 = x0 etc)
0 0


integriere
Loest das DGLsystem numerisch, gibt die einzelnen Zustandsvektoren aus

poincare
Erstellt die Poincareabbildung entsprechend der durch pparam gesetzten Parameter, gibt die einzelnen Zustands- Vektoren aus

max
Erstellt Maximumsabbildung entsprechend den durch pparam gesetzten Parameter

min
Erstellt Minimumsabbildung, siehe max

info
Gibt Infotext zu Modell aus, wenn vom Modell unterstuetzt

Zur internen Funktionsweise siehe Quelltext und von javadoc erzeugte Dokumentation. Das Programm kann beliebige Modelle laden, sofern sie von der abstrakten Klasse Modell abgeleitet wurden und zumindest die abstrakte Methode berechneDx() sowie einen Konstruktor implementieren, welcher super(int i, int j) ( i ist die Zahl der DGLen welche das Modell umfasst, j die Zahl der internen Parameter des Modells) aufruft. Um das Modell Scheffer zu laden, muss im Programm "set mod NumDGLint.Scheffer" eingegeben werden ( jedenfalls unter Linux auf meinem Rechner und auf denen der Informatik an der Uni), auf den Windowsrechnern des RZ konnte das Modell nur durch "set mod Scheffer" geladen werden. Auch musste ich auf Linuxrechnern das Programm nicht in NumDGLint, sondern vom uebergeordeten Verzeichnis mittels "java NumDGLint.NumDGL" aufrufen, im RZ aber im Verzeichnis NumDGLint durch "java NumDGL". Merkwuerdiges Verhalten, muss ich zubgeben... Jedenfalls befinden sich alle Klassen im Package NumDGLint, welche Auswirkungen das auf die Aufrufart auf den einzelen Rechnern hat, kann ich allgemein nicht sagen...