scipy.integrate.

RK45#

class scipy.integrate.RK45(fun, t0, y0, t_bound, max_step=inf, rtol=0.001, atol=1e-06, vectorized=False, first_step=None, **extraneous)[Quelle]#

Explizite Runge-Kutta-Methode der Ordnung 5(4).

Diese verwendet das Dormand-Prince-Formelpaar [1]. Der Fehler wird unter Annahme der Genauigkeit der vierten Ordnung kontrolliert, aber die Schritte werden mit der fünften Ordnung genauen Formel durchgeführt (lokale Extrapolation wird durchgeführt). Ein quartisches Interpolationspolynom wird für die dichte Ausgabe verwendet [2].

Kann im komplexen Bereich angewendet werden.

Parameter:
funcallable

Rechte Seite des Systems. Die Aufrufsignatur ist fun(t, y). Hier ist t eine Skalare, und es gibt zwei Optionen für das ndarray y: Es kann entweder die Form (n,) haben; dann muss fun array_like mit der Form (n,) zurückgeben. Alternativ kann es die Form (n, k) haben; dann muss fun ein array_like mit der Form (n, k) zurückgeben, d.h. jede Spalte entspricht einer einzelnen Spalte in y. Die Wahl zwischen den beiden Optionen wird durch das Argument vectorized bestimmt (siehe unten).

t0float

Anfangszeit.

y0array_like, shape (n,)

Anfangszustand.

t_boundfloat

Grenzzeit - die Integration wird nicht darüber hinaus fortgesetzt. Sie bestimmt auch die Richtung der Integration.

first_stepfloat or None, optional

Anfängliche Schrittgröße. Standard ist None, was bedeutet, dass der Algorithmus wählen soll.

max_stepfloat, optional

Maximale zulässige Schrittgröße. Standard ist np.inf, d.h. die Schrittgröße ist nicht begrenzt und wird ausschließlich vom Solver bestimmt.

rtol, atolfloat and array_like, optional

Relative und absolute Toleranzen. Der Solver hält die lokalen Fehlerschätzungen kleiner als atol + rtol * abs(y). Hier steuert rtol eine relative Genauigkeit (Anzahl korrekter Ziffern), während atol eine absolute Genauigkeit (Anzahl korrekter Dezimalstellen) steuert. Um die gewünschte rtol zu erreichen, setzen Sie atol kleiner als den kleinsten Wert, der von rtol * abs(y) erwartet werden kann, damit rtol den zulässigen Fehler dominiert. Wenn atol größer ist als rtol * abs(y), ist die Anzahl der korrekten Ziffern nicht garantiert. Umgekehrt, um die gewünschte atol zu erreichen, setzen Sie rtol so, dass rtol * abs(y) immer kleiner als atol ist. Wenn Komponenten von y unterschiedliche Skalen haben, kann es vorteilhaft sein, unterschiedliche atol Werte für verschiedene Komponenten festzulegen, indem Sie array_like mit der Form (n,) für atol übergeben. Standardwerte sind 1e-3 für rtol und 1e-6 für atol.

vectorizedbool, optional

Ob fun vektorisiert implementiert ist. Standard ist False.

Attribute:
nint

Anzahl der Gleichungen.

statusstring

Aktueller Status des Solvers: 'running', 'finished' oder 'failed'.

t_boundfloat

Grenzzeit.

directionfloat

Integrationsrichtung: +1 oder -1.

tfloat

Aktuelle Zeit.

yndarray

Aktueller Zustand.

t_oldfloat

Vorherige Zeit. None, wenn noch keine Schritte gemacht wurden.

step_sizefloat

Größe des letzten erfolgreichen Schritts. None, wenn noch keine Schritte gemacht wurden.

nfevint

Anzahl der Auswertungen der rechten Seite des Systems.

njevint

Anzahl der Auswertungen der Jacobi-Matrix. Ist immer 0 für diesen Solver, da er die Jacobi-Matrix nicht verwendet.

nluint

Anzahl der LU-Zerlegungen. Ist immer 0 für diesen Solver.

Methoden

dense_output()

Berechnet ein lokales Interpolationspolynom über den letzten erfolgreichen Schritt.

step()

Führt einen Integrationsschritt durch.

Referenzen

[1]

J. R. Dormand, P. J. Prince, „A family of embedded Runge-Kutta formulae“, Journal of Computational and Applied Mathematics, Vol. 6, No. 1, pp. 19-26, 1980.

[2]

L. W. Shampine, „Some Practical Runge-Kutta Formulas“, Mathematics of Computation,, Vol. 46, No. 173, pp. 135-150, 1986.