Funktionen > Lösen und Optimieren > Lösungsalgorithmen für Differentialgleichungen > GDG-Löser
  
GDG-Löser
Jede der folgenden Funktionen übergibt eine Lösungsmatrix der Größe (intvls + 1) × (n + 1), wobei n die Anzahl der Unbekannten darstellt. Die erste Spalte der Matrix enthält die Werte von x, für die die Lösungen ausgewertet werden. Diese Werte sind (intvls + 1) gleichmäßig verteilte Zahlen zwischen x1 und x2. Die verbleibenden Spalten enthalten die Werte der Lösungen y0y1, ..., yn-1, die den Werten von x in der ersten Spalte entsprechen.
Für die Löser rkfixed, RkAdapt, Bulstoer, Stiffb und Stiffr können Sie eine skalare Toleranz für die Lösung angeben, indem Sie die Variable "TOL" vor dem Aufrufen des Lösers definieren. Sie können z.B. die Toleranz für alle Variablen auf 10-6 einstellen:
TOL:= 10-6
TOL wirkt sich nicht auf die Toleranzen für die Löser Adams, BDF oder Radau aus. Für diese Löser müssen Sie Toleranzen mit dem oben beschriebenen optionalen Argument tol angeben.
Verwenden Sie Lösungsblöcke für gewöhnliche Differentialgleichungen, um Ihre Gleichungen und Anfangsbedingungen zu vereinfachen.
Löser für nicht steife Systeme
Adams(init, x1, x2, intvls, D, [tol]) – Verwendet Adams-Verfahren.
rkfixed(init, x1, x2, intvls, D) – Verwendet das Runge-Kutta-Verfahren vierter Ordnung mit fester Schrittweite.
Rkadapt(init, x1, x2, intvls, D) – Verwendet das Runge-Kutta-Verfahren vierter Ordnung mit adaptiver Schrittweite.
Bulstoer(init, x1, x2, intvls, D) – Verwendet das Bulirsch-Stoer-Verfahren, das geringfügig genauer ist als das Runge-Kutta-Verfahren, allerdings ein System mit glatten Übergängen erfordert.
Löser für steife Systeme
Verwenden Sie die folgenden Funktionen zum Lösen steifer oder algebraischer DGD-Probleme.
BDF(init, x1, x2, intvls, D, [J], [tol]) – Verwendet Backward-Differentiation-Formula-Verfahren (BDF). Sie können eines der optionalen Argumente J oder tol verwenden und das andere weglassen.
Radau(init, x1, x2, intvls, D, [J], [M], [tol]) – Verwendet das Radau5-Verfahren. Sie können eine beliebige Kombination der optionalen Argumente J, M und tol verwenden und die Optionen auslassen, die Sie nicht verwenden möchten.
Stiffb(init, x1, x2, intvls, D, AJ) – Verwendet das Bulirsch-Stoer-Verfahren.
Stiffr(init, x1, x2, intvls, D, AJ) – Verwendet das Rosenbrock-Verfahren.
Hybrid-Löser
AdamsBDF(init, x1, x2, intvls, D, [J], [tol]) – Stellt fest, ob ein System steif oder nicht steif ist, und ruft dementsprechend Adams oder BDF auf. Sie können eines der optionalen Argumente J oder tol verwenden und das andere weglassen.
Argumente
init ist entweder ein Vektor von n reellen Anfangswerten, wobei n der Anzahl unbekannter Zustände entspricht, oder ein einzelner skalarer Anfangswert, im Fall einer einzelnen gewöhnlichen Differentialgleichung.
x1 und x2 sind reelle Skalar-Endpunkte des Intervalls, über das die Lösung der gewöhnlichen Differentialgleichungen ermittelt wird. Die Anfangswerte in init sind die Werte der GDG-Funktionen, die bei x1 ausgewertet werden.
intvls ist die Ganzzahl der Diskretisierungsintervalle, die zum Interpolieren der Lösungsfunktion verwendet werden. Die Anzahl der Lösungspunkte ist gleich der Anzahl der Intervalle +1.
D ist eine Vektorfunktion der Form D(x,y), die die rechte Seite des Systems angibt.
tol (optional) ist ein reeller Wert oder ein Vektor reeller Werte, der Toleranzen für die unabhängigen Variablen im System angibt. Die Toleranz ist die erforderliche Genauigkeit für eine Lösungsvariable.
Legen Sie für tol einen Wert kleiner als oder gleich 10-5 fest. Je nach Ausmaß des Problems und der verwendeten relativen Schrittgröße müssen Sie eventuell den Wert von TOL verringern, um geeignete Lösungen zu erhalten. Je kleiner der Wert von tol ist, desto mehr Schritte führt der Lösungsalgorithmus aus, um die erforderliche Genauigkeit zu erzielen.
Wenn Sie ein Gleichungssystem lösen, wird durch Festlegen von tol als Skalar dieselbe Toleranz für alle Variablen im System angegeben. Wenn Sie tol als Vektor festlegen, dessen Länge der Anzahl der Variablen im System entspricht, werden für alle Variablen individuelle Toleranzen angegeben.
J (optional) ist eine Funktion der Form J(x, y), die die Jacobi-Matrix zurückgibt: die Matrix partieller Ableitungen der Funktionen in D in Bezug auf y0y1, ... yn−1.
M (optional) ist eine reelle Matrix, die eine beliebige Kopplung zwischen den Variablen in der Form M · dy/dt = f(t, y) darstellt.
AJ ist eine Funktion der Form AJ(x, y), die die erweiterte Jacobi-Matrix zurückgibt, deren erste Spalte in Bezug auf x die partiellen Ableitungen der Funktionen auf der rechten Seite des Systems enthält. Die übrigen Spalten sind die Spalten der Jacobi-Matrix J, die die partiellen Ableitungen in Bezug auf y0y1, ... yn−1 enthält.
Die Funktionen D, J und AJ werden dem Löser ohne ihre Argumente übergeben. Die Funktionen yn(x) werden in D, J und AJ ohne ihre Argumente angegeben.
Das zweite Argument für D, J und AJ muss als Vektor indiziert werden, selbst wenn nur ein Eintrag vorhanden ist.
Zusätzliche Informationen
Die Funktionen Radau und Rkadapt verwenden beim Lösen der Differentialgleichung intern ungleichmäßige Schrittweiten, wobei mehr Schritte in Bereichen mit größeren Unterschieden bei der Lösung hinzugefügt werden, übergeben jedoch die Lösung für die Anzahl gleichmäßig angeordneter Punkte, die in intvls angegeben ist.
Ein Vorteil bei der Verwendung des Radau-Verfahrens besteht darin, dass keine symbolische Jacobi-Eingabe erforderlich ist, obwohl sich bei Verwendung von J (sofern ohne weiteres verfügbar) die Genauigkeit erhöht.