pub struct Sri { /* private fields */ }Expand description
Kloeden-Platen strong order 1.5 Taylor scheme for scalar autonomous SDEs.
For the Ito SDE dX = f(X) dt + g(X) dW, the step is:
x_{n+1} = x + fdt + gdW + 0.5gg’(dW^2 - dt) [Milstein: L^1 g * I_{(1,1)}] + gf’ * (dtdW - dZ) [L^1 f * I_{(1,0)} term] + (fg’ + 0.5g^2g’‘) * dZ [L^0 g * I_{(0,1)} term] + 0.5ff’ * dt^2 [L^0 f * dt^2/2 term] + (gg’^2 + g^2g’’) * (dW^3 - 3dtdW)/6 [(L^1)^2 g * I_{(1,1,1)}]
where:
dZ = integral_0^dt W(s) ds = I_{(0,1)}
I_{(1,0)} = dt*dW - dZ
I_{(1,1)} = (dW^2 - dt)/2
I_{(1,1,1)} = (dW^3 - 3*dt*dW)/6
All spatial derivatives are approximated by central finite differences with step h.
§Reference
Kloeden & Platen, “Numerical Solution of Stochastic Differential Equations”, 1992, Chapter 5.5, the strong Taylor 1.5 scheme (Theorem 5.5.1 / eq. 5.5.4).
§Notes
- The
I_{(1,1,1)}triple iterated integral is expressible in terms ofdWalone:I_{(1,1,1)} = (dW^3 - 3*dt*dW)/6. This is the key 1.5-order correction beyond Milstein. - For BM (constant diffusion), all correction terms vanish, recovering Euler.
- For GBM (
g = sigma*x,g' = sigma,g'' = 0):d111 = g*g'^2 + g^2*g'' = sigma^2*x*sigma = sigma^3*xI_{(1,1,1)} = (dW^3 - 3*dt*dW)/6- Combined with the other 1.5 terms, local error reduces to O(dt^2), giving O(dt^{1.5}) globally.
- Requires scalar (1D) SDE with diagonal noise.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Sri
impl RefUnwindSafe for Sri
impl Send for Sri
impl Sync for Sri
impl Unpin for Sri
impl UnsafeUnpin for Sri
impl UnwindSafe for Sri
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.