pub struct DormandPrince {
pub abs_tol: TensorRank0,
pub rel_tol: TensorRank0,
pub dt_beta: TensorRank0,
pub dt_expn: TensorRank0,
}
Expand description
Explicit, six-stage, fifth-order, variable-step, Runge-Kutta method.1
\frac{dy}{dt} = f(t, y)
t_{n+1} = t_n + h
k_1 = f(t_n, y_n)
k_2 = f(t_n + \tfrac{1}{5} h, y_n + \tfrac{1}{5} h k_1)
k_3 = f(t_n + \tfrac{3}{10} h, y_n + \tfrac{3}{40} h k_1 + \tfrac{9}{40} h k_2)
k_4 = f(t_n + \tfrac{4}{5} h, y_n + \tfrac{44}{45} h k_1 - \tfrac{56}{15} h k_2 + \tfrac{32}{9} h k_3)
k_5 = f(t_n + \tfrac{8}{9} h, y_n + \tfrac{19372}{6561} h k_1 - \tfrac{25360}{2187} h k_2 + \tfrac{64448}{6561} h k_3 - \tfrac{212}{729} h k_4)
k_6 = f(t_n + h, y_n + \tfrac{9017}{3168} h k_1 - \tfrac{355}{33} h k_2 - \tfrac{46732}{5247} h k_3 + \tfrac{49}{176} h k_4 - \tfrac{5103}{18656} h k_5)
y_{n+1} = y_n + h\left(\frac{35}{384}\,k_1 + \frac{500}{1113}\,k_3 + \frac{125}{192}\,k_4 - \frac{2187}{6784}\,k_5 + \frac{11}{84}\,k_6\right)
k_7 = f(t_{n+1}, y_{n+1})
e_{n+1} = \frac{h}{5}\left(\frac{71}{11520}\,k_1 - \frac{71}{3339}\,k_3 + \frac{71}{384}\,k_4 - \frac{17253}{67840}\,k_5 + \frac{22}{105}\,k_6 - \frac{1}{8}\,k_7\right)
h_{n+1} = \beta h \left(\frac{e_\mathrm{tol}}{e_{n+1}}\right)^{1/p}
J.R. Dormand and P.J. Prince, J. Comput. Appl. Math. 6, 19 (1980). ↩
Fields§
§abs_tol: TensorRank0
Absolute error tolerance.
rel_tol: TensorRank0
Relative error tolerance.
dt_beta: TensorRank0
Multiplier for adaptive time steps.
dt_expn: TensorRank0
Exponent for adaptive time steps.
Trait Implementations§
Source§impl Debug for DormandPrince
impl Debug for DormandPrince
Source§impl Default for DormandPrince
impl Default for DormandPrince
Source§impl<Y, U> Explicit<Y, U> for DormandPrincewhere
Self: InterpolateSolution<Y, U>,
Y: Tensor,
for<'a> &'a Y: Mul<TensorRank0, Output = Y> + Sub<&'a Y, Output = Y>,
U: TensorVec<Item = Y>,
impl<Y, U> Explicit<Y, U> for DormandPrincewhere
Self: InterpolateSolution<Y, U>,
Y: Tensor,
for<'a> &'a Y: Mul<TensorRank0, Output = Y> + Sub<&'a Y, Output = Y>,
U: TensorVec<Item = Y>,
Source§fn integrate(
&self,
function: impl FnMut(TensorRank0, &Y) -> Result<Y, IntegrationError>,
time: &[TensorRank0],
initial_condition: Y,
) -> Result<(Vector, U, U), IntegrationError>
fn integrate( &self, function: impl FnMut(TensorRank0, &Y) -> Result<Y, IntegrationError>, time: &[TensorRank0], initial_condition: Y, ) -> Result<(Vector, U, U), IntegrationError>
Solves an initial value problem by explicitly integrating a system of ordinary differential equations. Read more
Source§impl<Y, U> InterpolateSolution<Y, U> for DormandPrince
impl<Y, U> InterpolateSolution<Y, U> for DormandPrince
Source§fn interpolate(
&self,
time: &Vector,
tp: &Vector,
yp: &U,
function: impl FnMut(TensorRank0, &Y) -> Result<Y, IntegrationError>,
) -> Result<(U, U), IntegrationError>
fn interpolate( &self, time: &Vector, tp: &Vector, yp: &U, function: impl FnMut(TensorRank0, &Y) -> Result<Y, IntegrationError>, ) -> Result<(U, U), IntegrationError>
Solution interpolation.
Auto Trait Implementations§
impl Freeze for DormandPrince
impl RefUnwindSafe for DormandPrince
impl Send for DormandPrince
impl Sync for DormandPrince
impl Unpin for DormandPrince
impl UnwindSafe for DormandPrince
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more