Skip to content

deriv #

🚀 Numerical Differentiation

This module provides functions for computing numerical derivatives of functions. 🧮

An adaptive algorithm is used to find the best choice of finite difference and to estimate the error in the derivative. 🎯

The development of this module is inspired by the same present in GSL 📚, looking to adapt it completely to the practices and tools present in VSL. 🛠️

Functions

central

fn central (f func.Fn, x, h f64) (f64, f64)

This function computes the numerical derivative of the function f at the point x using an adaptive central difference algorithm with a step-size of h. The derivative is returned in result and an estimate of its absolute error is returned in abserr.

The initial value of h is used to estimate an optimal step-size, based on the scaling of the truncation error and round-off error in the derivative calculation. The derivative is computed using a 5-point rule for equally spaced abscissae at x - h, x - h/2, x, x + h/2, x+h, with an error estimate taken from the difference between the 5-point rule and the corresponding 3-point rule x-h, x, x+h. Note that the value of the function at x does not contribute to the derivative calculation, so only 4-points are actually used. 🧐

forward

fn forward (f func.Fn, x, h f64) (f64, f64)

This function computes the numerical derivative of the function f at the point x using an adaptive forward difference algorithm with a step-size of h. The function is evaluated only at points greater than x, and never at x itself. The derivative is returned in result and an estimate of its absolute error is returned in abserr. This function should be used if f(x) has a discontinuity at x, or is undefined for values less than x. 📈

The initial value of h is used to estimate an optimal step-size, based on the scaling of the truncation error and round-off error in the derivative calculation. The derivative at x is computed using an "open" 4-point rule for equally spaced abscissae at x+h/4, x + h/2, x + 3h/4, x+h, with an error estimate taken from the difference between the 4-point rule and the corresponding 2-point rule x+h/2, x+h. 🚀

backward

fn backward (f func.Fn, x, h f64) (f64, f64)

This function computes the numerical derivative of the function f at the point x using an adaptive backward difference algorithm with a step-size of h. The function is evaluated only at points less than x, and never at x itself. The derivative is returned in result and an estimate of its absolute error is returned in abserr. This function should be used if f(x) has a discontinuity at x, or is undefined for values greater than x. 📉

This function is equivalent to calling deriv.forward with a negative step-size.

partial

pub fn partial(f fn ([]f64) f64, x []f64, variable int, h f64) (f64, f64)

This function computes the partial derivative of the function f with respect to a specified variable at point x using step-size h. It returns the derivative in result and an error estimate in abserr. The function f should take an array of coordinates and return a single value. This method provides both the derivative and its error estimate.

References and Further Reading

This work is a spiritual descendent of the Differentiation module in GSL. 📖

Feel free to explore and utilize these numerical differentiation functions in your projects! 🤖📊🔬

fn backward #

fn backward(f func.Fn, x f64, h f64) (f64, f64)

fn central #

fn central(f func.Fn, x f64, h f64) (f64, f64)

fn forward #

fn forward(f func.Fn, x f64, h f64) (f64, f64)

fn partial #

fn partial(f fn ([]f64) f64, x []f64, variable int, h f64) (f64, f64)