[][src]Struct diffeq::ode::runge_kutta::ButcherTableau

pub struct ButcherTableau<S: Dim, T: RealField = f64> where
    DefaultAllocator: Allocator<T, U1, S> + Allocator<T, S, U2> + Allocator<T, S, S> + Allocator<T, S>, 
{ pub symbol: RKSymbol, pub a: MatrixN<T, S>, pub b: Weights<S, T>, pub c: VectorN<T, S>, }

Tableua of the form

 c1  | a_11   ....   a_1s
 .   | a_21 .          .
 .   | a_31     .      .
 .   | ....         .  .
 c_s | a_s1  ....... a_ss
-----+--------------------
     | b_1     ...   b_s   this is the one used for stepping
     | b'_1    ...   b'_s  this is the one used for error-checking

where T is the type of the coefficients and S is the number of stages (an int)

Fields

symbol: RKSymbol

identifier for the rk method

a: MatrixN<T, S>

coefficients - rk matrix

b: Weights<S, T>

weights, adaptive weights are column major, means 2 fixed columns and S rows

c: VectorN<T, S>

nodes

Methods

impl<S: Dim, T: RealField> ButcherTableau<S, T> where
    DefaultAllocator: Allocator<T, U1, S> + Allocator<T, S, U2> + Allocator<T, S, S> + Allocator<T, S>, 
[src]

https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods

pub fn order(&self) -> RKOrder[src]

the Butcher-Barrier says, that the amount of stages grows faster tha the order. For nstages ≥ 5, more than order 5 is required to solve the system

pub fn nstages(&self) -> usize[src]

the number of stages S

pub fn is_consistent_rk(&self) -> bool[src]

checks wether the rk method is consistent A Runge–Kutta method is consistent if: \sum {j=1}^{i-1}a{ij}=c_{i}{\text{ for }}i=2,\ldots ,s. checks if the diagonal entries of the lower triangle of the coefficents a correspond to the values of c

pub fn is_explicit(&self) -> bool[src]

pub fn is_adaptive(&self) -> bool[src]

pub fn weight_type(&self) -> WeightType[src]

pub fn is_first_same_as_last(&self) -> bool[src]

First same as last. c.f. H&W p.167

impl ButcherTableau<U1>[src]

pub fn feuler() -> Self[src]

constructs the Butcher Tableau for the (forward) Euler method

  0.000 | 0.000
 -------+------
        | 1.000

impl ButcherTableau<U2>[src]

pub fn midpoint() -> Self[src]

the midpoint method https://en.wikipedia.org/wiki/Midpoint_method

 0.000 | 0.000 0.000
 0.500 | 0.500 0.000
-------+------------
       | 0.000 1.000

pub fn heun() -> Self[src]

 0.000 | 0.000 0.000
 1.000 | 1.000 0.000
-------+------------
       | 0.500 0.500

pub fn rk21() -> Self[src]

impl ButcherTableau<U4>[src]

pub fn rk23() -> Self[src]

Bogacki–Shampine coefficients

 0.000 | 0.000 0.000 0.000 0.000
 0.500 | 0.500 0.000 0.000 0.000
 0.750 | 0.000 0.750 0.000 0.000
 1.000 | 0.222 0.333 0.444 0.000
-------+------------------------
       | 0.292 0.250 0.333 0.125
       | 0.111 0.333 0.444 0.000

impl ButcherTableau<U4>[src]

pub fn rk4() -> Self[src]

constructs the Butcher Tableau for the Runge Kutta 4 method

   0.000 | 0.000 0.000 0.000 0.000
   0.500 | 0.500 0.000 0.000 0.000
   0.500 | 0.000 0.500 0.000 0.000
   1.000 | 0.000 0.000 1.000 0.000
   -------+------------------------
   | 0.167 0.333 0.333 0.167

impl ButcherTableau<U6>[src]

pub fn rk45() -> Self[src]

