HOME

TheInfoList



OR:

In numerical analysis, numerical differentiation algorithms estimate the derivative of a mathematical function or function
subroutine In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed. Functions may ...
using values of the function and perhaps other knowledge about the function.


Finite differences

The simplest method is to use finite difference approximations. A simple two-point estimation is to compute the slope of a nearby secant line through the points (''x'', ''f''(''x'')) and (''x'' + ''h'', ''f''(''x'' + ''h'')). Choosing a small number ''h'', ''h'' represents a small change in ''x'', and it can be either positive or negative. The slope of this line is : \frac. This expression is
Newton Newton most commonly refers to: * Isaac Newton (1642–1726/1727), English scientist * Newton (unit), SI unit of force named after Isaac Newton Newton may also refer to: Arts and entertainment * ''Newton'' (film), a 2017 Indian film * Newton ( ...
's difference quotient (also known as a first-order divided difference). The slope of this secant line differs from the slope of the tangent line by an amount that is approximately proportional to ''h''. As ''h'' approaches zero, the slope of the secant line approaches the slope of the tangent line. Therefore, the true derivative of ''f'' at ''x'' is the limit of the value of the difference quotient as the secant lines get closer and closer to being a tangent line: : f'(x) = \lim_ \frac. Since immediately substituting 0 for ''h'' results in \frac indeterminate form , calculating the derivative directly can be unintuitive. Equivalently, the slope could be estimated by employing positions (''x'' − ''h'') and ''x''. Another two-point formula is to compute the slope of a nearby secant line through the points (''x'' - ''h'', ''f''(''x'' − ''h'')) and (''x'' + ''h'', ''f''(''x'' + ''h'')). The slope of this line is : \frac. This formula is known as the symmetric difference quotient. In this case the first-order errors cancel, so the slope of these secant lines differ from the slope of the tangent line by an amount that is approximately proportional to h^2. Hence for small values of ''h'' this is a more accurate approximation to the tangent line than the one-sided estimation. However, although the slope is being computed at ''x'', the value of the function at ''x'' is not involved. The estimation error is given by : R = \frac h^2, where c is some point between x - h and x + h. This error does not include the rounding error due to numbers being represented and calculations being performed in limited precision. The symmetric difference quotient is employed as the method of approximating the derivative in a number of calculators, including TI-82, TI-83, TI-84, TI-85, all of which use this method with ''h'' = 0.001.


Step size

An important consideration in practice when the function is calculated using
floating-point arithmetic In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can be ...
of finite precision is the choice of step size, ''h''. If chosen too small, the subtraction will yield a large rounding error. In fact, all the finite-difference formulae are ill-conditionedNumerical Differentiation of Analytic Functions, B Fornberg – ACM Transactions on Mathematical Software (TOMS), 1981. and due to cancellation will produce a value of zero if ''h'' is small enough.Using Complex Variables to Estimate Derivatives of Real Functions, W. Squire, G. Trapp – SIAM REVIEW, 1998. If too large, the calculation of the slope of the secant line will be more accurately calculated, but the estimate of the slope of the tangent by using the secant could be worse. For basic central differences, the optimal step is the cube-root of
machine epsilon Machine epsilon or machine precision is an upper bound on the relative approximation error due to rounding in floating point arithmetic. This value characterizes computer arithmetic in the field of numerical analysis, and by extension in the subjec ...
. For the numerical derivative formula evaluated at ''x'' and ''x'' + ''h'', a choice for ''h'' that is small without producing a large rounding error is \sqrt x (though not when ''x'' = 0), where the
machine epsilon Machine epsilon or machine precision is an upper bound on the relative approximation error due to rounding in floating point arithmetic. This value characterizes computer arithmetic in the field of numerical analysis, and by extension in the subjec ...
''ε'' is typically of the order of 2.2 for double precision. A formula for ''h'' that balances the rounding error against the secant error for optimum accuracy is : h = 2\sqrt (though not when f''(x) = 0), and to employ it will require knowledge of the function. For computer calculations the problems are exacerbated because, although ''x'' necessarily holds a
representable floating-point number In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can b ...
in some precision (32 or 64-bit, ''etc''.), ''x'' + ''h'' almost certainly will not be exactly representable in that precision. This means that ''x'' + ''h'' will be changed (by rounding or truncation) to a nearby machine-representable number, with the consequence that (''x'' + ''h'') − ''x'' will ''not'' equal ''h''; the two function evaluations will not be exactly ''h'' apart. In this regard, since most decimal fractions are recurring sequences in binary (just as 1/3 is in decimal) a seemingly round step such as ''h'' = 0.1 will not be a round number in binary; it is 0.000110011001100...2 A possible approach is as follows: h := sqrt(eps) * x; xph := x + h; dx := xph - x; slope := (F(xph) - F(x)) / dx; However, with computers,
compiler optimization In computing, an optimizing compiler is a compiler that tries to minimize or maximize some attributes of an executable computer program. Common requirements are to minimize a program's execution time, memory footprint, storage size, and power con ...
facilities may fail to attend to the details of actual computer arithmetic and instead apply the axioms of mathematics to deduce that ''dx'' and ''h'' are the same. With C and similar languages, a directive that ''xph'' is a volatile variable will prevent this.


Other methods


Higher-order methods

Higher-order methods for approximating the derivative, as well as methods for higher derivatives, exist. Given below is the five-point method for the first derivative ( five-point stencil in one dimension): : f'(x) = \frac + \frac f^(c), where c \in - 2h, x + 2h/math>. For other stencil configurations and derivative orders, th
Finite Difference Coefficients Calculator
is a tool that can be used to generate derivative approximation methods for any stencil with any derivative order (provided a solution exists).


Higher derivatives

Using Newton's difference quotient, : f'(x) = \lim_ \frac the following can be shown (for ''n''>0): :f^(x) = \lim_ \frac \sum_^n (-1)^ \binom f(x + kh)


Complex-variable methods

The classical finite-difference approximations for numerical differentiation are ill-conditioned. However, if f is a
holomorphic function In mathematics, a holomorphic function is a complex-valued function of one or more complex variables that is complex differentiable in a neighbourhood of each point in a domain in complex coordinate space . The existence of a complex derivativ ...
, real-valued on the real line, which can be evaluated at points in the complex plane near x, then there are
stable A stable is a building in which livestock, especially horses, are kept. It most commonly means a building that is divided into separate stalls for individual animals and livestock. There are many different types of stables in use today; the ...
methods. For example, the first derivative can be calculated by the complex-step derivative formula: :f^\prime(x) = \frac + O(h^2), \quad \mathrm:=-1. The recommended step size to obtain accurate derivatives for a range of conditions is h = 10^. This formula can be obtained by Taylor series expansion: :f(x+\mathrmh) = f(x)+\mathrmhf^\prime(x)-h^2f''(x)/2!-\mathrmh^3f^(x)/3!+\cdots. The complex-step derivative formula is only valid for calculating first-order derivatives. A generalization of the above for calculating derivatives of any order employs
multicomplex numbers In mathematics, the multicomplex number systems \Complex_n are defined inductively as follows: Let C0 be the real number system. For every let ''i'n'' be a square root of −1, that is, an imaginary unit. Then \Complex_ = \lbrace z = x + y ...
, resulting in multicomplex derivatives. :f^(x) \approx \frac where the \mathrm^ denote the multicomplex imaginary units; \mathrm^ \equiv \mathrm. The \mathcal^_k operator extracts the kth component of a multicomplex number of level n, e.g., \mathcal^_0 extracts the real component and \mathcal^_ extracts the last, “most imaginary” component. The method can be applied to mixed derivatives, e.g. for a second-order derivative :\frac \approx \frac A C++ implementation of multicomplex arithmetics is available. In general, derivatives of any order can be calculated using Cauchy's integral formula: : f^(a) = \frac \oint_\gamma \frac \,\mathrmz, where the integration is done
numerically Numerical analysis is the study of algorithms that use numerical approximation (as opposed to symbolic manipulations) for the problems of mathematical analysis (as distinguished from discrete mathematics). It is the study of numerical methods th ...
. Using complex variables for numerical differentiation was started by Lyness and Moler in 1967. Their algorithm is applicable to higher-order derivatives. A method based on numerical inversion of a complex Laplace transform was developed by Abate and Dubner. An algorithm that can be used without requiring knowledge about the method or the character of the function was developed by Fornberg.


Differential quadrature

Differential quadrature is the approximation of derivatives by using weighted sums of function values. Differential quadrature is of practical interest because its allows one to compute derivatives from noisy data. The name is in analogy with ''quadrature'', meaning numerical integration, where weighted sums are used in methods such as Simpson's method or the Trapezoidal rule. There are various methods for determining the weight coefficients, for example, the Savitzky–Golay filter. Differential quadrature is used to solve partial differential equations. There are further methods for computing derivatives from noisy data.


See also

* * * * * * * List of numerical-analysis software


References


External links


Numerical Differentiation
from wolfram.com

at ttp://numericalmethods.eng.usf.edu/ Numerical Methods for STEM Undergraduate* tp://math.nist.gov/pub/repository/diff/src/DIFF Fortran code for the numerical differentiation of a function using Neville's process to extrapolate from a sequence of simple polynomial approximations.
NAG Library numerical differentiation routines
* http://graphulator.co
Online numerical graphing calculator with calculus function.


* ttps://blogs.mathworks.com/cleve/2013/10/14/complex-step-differentiation/ Complex Step Differentiationbr>Differentiation With(out) a Difference
by Nicholas Higham, SIAM News.
findiff Python project
{{DEFAULTSORT:Numerical Differentiation Numerical analysis Differential calculus