RK23#
- class scipy.integrate.RK23(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 3(2).
Diese Methode verwendet das Bogacki-Shampine-Paar von Formeln [1]. Der Fehler wird unter der Annahme der Genauigkeit der zweitordnungsmäßigen Methode gesteuert, aber die Schritte werden mit der drittordnungsmäßig genauen Formel ausgeführt (lokale Extrapolation wird durchgeführt). Für die dichte Ausgabe wird ein kubisches Hermite-Polynom verwendet.
Kann im komplexen Bereich angewendet werden.
- Parameter:
- funcallable
Rechte Seite des Systems: die Zeitableitung des Zustands
yzur Zeitt. Die Aufrufsignatur istfun(t, y), wobeitein Skalar ist undyein ndarray mitlen(y) = len(y0)ist.funmuss ein Array derselben Form wieyzurückgeben. Siehe vectorized für weitere Informationen.- 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 Löser hält die lokalen Fehlerschätzungen kleiner als
atol + rtol * abs(y). Hier steuert rtol die relative Genauigkeit (Anzahl korrekter Ziffern), während atol die absolute Genauigkeit (Anzahl korrekter Dezimalstellen) steuert. Um die gewünschte rtol zu erreichen, setzen Sie atol kleiner als den kleinsten Wert, der vonrtol * abs(y)erwartet werden kann, sodass rtol den zulässigen Fehler dominiert. Wenn atol größer alsrtol * abs(y)ist, sind die Anzahl der korrekten Ziffern nicht garantiert. Umgekehrt, um die gewünschte atol zu erreichen, setzen Sie rtol so, dassrtol * abs(y)immer kleiner als atol ist. Wenn Komponenten von y unterschiedliche Skalen aufweisen, kann es vorteilhaft sein, unterschiedliche atol-Werte für verschiedene Komponenten festzulegen, indem ein array_like mit der Form (n,) für atol übergeben wird. Standardwerte sind 1e-3 für rtol und 1e-6 für atol.- vectorizedbool, optional
Ob fun vektoriell aufgerufen werden darf. False (Standard) wird für diesen Löser empfohlen.
Wenn
vectorizedFalse ist, wird fun immer mityder Form(n,)aufgerufen, wobein = len(y0)ist.Wenn
vectorizedTrue ist, kann fun mityder Form(n, k)aufgerufen werden, wobeikeine Ganzzahl ist. In diesem Fall muss fun so funktionieren, dassfun(t, y)[:, i] == fun(t, y[:, i])(d. h. jede Spalte des zurückgegebenen Arrays ist die Zeitableitung des Zustands, der einer Spalte vonyentspricht).Das Setzen von
vectorized=Trueermöglicht eine schnellere Finite-Differenzen-Approximation des Jacobians für die Methoden ‘Radau’ und ‘BDF’, führt aber zu einer langsameren Ausführung für diesen Löser.
- 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
Berechnet ein lokales Interpolationspolynom über den letzten erfolgreichen Schritt.
step()Führt einen Integrationsschritt durch.
Referenzen
[1]P. Bogacki, L.F. Shampine, „A 3(2) Pair of Runge-Kutta Formulas“, Appl. Math. Lett. Vol. 2, No. 4. pp. 321-325, 1989.