scipy.integrate.

DOP853#

class scipy.integrate.DOP853(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 8.

Dies ist eine Python-Implementierung des „DOP853“-Algorithmus, der ursprünglich in Fortran [1], [2] geschrieben wurde. Beachten Sie, dass dies keine wörtliche Übersetzung ist, aber der algorithmische Kern und die Koeffizienten sind dieselben.

Kann im komplexen Bereich angewendet werden.

Parameter:
funcallable

Rechte Seite des Systems. Die Aufrufsignatur lautet 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 ein 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 Schrittgröße. Standard ist np.inf, d. h. die Schrittgröße ist unbegrenzt und wird ausschließlich vom Solver bestimmt.

rtol, atolfloat and array_like, optional

Relative und absolute Toleranzen. Der Solver hält die lokalen Fehlerabschätzungen kleiner als atol + rtol * abs(y). Hier steuert rtol eine relative Genauigkeit (Anzahl korrekter Stellen), 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 von rtol * abs(y) erwartet werden kann, damit rtol den zulässigen Fehler dominiert. Wenn atol größer als rtol * abs(y) ist, ist die Anzahl der korrekten Stellen 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 ein 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 auf eine vektorisierte Weise 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]

E. Hairer, S. P. Norsett G. Wanner, „Solving Ordinary Differential Equations I: Nonstiff Problems“, Kap. II.