second_derivative

Function second_derivative 

Source
pub fn second_derivative<G, T: DualNum<F>, F, O: Mappable<Dual2<T, F>>>(
    g: G,
    x: T,
) -> O::Output<(T, T, T)>
where G: Fn(Dual2<T, F>) -> O,
Expand description

Calculate the second derivative of a univariate function.

let (f, df, d2f) = second_derivative(|x| x.powi(2), 5.0);
assert_eq!(f, 25.0);       // x²
assert_eq!(df, 10.0);      // 2x
assert_eq!(d2f, 2.0);      // 2

The argument can also be a dual number.

let x = Dual64::new(5.0, 1.0);
let (f, df, d2f) = second_derivative(|x| x.powi(3), x);
assert_eq!(f.re, 125.0);    // x³
assert_eq!(f.eps, 75.0);    // 3x²
assert_eq!(df.re, 75.0);    // 3x²
assert_eq!(df.eps, 30.0);   // 6x
assert_eq!(d2f.re, 30.0);   // 6x
assert_eq!(d2f.eps, 6.0);   // 6