\[\newcommand{\vect}[1]{\vec{\boldsymbol{#1}}}
\newcommand{\uvect}[1]{\hat{\boldsymbol{#1}}}
\newcommand{\abs}[1]{\lvert#1\rvert}
\newcommand{\norm}[1]{\lVert#1\rVert}
\newcommand{\I}{\mathrm{i}}
\newcommand{\ket}[1]{\left|#1\right\rangle}
\newcommand{\bra}[1]{\left\langle#1\right|}
\newcommand{\braket}[1]{\langle#1\rangle}
\newcommand{\Braket}[1]{\left\langle#1\right\rangle}
\newcommand{\op}[1]{\boldsymbol{#1}}
\newcommand{\mat}[1]{\boldsymbol{\underaccent{\bar}{#1}}} % For LaTeX
\renewcommand{\mat}[1]{\boldsymbol{#1}}
\providecommand{\d}{\mathrm{d}}
\renewcommand{\d}{\mathrm{d}}
\newcommand{\T}{\mathrm{T}} % For transpose
\newcommand{\D}[1]{\mathcal{D}[#1]\;}
\newcommand{\pdiff}[3][]{\frac{\partial^{#1}#2}{\partial{#3}^{#1}}}
\newcommand{\diff}[3][]{\frac{\d^{#1} #2}{\d{#3}^{#1}}}
\newcommand{\ddiff}[3][]{\frac{\delta^{#1} #2}{\delta{#3}^{#1}}}
\newcommand{\floor}[1]{\left\lfloor#1\right\rfloor}
\newcommand{\ceil}[1]{\left\lceil#1\right\rceil}
\DeclareMathOperator{\Tr}{Tr}
\DeclareMathOperator{\erf}{erf}
\DeclareMathOperator{\erfi}{erfi}
\DeclareMathOperator{\sech}{sech}
\DeclareMathOperator{\sinc}{sinc}
\DeclareMathOperator{\sn}{sn}
\DeclareMathOperator{\cn}{cn}
\DeclareMathOperator{\dn}{dn}
\DeclareMathOperator{\sgn}{sgn}
\DeclareMathOperator{\order}{O}
\DeclareMathOperator{\diag}{diag}
\DeclareMathOperator{\span}{span}
\DeclareMathOperator{\GP}{\mathcal{GP}}
\DeclareMathOperator{\N}{\mathcal{N}}
\newcommand{\mylabel}[1]{\label{#1}\tag{#1}}
\newcommand{\degree}{\circ}
% These replace SIunitx. They should not be defined in LaTeX.
\newcommand{\SI}[2]{#1\;\mathrm{#2}}
\newcommand{\si}[1]{\mathrm{#1}}
\let\qty\SI
\let\unit\si
\newcommand{\squared}{{^{2}}}
\newcommand{\cubed}{{^{3}}}
\newcommand{\per}{/}
\newcommand{\tera}{T}
\newcommand{\giga}{G}
\newcommand{\mega}{M}
\newcommand{\kilo}{k}
\newcommand{\milli}{m}
\newcommand{\micro}{μ}
\newcommand{\nano}{n}
\newcommand{\kilogram}{\text{kg}\,}
\newcommand{\meter}{\text{m}\,}
\newcommand{\second}{\text{s}\,}
\newcommand{\ampere}{\text{A}\,}
\newcommand{\kelvin}{\text{K}\,}
\newcommand{\mol}{\text{mol}\,}
\newcommand{\candela}{\text{cd}\,}
\newcommand{\newton}{\text{N}\,}
\newcommand{\hertz}{\text{Hz}\,}
\newcommand{\pascal}{\text{Pa}\,}
\newcommand{\volt}{\text{V}\,}
\newcommand{\watt}{\text{W}\,}
\newcommand{\joule}{\text{J}\,}
\newcommand{\henry}{\text{H}\,}
\newcommand{\farad}{\text{F}\,}
\newcommand{\coulomb}{\text{C}\,}
\newcommand{\ohm}{\Omega\,}
\newcommand{\weber}{\text{Wb}\,}
\newcommand{\tesla}{\text{T}\,}
\newcommand{\degree}{\text{deg}\,}
\]
solve_ivp_abm
-
solve_ivp_abm(fun, t_span, y0, Nt, ys=None, dys=None, dcp=None, save_memory=False, start_factor=2)
Solve the specified IVP using a 5th order predictor-corrector method.
This is the algorithm presented at the end of Section 23.10 of Hamming’s book. It
is an average of the Milne and Adams-Bashforth cases.
- Parameters:
Nt (int) – Number of steps. The time-step will be np.diff(t_span)/Nt.
ys ([y0, y1, y2, y3] or None) – First four steps to get the process started. If not provided, then these
will be computed using solve_ivp_rk4().
dys ([dy0, dy1, dy2, dy3] or None) – Derivatives at the corresponding previous steps. Will be computed if not
provided.
dcp (array, None) – Previous corrector-predictor difference (with a factor 161/170).
save_memory (bool) – If True, then only keep the last four steps.
- Returns:
res (OdeResult) – Bunch object.
The remaining arguments should match those of scipy.integrate.solve_ivp().
Don’t worry about optimizations like allowing fun to be vectorized etc.
Notes
This method requires four initial values to get started.