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 istteine Skalare, und es gibt zwei Optionen für das ndarrayy: Es kann entweder die Form (n,) haben; dann mussfunarray_like mit der Form (n,) zurückgeben. Alternativ kann es die Form (n, k) haben; dann mussfunein array_like mit der Form (n, k) zurückgeben, d.h. jede Spalte entspricht einer einzelnen Spalte iny. 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 vonrtol * abs(y)erwartet werden kann, damit rtol den zulässigen Fehler dominiert. Wenn atol größer ist alsrtol * abs(y), ist 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 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
Berechnet ein lokales Interpolationspolynom über den letzten erfolgreichen Schritt.
step()Führt einen Integrationsschritt durch.
Referenzen