Implementations§
source§impl<T: One + Zero + Copy + AddAssign, F, const M: usize, const N: usize> StaticVec<DualVec<T, F, N>, M>
impl<T: One + Zero + Copy + AddAssign, F, const M: usize, const N: usize> StaticVec<DualVec<T, F, N>, M>
sourcepub fn jacobian(&self) -> StaticMat<T, M, N>
pub fn jacobian(&self) -> StaticMat<T, M, N>
Extract the Jacobian from a vector of Dual numbers.
let xy = StaticVec::new_vec([5.0, 3.0]).map(DualVec64::<2>::from).derive();
let j = StaticVec::new_vec([xy[0] * xy[1].powi(3), xy[0].powi(2) * xy[1]]).jacobian();
assert_eq!(j[(0,0)], 27.0); // y³
assert_eq!(j[(0,1)], 135.0); // 3xy²
assert_eq!(j[(1,0)], 30.0); // 2xy
assert_eq!(j[(1,1)], 25.0); // x²source§impl<T: One, F, const N: usize> StaticVec<Dual2Vec<T, F, N>, N>
impl<T: One, F, const N: usize> StaticVec<Dual2Vec<T, F, N>, N>
sourcepub fn derive(self) -> Self
pub fn derive(self) -> Self
Derive a vector of second order dual numbers.
let v = StaticVec::new_vec([4.0, 3.0]).map(Dual2Vec64::<2>::from_re).derive();
let n = (v[0].powi(2) + v[1].powi(2)).sqrt();
assert_eq!(n.re, 5.0);
assert_relative_eq!(n.v1[0], 0.8);
assert_relative_eq!(n.v1[1], 0.6);
assert_relative_eq!(n.v2[(0,0)], 0.072);
assert_relative_eq!(n.v2[(0,1)], -0.096);
assert_relative_eq!(n.v2[(1,0)], -0.096);
assert_relative_eq!(n.v2[(1,1)], 0.128);source§impl<T: One, F, const M: usize, const N: usize> StaticVec<HyperDualVec<T, F, M, N>, N>
impl<T: One, F, const M: usize, const N: usize> StaticVec<HyperDualVec<T, F, M, N>, N>
sourcepub fn derive2(self) -> Self
pub fn derive2(self) -> Self
Derive a vector of hyper dual numbers w.r.t. to the second set of variables.
let x = HyperDualVec64::<1, 2>::from_re(2.0).derive1();
let v = StaticVec::new_vec([2.0, 3.0]).map(HyperDualVec64::<1, 2>::from_re).derive2();
let n = (x.powi(2)*v[0].powi(2) + v[1].powi(2)).sqrt();
assert_eq!(n.re, 5.0);
assert_relative_eq!(n.eps1[0], 1.6);
assert_relative_eq!(n.eps2[0], 1.6);
assert_relative_eq!(n.eps2[1], 0.6);
assert_relative_eq!(n.eps1eps2[(0,0)], 1.088);
assert_relative_eq!(n.eps1eps2[(0,1)], -0.192);