Fehlberg https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta%E2%80%93Fehlberg_method Order of 4 with an error estimator of order 5

 0.000 | 0.000 0.000 0.000 0.000 0.000 0.000
 0.250 | 0.250 0.000 0.000 0.000 0.000 0.000
 0.375 | 0.094 0.281 0.000 0.000 0.000 0.000
 0.923 | 0.879 -3.277 3.321 0.000 0.000 0.000
 1.000 | 2.032 -8.000 7.173 -0.206 0.000 0.000
 0.500 | -0.296 2.000 -1.382 0.453 -0.275 0.000
-------+------------------------------------
       | 0.116 0.000 0.549 0.535 -0.200 0.000
       | 0.119 0.000 0.519 0.506 -0.180 0.036

impl ButcherTableau<U7>[src]

pub fn dopri5() -> Self[src]

 0.000 | 0.000 0.000 0.000 0.000 0.000 0.000 0.000
 0.200 | 0.200 0.000 0.000 0.000 0.000 0.000 0.000
 0.300 | 0.075 0.225 0.000 0.000 0.000 0.000 0.000
 0.750 | 0.978 -3.733 3.556 0.000 0.000 0.000 0.000
 0.889 | 2.953 -11.596 9.823 -0.291 0.000 0.000 0.000
 1.000 | 2.846 -10.758 8.906 0.278 -0.274 0.000 0.000
 1.000 | 0.091 0.000 0.449 0.651 -0.322 0.131 0.000
-------+------------------------------------------
       | 0.091 0.000 0.449 0.651 -0.322 0.131 0.000
       | 0.090 0.000 0.453 0.614 -0.272 0.089 0.025

impl ButcherTableau<U13>[src]

pub fn feh78() -> Self[src]

0.000 | 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.074 | 0.074 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.111 | 0.028 0.083 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.167 | 0.042 0.000 0.125 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.417 | 0.417 0.000 -1.562 1.562 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.500 | 0.500 0.000 0.000 0.750 0.200 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.833 | -0.231 0.000 0.000 1.157 -2.407 2.315 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.167 | 0.103 0.000 0.000 0.000 0.271 -0.222 0.014 0.000 0.000 0.000 0.000 0.000 0.000 0.667 | 2.000 0.000 0.000 -8.833 15.644 -11.889 0.744 3.000 0.000 0.000 0.000 0.000 0.000 0.333 | -0.843 0.000 0.000 0.213 -7.230 5.759 -0.317 2.833 -0.083 0.000 0.000 0.000 0.000 1.000 | 0.581 0.000 0.000 -2.079 4.386 -3.671 0.520 0.549 0.274 0.439 0.000 0.000 0.000 0.000 | 0.015 0.000 0.000 0.000 0.000 -0.146 -0.015 -0.073 0.073 0.146 0.000 0.000 0.000 1.000 | -0.433 0.000 0.000 -2.079 4.386 -3.524 0.535 0.622 0.201 0.293 0.000 1.000 0.000 -------+------------------------------------------------------------------------------ | 0.049 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.324 0.324 0.257 | 0.257 0.257 0.257 0.032 0.032 0.032 0.032 0.049 0.000 0.000 0.049 0.000 0.049

Trait Implementations

impl<S: Clone + Dim, T: Clone + RealField> Clone for ButcherTableau<S, T> where
    DefaultAllocator: Allocator<T, U1, S> + Allocator<T, S, U2> + Allocator<T, S, S> + Allocator<T, S>, 
[src]

impl<S: Debug + Dim, T: Debug + RealField> Debug for ButcherTableau<S, T> where
    DefaultAllocator: Allocator<T, U1, S> + Allocator<T, S, U2> + Allocator<T, S, S> + Allocator<T, S>, 
[src]

impl<S: Dim, T: RealField> Display for ButcherTableau<S, T> where
    DefaultAllocator: Allocator<T, U1, S> + Allocator<T, S, U2> + Allocator<T, S, S> + Allocator<T, S>, 
[src]

Auto Trait Implementations

impl<S, T = f64> !RefUnwindSafe for ButcherTableau<S, T>

impl<S, T = f64> !Send for ButcherTableau<S, T>

impl<S, T = f64> !Sync for ButcherTableau<S, T>

impl<S, T = f64> !Unpin for ButcherTableau<S, T>

impl<S, T = f64> !UnwindSafe for ButcherTableau<S, T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,