[−][src]Struct diffeq::ode::runge_kutta::ButcherTableau
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]
DefaultAllocator: Allocator<T, U1, S> + Allocator<T, S, U2> + Allocator<T, S, S> + Allocator<T, S>,
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]
DefaultAllocator: Allocator<T, U1, S> + Allocator<T, S, U2> + Allocator<T, S, S> + Allocator<T, S>,
fn clone(&self) -> ButcherTableau<S, T>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[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]
DefaultAllocator: Allocator<T, U1, S> + Allocator<T, S, U2> + Allocator<T, S, S> + Allocator<T, S>,
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]
DefaultAllocator: Allocator<T, U1, S> + Allocator<T, S, U2> + Allocator<T, S, S> + Allocator<T, S>,
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
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]
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
[src]
fn is_in_subset(&self) -> bool
[src]
unsafe fn to_subset_unchecked(&self) -> SS
[src]
fn from_subset(element: &SS) -> SP
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,