pub fn vectors<A, TEO>(
    teo: TEO,
    x: Array1<A>,
    alpha: A::Real,
    duration: usize,
) -> Vec<(Array1<A>, Array2<A>, Array1<A::Real>)>
where
    A: Scalar + Lapack,
    TEO: TimeEvolution<Scalar = A, Dim = Ix1> + Clone,
{
    let n = teo.model_size();
    let qr_series = Series::new(teo, x, alpha)
        .skip(duration / 10)
        .take(duration + duration / 10)
        .collect::<Vec<_>>();
    let clv_rev = qr_series
        .into_iter()
        .rev()
        .scan(Array::eye(n), |c, (x, q, r)| {
            let (c_now, f) = clv_backward(c, &r);
            let v = q.dot(&c_now);
            *c = c_now;
            Some((x, v, f))
        })
        .collect::<Vec<_>>();
    clv_rev.into_iter().skip(duration / 10).rev().collect()
}
/// Calculate the Covariant Lyapunov Vectors at once
///
/// This function saves the time series of QR-decomposition, and consumes many memories.
Calculate the Covariant Lyapunov Vectors at once
This function saves the time series of QR-decomposition, and consumes many memories.
Calculate the Covariant Lyapunov Vectors at once This function saves the time series of QR - decomposition and consumes many memories .
pub fn vectors<A, TEO>(
    teo: TEO,
    x: Array1<A>,
    alpha: A::Real,
    duration: usize,
) -> Vec<(Array1<A>, Array2<A>, Array1<A::Real>)>
where
    A: Scalar + Lapack,
    TEO: TimeEvolution<Scalar = A, Dim = Ix1> + Clone,
{
    let n = teo.model_size();
    let qr_series = Series::new(teo, x, alpha)
        .skip(duration / 10)
        .take(duration + duration / 10)
        .collect::<Vec<_>>();
    let clv_rev = qr_series
        .into_iter()
        .rev()
        .scan(Array::eye(n), |c, (x, q, r)| {
            let (c_now, f) = clv_backward(c, &r);
            let v = q.dot(&c_now);
            *c = c_now;
            Some((x, v, f))
        })
        .collect::<Vec<_>>();
    clv_rev.into_iter().skip(duration / 10).rev().collect()
}
pub fn vectors < A , TEO > ( teo : TEO , x : Array1 < A > , alpha : A :: Real , duration : usize , ) -> Vec < ( Array1 < A > , Array2 < A > , Array1 < A :: Real > ) > where A : Scalar + Lapack , TEO : TimeEvolution < Scalar = A , Dim = Ix1 > + Clone , { let n = teo . model_size ( ) ; let qr_series = Series :: new ( teo , x , alpha ) . skip ( duration / 10 ) . take ( duration + duration / 10 ) . collect :: < Vec < _ > > ( ) ; let clv_rev = qr_series . into_iter ( ) . rev ( ) . scan ( Array :: eye ( n ) , | c , ( x , q , r ) | { let ( c_now , f ) = clv_backward ( c , & r ) ; let v = q . dot ( & c_now ) ; * c = c_now ; Some ( ( x , v , f ) ) } ) . collect :: < Vec < _ > > ( ) ; clv_rev . into_iter ( ) . skip ( duration / 10 ) . rev ( ) . collect ( ) }
Calculate the Covariant Lyapunov Vectors at once
This function saves the time series of QR-decomposition, and consumes many memories.
Calculate the Covariant Lyapunov Vectors at once This function saves the time series of QR - decomposition and consumes many memories .
teo
TEO
x
Array1<A>
alpha
A::Real
duration
usize
teo
TEO
x
Array1<A>
alpha
A::Real
duration
usize