Finite difference coefficient
In mathematics, to approximate a derivative to an arbitrary order of accuracy, it is possible to use the finite difference. A finite difference can be central, forward or backward.
Central finite difference
This table contains the coefficients of the central differences, for several orders of accuracy and with uniform grid spacing:[1]
Derivative | Accuracy | −5 | −4 | −3 | −2 | −1 | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | −1/2 | 0 | 1/2 | ||||||||
4 | 1/12 | −2/3 | 0 | 2/3 | −1/12 | |||||||
6 | −1/60 | 3/20 | −3/4 | 0 | 3/4 | −3/20 | 1/60 | |||||
8 | 1/280 | −4/105 | 1/5 | −4/5 | 0 | 4/5 | −1/5 | 4/105 | −1/280 | |||
2 | 2 | 1 | −2 | 1 | ||||||||
4 | −1/12 | 4/3 | −5/2 | 4/3 | −1/12 | |||||||
6 | 1/90 | −3/20 | 3/2 | −49/18 | 3/2 | −3/20 | 1/90 | |||||
8 | −1/560 | 8/315 | −1/5 | 8/5 | −205/72 | 8/5 | −1/5 | 8/315 | −1/560 | |||
3 | 2 | −1/2 | 1 | 0 | −1 | 1/2 | ||||||
4 | 1/8 | −1 | 13/8 | 0 | −13/8 | 1 | −1/8 | |||||
6 | −7/240 | 3/10 | −169/120 | 61/30 | 0 | −61/30 | 169/120 | −3/10 | 7/240 | |||
4 | 2 | 1 | −4 | 6 | −4 | 1 | ||||||
4 | −1/6 | 2 | −13/2 | 28/3 | −13/2 | 2 | −1/6 | |||||
6 | 7/240 | −2/5 | 169/60 | −122/15 | 91/8 | −122/15 | 169/60 | −2/5 | 7/240 | |||
5 | 2 | −1/2 | 2 | −5/2 | 0 | 5/2 | −2 | 1/2 | ||||
4 | 1/6 | −3/2 | 13/3 | −29/6 | 0 | 29/6 | −13/3 | 3/2 | −1/6 | |||
6 | −13/288 | 19/36 | −87/32 | 13/2 | −323/48 | 0 | 323/48 | −13/2 | 87/32 | −19/36 | 13/288 | |
6 | 2 | 1 | −6 | 15 | −20 | 15 | −6 | 1 | ||||
4 | −1/4 | 3 | −13 | 29 | −75/2 | 29 | −13 | 3 | −1/4 | |||
6 | 13/240 | −19/24 | 87/16 | −39/2 | 323/8 | −1023/20 | 323/8 | −39/2 | 87/16 | −19/24 | 13/240 |
For example, the third derivative with a second-order accuracy is
- [math]\displaystyle{ f'''(x_{0}) \approx \frac{-\frac{1}{2}f(x_{-2}) + f(x_{-1}) -f(x_{+1}) + \frac{1}{2}f(x_{+2})}{h^3_x} + O\left(h_x^2 \right), }[/math]
where [math]\displaystyle{ h_x }[/math] represents a uniform grid spacing between each finite difference interval, and [math]\displaystyle{ x_n = x_0 + n h_x }[/math].
For the [math]\displaystyle{ m }[/math]-th derivative with accuracy [math]\displaystyle{ n }[/math], there are [math]\displaystyle{ 2p + 1 = 2 \left\lfloor \frac{m+1}{2} \right\rfloor - 1 + n }[/math] central coefficients [math]\displaystyle{ a_{-p}, a_{-p+1}, ..., a_{p-1}, a_p }[/math]. These are given by the solution of the linear equation system
- [math]\displaystyle{ \begin{pmatrix} 1 & 1 & ... & 1 & 1 \\ -p & -p+1 & ... & p-1 & p \\ (-p)^2 & (-p+1)^2 &... & (p-1)^2 & p^2 \\ ... & ... &...&...&... \\ ... & ... &...&...&... \\ ... & ... &...&...&... \\ (-p)^{2p} & (-p+1)^{2p} & ... & (p-1)^{2p} & p^{2p} \end{pmatrix} \begin{pmatrix} a_{-p} \\ a_{-p+1} \\ a_{-p+2} \\ ... \\ ... \\ ... \\ a_p \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \\ 0 \\ ... \\ m! \\ ...\\ 0 \end{pmatrix}, }[/math]
where the only non-zero value on the right hand side is in the [math]\displaystyle{ (m+1) }[/math]-th row.
An open source implementation for calculating finite difference coefficients of arbitrary derivates and accuracy order in one dimension is available.[2]
The theory of Lagrange polynomials provides explicit formulas for the finite difference coefficients.[3] For the first six derivatives we have the following:
Derivative | [math]\displaystyle{ a_0 }[/math] | [math]\displaystyle{ a_p (p \neq 0) }[/math] |
---|---|---|
1 | [math]\displaystyle{ 0 }[/math] | [math]\displaystyle{ \frac{(-1)^{p+1}(n!)^2}{p (n-p)!(n+p)!} }[/math] |
2 | [math]\displaystyle{ - 2 H_{n,2} }[/math] | [math]\displaystyle{ \frac{2(-1)^{p+1}(n!)^2}{p^2 (n-p)!(n+p)!} }[/math] |
3 | [math]\displaystyle{ 0 }[/math] | [math]\displaystyle{ \frac{6(-1)^{p+1}(n!)^2}{p^3 (n-p)!(n+p)!}(1 - p^2 H_{n,2}) }[/math] |
4 | [math]\displaystyle{ 12 (H_{n,2}^2 - H_{n,4}) }[/math] | [math]\displaystyle{ \frac{24(-1)^{p+1}(n!)^2}{p^4 (n-p)!(n+p)!}(1 - p^2 H_{n,2}) }[/math] |
5 | [math]\displaystyle{ 0 }[/math] | [math]\displaystyle{ \frac{120(-1)^{p+1}(n!)^2}{p^5 (n-p)!(n+p)!}\left(1 - p^2 H_{n,2}+\frac{p^4}{2}(H_{n,2}^2-H_{n,4})\right) }[/math] |
6 | [math]\displaystyle{ - 120 H_{n,2}^3 + 360 H_{n,2}H_{n,4} - 120 H_{n,6} }[/math] | [math]\displaystyle{ \frac{720(-1)^{p+1}(n!)^2}{p^6 (n-p)!(n+p)!}\left(1 - p^2 H_{n,2}+\frac{p^4}{2}(H_{n,2}^2-H_{n,4})\right) }[/math] |
where [math]\displaystyle{ H_{n,m} }[/math] are generalized harmonic numbers.
Forward finite difference
This table contains the coefficients of the forward differences, for several orders of accuracy and with uniform grid spacing:[1]
Derivative | Accuracy | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | −1 | 1 | |||||||
2 | −3/2 | 2 | −1/2 | |||||||
3 | −11/6 | 3 | −3/2 | 1/3 | ||||||
4 | −25/12 | 4 | −3 | 4/3 | −1/4 | |||||
5 | −137/60 | 5 | −5 | 10/3 | −5/4 | 1/5 | ||||
6 | −49/20 | 6 | −15/2 | 20/3 | −15/4 | 6/5 | −1/6 | |||
2 | 1 | 1 | −2 | 1 | ||||||
2 | 2 | −5 | 4 | −1 | ||||||
3 | 35/12 | −26/3 | 19/2 | −14/3 | 11/12 | |||||
4 | 15/4 | −77/6 | 107/6 | −13 | 61/12 | −5/6 | ||||
5 | 203/45 | −87/5 | 117/4 | −254/9 | 33/2 | −27/5 | 137/180 | |||
6 | 469/90 | −223/10 | 879/20 | −949/18 | 41 | −201/10 | 1019/180 | −7/10 | ||
3 | 1 | −1 | 3 | −3 | 1 | |||||
2 | −5/2 | 9 | −12 | 7 | −3/2 | |||||
3 | −17/4 | 71/4 | −59/2 | 49/2 | −41/4 | 7/4 | ||||
4 | −49/8 | 29 | −461/8 | 62 | −307/8 | 13 | −15/8 | |||
5 | −967/120 | 638/15 | −3929/40 | 389/3 | −2545/24 | 268/5 | −1849/120 | 29/15 | ||
6 | −801/80 | 349/6 | −18353/120 | 2391/10 | −1457/6 | 4891/30 | −561/8 | 527/30 | −469/240 | |
4 | 1 | 1 | −4 | 6 | −4 | 1 | ||||
2 | 3 | −14 | 26 | −24 | 11 | −2 | ||||
3 | 35/6 | −31 | 137/2 | −242/3 | 107/2 | −19 | 17/6 | |||
4 | 28/3 | −111/2 | 142 | −1219/6 | 176 | −185/2 | 82/3 | −7/2 | ||
5 | 1069/80 | −1316/15 | 15289/60 | −2144/5 | 10993/24 | −4772/15 | 2803/20 | −536/15 | 967/240 |
For example, the first derivative with a third-order accuracy and the second derivative with a second-order accuracy are
- [math]\displaystyle{ \displaystyle f'(x_{0}) \approx \displaystyle \frac{-\frac{11}{6}f(x_{0}) + 3f(x_{+1}) -\frac{3}{2}f(x_{+2}) +\frac{1}{3}f(x_{+3}) }{h_{x}} + O\left(h_{x}^3 \right), }[/math]
- [math]\displaystyle{ \displaystyle f''(x_{0}) \approx \displaystyle \frac{2f(x_{0}) - 5f(x_{+1}) + 4f(x_{+2}) - f(x_{+3}) }{h_{x}^2} + O\left(h_{x}^2 \right), }[/math]
while the corresponding backward approximations are given by
- [math]\displaystyle{ \displaystyle f'(x_{0}) \approx \displaystyle \frac{\frac{11}{6}f(x_{0}) - 3f(x_{-1}) +\frac{3}{2}f(x_{-2}) -\frac{1}{3}f(x_{-3}) }{h_{x}} + O\left(h_{x}^3 \right), }[/math]
- [math]\displaystyle{ \displaystyle f''(x_{0}) \approx \displaystyle \frac{2f(x_{0}) - 5f(x_{-1}) + 4f(x_{-2}) - f(x_{-3}) }{h_{x}^2} + O\left(h_{x}^2 \right), }[/math]
Backward finite difference
To get the coefficients of the backward approximations from those of the forward ones, give all odd derivatives listed in the table in the previous section the opposite sign, whereas for even derivatives the signs stay the same. The following table illustrates this:[4]
Derivative | Accuracy | −8 | −7 | −6 | −5 | −4 | −3 | −2 | −1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | −1 | 1 | |||||||
2 | 1/2 | −2 | 3/2 | |||||||
3 | −1/3 | 3/2 | −3 | 11/6 | ||||||
2 | 1 | 1 | −2 | 1 | ||||||
2 | −1 | 4 | −5 | 2 | ||||||
3 | 1 | −1 | 3 | −3 | 1 | |||||
2 | 3/2 | −7 | 12 | −9 | 5/2 | |||||
4 | 1 | 1 | −4 | 6 | −4 | 1 | ||||
2 | −2 | 11 | −24 | 26 | −14 | 3 |
Arbitrary stencil points
For a given arbitrary stencil points [math]\displaystyle{ \displaystyle s }[/math] of length [math]\displaystyle{ \displaystyle N }[/math] with the order of derivatives [math]\displaystyle{ \displaystyle d \lt N }[/math], the finite difference coefficients can be obtained by solving the linear equations [5]
- [math]\displaystyle{ \begin{pmatrix} s_1^0 & \cdots & s_N^0 \\ \vdots & \ddots & \vdots \\ s_1^{N-1} & \cdots & s_N^{N-1} \end{pmatrix} \begin{pmatrix} a_1 \\ \vdots \\ a_N \end{pmatrix} = d! \begin{pmatrix} \delta_{0,d} \\ \vdots\\ \delta_{i,d}\\ \vdots\\ \delta_{N-1,d} \end{pmatrix}, }[/math]
where [math]\displaystyle{ \delta_{i,j} }[/math] is the Kronecker delta, equal to one if [math]\displaystyle{ i = j }[/math], and zero otherwise.
Example, for [math]\displaystyle{ s = [-3, -2, -1, 0, 1] }[/math], order of differentiation [math]\displaystyle{ d = 4 }[/math]:
- [math]\displaystyle{ \begin{pmatrix} a_{1} \\ a_{2} \\ a_{3} \\ a_4 \\ a_5 \end{pmatrix} = \begin{pmatrix} 1 & 1 & 1 & 1 & 1 \\ -3 & -2 & -1 & 0 & 1 \\ 9 & 4 & 1 & 0 & 1 \\ -27 & -8 & -1 & 0 & 1 \\ 81 & 16 & 1 & 0 & 1 \\ \end{pmatrix}^{-1} \begin{pmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 24 \end{pmatrix} = \begin{pmatrix} 1 \\ -4 \\ 6 \\ -4\\ 1 \end{pmatrix}. }[/math]
The order of accuracy of the approximation takes the usual form [math]\displaystyle{ O\left(h_{x}^{(N-d)}\right) }[/math][citation needed].
See also
References
- ↑ 1.0 1.1 Fornberg, Bengt (1988), "Generation of Finite Difference Formulas on Arbitrarily Spaced Grids", Mathematics of Computation 51 (184): 699–706, doi:10.1090/S0025-5718-1988-0935077-0, ISSN 0025-5718.
- ↑ "A Python package for finite difference numerical derivatives in arbitrary number of dimensions.". 14 October 2021. https://github.com/maroba/findiff.
- ↑ "Finite differences coefficients". 5 June 2023. https://math.stackexchange.com/questions/789107/finite-differences-coefficients.
- ↑ Taylor, Cameron (12 December 2019). "Finite Difference Coefficients Calculator". MIT. http://web.media.mit.edu/~crtaylor/calculator.html.
- ↑ "Finite Difference Coefficients Calculator". http://web.media.mit.edu/~crtaylor/calculator.html.
Original source: https://en.wikipedia.org/wiki/Finite difference coefficient.
Read more |