Divided differences
In mathematics, divided differences is an algorithm, historically used for computing tables of logarithms and trigonometric functions.[citation needed] Charles Babbage's difference engine, an early mechanical calculator, was designed to use this algorithm in its operation.[1]
Divided differences is a recursive division process. Given a sequence of data points , the method calculates the coefficients of the interpolation polynomial of these points in the Newton form.
It is sometimes denoted by a delta with a bar: or .
Definition
[edit | edit source]Given n + 1 data points where the are assumed to be pairwise distinct, the forward divided differences are defined as:
To make the recursive process of computation clearer, the divided differences can be put in tabular form, where the columns correspond to the value of j above, and each entry in the table is computed from the difference of the entries to its immediate lower left and to its immediate upper left, divided by a difference of corresponding x-values:
Notation
[edit | edit source]Note that the divided difference depends on the values and , but the notation hides the dependency on the x-values. If the data points are given by a function f, one sometimes writes the divided difference in the notation Other notations for the divided difference of the function ƒ on the nodes x0, ..., xn are:
Example
[edit | edit source]Divided differences for and the first few values of :
Thus, the table corresponding to these terms upto two columns has the following form:
Properties
[edit | edit source]- Linearity
- Leibniz rule
- Divided differences are symmetric: If is a permutation then
- Polynomial interpolation in the Newton form: if is a polynomial function of degree , and is the divided difference, then
- If is a polynomial function of degree , then
- Mean value theorem for divided differences: if is n times differentiable, then for a number in the open interval determined by the smallest and largest of the 's.
Matrix form
[edit | edit source]The divided difference scheme can be put into an upper triangular matrix:
Then it holds
- if is a scalar
- This follows from the Leibniz rule. It means that multiplication of such matrices is commutative. Summarised, the matrices of divided difference schemes with respect to the same set of nodes x form a commutative ring.
- Since is a triangular matrix, its eigenvalues are obviously .
- Let be a Kronecker delta-like function, that is Obviously , thus is an eigenfunction of the pointwise function multiplication. That is is somehow an "eigenmatrix" of : . However, all columns of are multiples of each other, the matrix rank of is 1. So you can compose the matrix of all eigenvectors of from the -th column of each . Denote the matrix of eigenvectors with . Example The diagonalization of can be written as
Polynomials and power series
[edit | edit source]The matrix contains the divided difference scheme for the identity function with respect to the nodes , thus contains the divided differences for the power function with exponent . Consequently, you can obtain the divided differences for a polynomial function by applying to the matrix : If and then This is known as Opitz' formula.[2][3]
Now consider increasing the degree of to infinity, i.e. turn the Taylor polynomial into a Taylor series. Let be a function which corresponds to a power series. You can compute the divided difference scheme for by applying the corresponding matrix series to : If and then
Alternative characterizations
[edit | edit source]Expanded form
[edit | edit source]
With the help of the polynomial function this can be written as
Peano form
[edit | edit source]If and , the divided differences can be expressed as[4] where is the -th derivative of the function and is a certain B-spline of degree for the data points , given by the formula
This is a consequence of the Peano kernel theorem; it is called the Peano form of the divided differences and is the Peano kernel for the divided differences, all named after Giuseppe Peano.
Forward and backward differences
[edit | edit source]When the data points are equidistantly distributed we get the special case called forward differences. They are easier to calculate than the more general divided differences.
Given n+1 data points with the forward differences are defined as whereas the backward differences are defined as: Thus the forward difference table is written as:whereas the backwards difference table is written as:
The relationship between divided differences and forward differences is[5] whereas for backward differences:[citation needed]
Explicit formula
[edit | edit source]When the data points are equispaced we can also derive an explicit formula for . For any fixed and such that ,
Proof. We prove this by induction on :
Base case: Let and . Then by definition , and
Induction step: Assume the above formula holds until and consider such that . By the recursive definition we have
We can use our inductive hypothesis on both members of the left side, and obtain
This can be rearranged as
where when . We obtain our thesis for by substituting the identity
See also
[edit | edit source]- Difference quotient
- Neville's algorithm
- Polynomial interpolation
- Mean value theorem for divided differences
- Nörlund–Rice integral
- Pascal's triangle
- Lagrange polynomial
References
[edit | edit source]- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ de Boor, Carl, Divided Differences, Surv. Approx. Theory 1 (2005), 46–69, [1]
- ^ Opitz, G. Steigungsmatrizen, Z. Angew. Math. Mech. (1964), 44, T52–T54
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
External links
[edit | edit source]- An implementation in Haskell.
de:Polynominterpolation#Bestimmung der Koeffizienten: Schema der dividierten Differenzen