Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Polynomial interpolation
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Form of interpolation}} In [[numerical analysis]], '''polynomial interpolation''' is the [[interpolation]] of a given [[data set]] by the [[polynomial]] of lowest possible degree that passes through the points in the dataset. Given a set of {{math|''n'' + 1}} data points <math>(x_0,y_0), \ldots, (x_n,y_n)</math>, with no two <math>x_j</math> the same, a polynomial function <math>p(x)=a_0+a_1x+\cdots+a_nx^n</math> is said to '''interpolate''' the data if <math>p(x_j)=y_j</math> for each <math>j\in\{0,1,\dotsc,n\}</math>. There is always a unique such polynomial, commonly given by two explicit formulas, the [[Lagrange polynomial]]s and [[Newton polynomial]]s. == Applications == The original use of interpolation polynomials was to approximate values of important [[transcendental function]]s such as [[natural logarithm]] and [[trigonometric function]]s. Starting with a few accurately computed data points, the corresponding interpolation polynomial will approximate the function at an arbitrary nearby point. Polynomial interpolation also forms the basis for algorithms in [[numerical quadrature]] ([[Simpson's rule]]) and [[numerical ordinary differential equations]] ([[multigrid method]]s). In [[computer graphics]], polynomials can be used to approximate complicated plane curves given a few specified points, for example the shapes of letters in [[typography]]. This is usually done with [[Bézier curve]]s, which are a simple generalization of interpolation polynomials (having specified tangents as well as specified points). In numerical analysis, polynomial interpolation is essential to perform sub-quadratic multiplication and squaring, such as [[Karatsuba multiplication]] and [[Toom–Cook multiplication]], where interpolation through points on a product polynomial yields the specific product required. For example, given ''a'' = ''f''(''x'') = ''a''<sub>0</sub>''x''<sup>0</sup> + ''a''<sub>1</sub>''x''<sup>1</sup> + ··· and ''b'' = ''g''(''x'') = ''b''<sub>0</sub>''x''<sup>0</sup> + ''b''<sub>1</sub>''x''<sup>1</sup> + ···, the product ''ab'' is a specific value of ''W''(''x'') = ''f''(''x'')''g''(''x''). One may easily find points along ''W''(''x'') at small values of ''x'', and interpolation based on those points will yield the terms of ''W''(''x'') and the specific product ''ab''. As fomulated in Karatsuba multiplication, this technique is substantially faster than quadratic multiplication, even for modest-sized inputs, especially on parallel hardware. In [[computer science]], polynomial interpolation also leads to algorithms for [[Secure multi-party computation|secure multi party computation]] and [[secret sharing]]. ==Interpolation theorem== For any <math>n+1</math> bivariate data points <math>(x_0,y_0),\dotsc,(x_n,y_n) \in \R^2</math>, where no two <math>x_j</math> are the same, there exists a unique polynomial <math>p(x)</math> of degree at most <math>n</math> that interpolates these points, i.e. <math>p(x_0)=y_0, \ldots, p(x_n)=y_n</math>.<ref>{{Cite book|title=Foundations of Applied Mathematics Volume 2: Algorithms, Approximation, Optimization | last1=Humpherys|first1=Jeffrey |last2=Jarvis|first2=Tyler J. | publisher=Society for Industrial and Applied Mathematics | year=2020 | isbn=978-1-611976-05-2 | pages=418 | chapter=9.2 - Interpolation}}</ref> Equivalently, for a fixed choice of interpolation nodes <math>x_j</math>, polynomial interpolation defines a linear [[bijection]] <math>L_n</math> between the (''n''+1)-tuples of real-number values <math>(y_0,\ldots,y_n)\in \R^{n+1}</math> and the [[vector space]] <math>P(n)</math> of real polynomials of degree at most ''n'': <math display="block">L_n : \mathbb{R}^{n+1} \stackrel{\sim}{\longrightarrow}\, P(n).</math> This is a type of [[Unisolvent functions|unisolvence]] theorem. The theorem is also valid over any infinite [[Field (mathematics)|field]] in place of the real numbers <math>\R</math>, for example the rational or complex numbers. ===First proof=== Consider the [[Lagrange polynomials|Lagrange basis functions]] <math>L_0(x),\ldots,L_n(x)</math> given by: <math display="block">L_j(x)=\prod_{i\neq j}\frac{x-x_i}{x_j-x_i} = \frac{(x-x_0)\cdots(x-x_{j-1})(x-x_{j+1})\cdots(x-x_n)} {(x_j-x_0)\cdots(x_j-x_{j-1})(x_j-x_{j+1})\cdots(x_j-x_n)}.</math> Notice that <math>L_j(x)</math> is a polynomial of degree <math>n</math>, and we have <math>L_j(x_k)=0</math> for each <math>j\neq k</math>, while <math>L_k(x_k)=1</math>. It follows that the linear combination: <math display="block">p(x) = \sum_{j=0}^n y_j L_j(x)</math> has <math>p(x_k)=\sum_j y_j \,L_j(x_k) = y_k </math>, so <math>p(x)</math> is an interpolating polynomial of degree <math>n</math>. To prove uniqueness, assume that there exists another interpolating polynomial <math>q(x)</math> of degree at most <math>n</math>, so that <math>p(x_k)=q(x_k)</math> for all <math>k=0,\dotsc,n</math>. Then <math>p(x)-q(x)</math> is a polynomial of degree at most <math>n</math> which has <math>n+1</math> distinct zeros (the <math>x_k</math>). But a non-zero polynomial of degree at most <math>n</math> can have at most <math>n</math> zeros,{{efn|This follows from the [[Factor theorem]] for polynomial division.}} so <math>p(x)-q(x)</math> must be the zero polynomial, i.e. <math>p(x)=q(x)</math>.<ref name="Epperson 2013">{{Cite book |last=Epperson |first=James F. |title=An introduction to numerical methods and analysis |date=2013 |publisher=Wiley |isbn=978-1-118-36759-9 |edition=2nd |location=Hoboken, NJ}}</ref> ===Second proof=== Write out the interpolation polynomial in the form {{NumBlk||<math display="block">p(x) = a_n x^n + a_{n-1} x^{n-1} + \cdots + a_2 x^2 + a_1 x + a_0. </math>|{{EquationRef|1}}}} Substituting this into the interpolation equations <math>p(x_j) = y_j</math>, we get a [[system of linear equations]] in the coefficients <math>a_j</math>, which reads in matrix-vector form as the following [[Matrix multiplication|multiplication]]: <math display="block">\begin{bmatrix} x_0^n & x_0^{n-1} & x_0^{n-2} & \ldots & x_0 & 1 \\ x_1^n & x_1^{n-1} & x_1^{n-2} & \ldots & x_1 & 1 \\ \vdots & \vdots & \vdots & & \vdots & \vdots \\ x_n^n & x_n^{n-1} & x_n^{n-2} & \ldots & x_n & 1 \end{bmatrix} \begin{bmatrix} a_n \\ a_{n-1} \\ \vdots \\ a_0 \end{bmatrix} = \begin{bmatrix} y_0 \\ y_1 \\ \vdots \\ y_n \end{bmatrix}.</math> An interpolant <math>p(x)</math> corresponds to a solution <math>A = (a_n,\ldots,a_0)</math> of the above matrix equation <math>X \cdot A = Y</math>. The matrix ''X'' on the left is a [[Vandermonde matrix]], whose determinant is known to be <math>\textstyle \det(X) = \prod_{1 \le i < j \le n} (x_j - x_i), </math> which is non-zero since the nodes <math>x_j</math> are all distinct. This ensures that the matrix is [[Invertible matrix|invertible]] and the equation has the unique solution <math>A = X^{-1}\cdot Y</math>; that is, <math>p(x)</math> exists and is unique. ===Corollary=== If <math>f(x)</math> is a polynomial of degree at most <math>n</math>, then the interpolating polynomial of <math>f(x)</math> at <math>n+1</math> distinct points is <math>f(x)</math> itself. ==Constructing the interpolation polynomial== [[File:Interpolation example polynomial.svg|thumb|right|The red dots denote the data points {{math|(''x<sub>k</sub>'', ''y<sub>k</sub>'')}}, while the blue curve shows the interpolation polynomial.]] === Lagrange Interpolation === {{main article|Lagrange polynomial}} We may write down the polynomial immediately in terms of [[Lagrange polynomial]]s as: <math display="block">\begin{align} p(x) &= \frac{(x-x_1)(x-x_2)\cdots(x-x_n)}{(x_0-x_1)(x_0-x_2)\cdots(x_0-x_n)} y_0 \\ [4pt] &+ \frac{(x-x_0)(x-x_2)\cdots(x-x_n)}{(x_1-x_0)(x_1-x_2) \cdots(x_1-x_n)}y_1 \\ [4pt] &+ \cdots\\ [4pt] &+\frac{(x-x_0)(x-x_1)\cdots(x-x_{n-1})}{(x_n-x_0)(x_n-x_1)\cdots(x_n-x_{n-1})}y_n \\ [7pt] &=\sum_{i=0}^n \Biggl( \prod_{\stackrel{\!0\,\leq\, j\,\leq\, n}{j\,\neq\, i}} \frac{x-x_j}{x_i-x_j} \Biggr) y_i =\sum_{i=0}^n \frac{p(x)}{p'(x_i)(x-x_i)}\,y_i \end{align}</math>For matrix arguments, this formula is called [[Sylvester's formula]] and the matrix-valued Lagrange polynomials are the [[Frobenius covariant]]s. : === Newton Interpolation === {{See also|Newton polynomial|Divided differences}} ==== Theorem ==== For a polynomial <math>p_n</math> of degree less than or equal to <math>n</math>, that interpolates <math>f</math> at the nodes <math>x_i</math> where <math>i = 0,1,2,3,\cdots,n</math>. Let <math>p_{n+1}</math> be the polynomial of degree less than or equal to <math>n+1</math> that interpolates <math>f</math> at the nodes <math>x_i</math> where <math>i = 0,1,2,3,\cdots,n, n+1</math>. Then <math>p_{n+1}</math> is given by:<math display="block">p_{n+1}(x) = p_n(x) +a_{n+1}w_n(x) </math>where <math display="inline">w_n(x) := \prod_{i=0}^n (x-x_i) </math> also known as Newton basis and <math display="inline">a_{n+1} :={f(x_{n+1})-p_n(x_{n+1}) \over w_n(x_{n+1})} </math>. '''Proof:''' This can be shown for the case where <math>i = 0,1,2,3,\cdots,n</math>:<math display="block">p_{n+1}(x_i) = p_n(x_i) +a_{n+1}\prod_{j=0}^n (x_i-x_j) = p_n(x_i) </math>and when <math>i = n+1</math>:<math display="block">p_{n+1}(x_{n+1}) = p_n(x_{n+1}) +{f(x_{n+1})-p_n(x_{n+1}) \over w_n(x_{n+1})} w_n(x_{n+1}) = f(x_{n+1}) </math>By the uniqueness of interpolated polynomials of degree less than <math>n+1</math>, <math display="inline">p_{n+1}(x) = p_n(x) +a_{n+1}w_n(x) </math> is the required polynomial interpolation. The function can thus be expressed as: <math display="inline">p_{n}(x) = a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+\cdots + a_n(x-x_0)\cdots(x-x_{n-1}) .</math> ==== Polynomial coefficients ==== To find <math>a_i</math>, we have to solve the [[lower triangular matrix]] formed by arranging <math display="inline">p_{n} (x_i)=f(x_i)=y_i </math> from above equation in matrix form: : <math>\begin{bmatrix} 1 & & \ldots & & 0 \\ 1 & x_1-x_0 & & & \\ 1 & x_2-x_0 & (x_2-x_0)(x_2-x_1) & & \vdots \\ \vdots & \vdots & & \ddots & \\ 1 & x_k-x_0 & \ldots & \ldots & \prod_{j=0}^{n-1}(x_n - x_j) \end{bmatrix} \begin{bmatrix} a_0 \\ \\ \vdots \\ \\ a_{n} \end{bmatrix} = \begin{bmatrix} y_0 \\ \\ \vdots \\ \\ y_{n} \end{bmatrix}</math> The coefficients are derived as : <math>a_j := [y_0,\ldots,y_j]</math> where : <math>[y_0,\ldots,y_j]</math> is the notation for [[divided differences]]. Thus, [[Newton polynomial]]s are used to provide a polynomial interpolation formula of n points.<ref name="Epperson 2013"/> {| class="toccolours collapsible collapsed" width="80%" style="text-align:left" !Proof |- | The first few coefficients can be calculated using the system of equations. The form of n-th coefficient is assumed for proof by mathematical induction. <math>\begin{align} a_0 &= y_0 = [y_0] \\ a_1 &= {y_1-y_0 \over x_1 - x_0}= [y_0,y_1] \\ \vdots\\ a_n &= [y_0,\cdots,y_n] \quad \text{(let)}\\ \end{align} </math> Let Q be polynomial interpolation of points <math>(x_1, y_1), \ldots, (x_n, y_n)</math>. Adding <math>(x_0,y_0)</math> to the polynomial Q: <math>Q(x)+ a'_n (x - x_1)\cdot\ldots\cdot(x - x_n) = P_{n}(x), </math> where <math display="inline">a'_n(x_{0} - x_1)\ldots(x_{0}-x_{n}) = y_{0} - Q(x_{0}) </math>. By uniqueness of the interpolating polynomial of the points <math>(x_0, y_0), \ldots, (x_n, y_n)</math>, equating the coefficients of <math>x^{n-1}</math> we get, <math display="inline">a'_n=[y_0, \ldots, y_{n}] </math>. Hence the polynomial can be expressed as:<math>P_{n}(x)= Q(x)+ [y_0,\ldots,y_n](x - x_1)\cdot\ldots\cdot(x - x_n).</math> Adding <math>(x_{n+1},y_{n+1})</math> to the polynomial Q, it has to satisfiy: <math display="inline">[y_1, \ldots,y_{n+1}](x_{n+1} - x_1)\cdot\ldots\cdot(x_{n+1}-x_{n}) = y_{n+1} - Q(x_{n+1}) </math> where the formula for <math display="inline">a_n </math> and interpolating polynomial are used. The <math display="inline">a_{n+1} </math> term for the polynomial <math display="inline">P_{n+1} </math> can be found by calculating:<math display="block">\begin{align} & [y_0,\ldots,y_{n+1}](x_{n+1} - x_0)\cdot\ldots\cdot(x_{n+1} - x_n)\\ &= \frac{[y_1,\ldots,y_{n+1}] - [y_0,\ldots,y_{n}]}{x_{n+1} - x_0}(x_{n+1} - x_0)\cdot\ldots\cdot(x_{n+1} - x_n) \\ &= \left([y_1,\ldots,y_{n+1}] - [y_0,\ldots,y_{n}]\right) (x_{n+1} - x_1)\cdot\ldots\cdot(x_{n+1} - x_n) \\ &= [y_1,\ldots,y_{n+1}](x_{n+1} - x_1)\cdot\ldots\cdot(x_{n+1} - x_n) - [y_0,\ldots,y_n](x_{n+1} - x_1)\cdot\ldots\cdot(x_{n+1} - x_n) \\ &= (y_{n+1} - Q(x_{n+1})) - [y_0,\ldots,y_n](x_{n+1} - x_1)\cdot\ldots\cdot(x_{n+1} - x_n) \\ &= y_{n+1} - (Q(x_{n+1}) + [y_0,\ldots,y_n](x_{n+1} - x_1)\cdot\ldots\cdot(x_{n+1} - x_n))\\ &=y_{n+1}-P(x_{n+1}). \end{align} </math>which implies that <math>a_{n+1}={y_{n+1}-P_n(x_{n+1}) \over w_n(x_{n+1})} = [y_0,\ldots,y_{n+1}]</math>. Hence it is proved by principle of mathematical induction. |} ==== Newton forward formula ==== The Newton polynomial can be expressed in a simplified form when <math>x_0, x_1, \dots, x_k</math> are arranged consecutively with equal spacing. If <math>x_0, x_1, \dots, x_k</math> are consecutively arranged and equally spaced with <math>{x}_{i}={x}_{0}+ih </math> for ''i'' = 0, 1, ..., ''k'' and some variable x is expressed as <math>{x}={x}_{0}+sh</math>, then the difference <math>x-x_i</math> can be written as <math>(s-i)h</math>. So the Newton polynomial becomes : <math>\begin{align} N(x) &= [y_0] + [y_0,y_1]sh + \cdots + [y_0,\ldots,y_k] s (s-1) \cdots (s-k+1){h}^{k} \\ &= \sum_{i=0}^{k}s(s-1) \cdots (s-i+1){h}^{i}[y_0,\ldots,y_i] \\ &= \sum_{i=0}^{k}{s \choose i}i!{h}^{i}[y_0,\ldots,y_i]. \end{align}</math> Since the relationship between divided differences and [[Divided differences#Forward and backward differences|forward differences]] is given as:<ref>{{cite book |last1=Burden |first1=Richard L. |url=https://archive.org/details/numericalanalysi00rlbu |title=Numerical Analysis |last2=Faires |first2=J. Douglas |date=2011 |isbn=9780538733519 |edition=9th |page=[https://archive.org/details/numericalanalysi00rlbu/page/n146 129] |publisher=Cengage Learning |url-access=limited}}</ref><math display="block">[y_j, y_{j+1}, \ldots , y_{j+n}] = \frac{1}{n!h^n}\Delta^{(n)}y_j,</math>Taking <math>y_i=f(x_i)</math>, if the representation of x in the previous sections was instead taken to be <math>x=x_j+sh</math>, the '''Newton forward interpolation formula''' is expressed as:<math display="block">f(x) \approx N(x)=N(x_j+sh) = \sum_{i=0}^{k}{s \choose i}\Delta^{(i)} f(x_j) </math>which is the interpolation of all points after <math>x_j</math>. It is expanded as:<math display="block">f(x_j+sh)=f(x_j)+\frac{s}{1!}\Delta f(x_j)+ \frac{s(s-1)}{2!}\Delta^2 f(x_j)+\frac{s(s-1)(s-2)}{3!}\Delta^3 f(x_j)+\frac{s(s-1)(s-2)(s-3)}{4!}\Delta^4 f(x_j)+\cdots </math> ==== Newton backward formula ==== If the nodes are reordered as <math>{x}_{k},{x}_{k-1},\dots,{x}_{0}</math>, the Newton polynomial becomes : <math>N(x)=[y_k]+[{y}_{k}, {y}_{k-1}](x-{x}_{k})+\cdots+[{y}_{k},\ldots,{y}_{0}](x-{x}_{k})(x-{x}_{k-1})\cdots(x-{x}_{1}).</math> If <math>{x}_{k},\;{x}_{k-1},\;\dots,\;{x}_{0}</math> are equally spaced with <math>{x}_{i}={x}_{k}-(k-i)h</math> for ''i'' = 0, 1, ..., ''k'' and <math>{x}={x}_{k}+sh</math>, then, : <math>\begin{align} N(x) &= [{y}_{k}]+ [{y}_{k}, {y}_{k-1}]sh+\cdots+[{y}_{k},\ldots,{y}_{0}]s(s+1)\cdots(s+k-1){h}^{k} \\ &=\sum_{i=0}^{k}{(-1)}^{i}{-s \choose i}i!{h}^{i}[{y}_{k},\ldots,{y}_{k-i}]. \end{align}</math> Since the relationship between divided differences and backward differences is given as:{{Citation needed|date=December 2023}}<math display="block">[{y}_{j}, y_{j-1},\ldots,{y}_{j-n}] = \frac{1}{n!h^n}\nabla^{(n)}y_j, </math>taking <math>y_i=f(x_i)</math>, if the representation of x in the previous sections was instead taken to be <math>x=x_j+sh</math>, the '''Newton backward interpolation formula''' is expressed as:<math display="block">f(x) \approx N(x) =N(x_j+sh)=\sum_{i=0}^{k}{(-1)}^{i}{-s \choose i}\nabla^{(i)} f(x_j). </math>which is the interpolation of all points before <math>x_j</math>. It is expanded as:<math display="block">f(x_j+sh)=f(x_j)+\frac{s}{1!}\nabla f(x_j)+ \frac{s(s+1)}{2!}\nabla^2 f(x_j)+\frac{s(s+1)(s+2)}{3!}\nabla^3 f(x_j)+\frac{s(s+1)(s+2)(s+3)}{4!}\nabla^4 f(x_j)+\cdots </math> === Lozenge Diagram === A Lozenge diagram is a diagram that is used to describe different interpolation formulas that can be constructed for a given data set. A line starting on the left edge and tracing across the diagram to the right can be used to represent an interpolation formula if the following rules are followed:<ref name=":0">{{Cite book |last=Hamming |first=Richard W. |title=Numerical methods for scientists and engineers |date=1986 |publisher=Dover |isbn=978-0-486-65241-2 |edition=Unabridged republ. of the 2. ed. (1973) |location=New York}}</ref> [[File:Lozenge_Diagram.svg|thumb|Lozenge Diagram: geometric representation of polynomial interpolations.]] # Left to right steps indicate addition whereas right to left steps indicate subtraction # If the slope of a step is positive, the term to be used is the product of the difference and the factor immediately below it. If the slope of a step is negative, the term to be used is the product of the difference and the factor immediately above it. # If a step is horizontal and passes through a factor, use the product of the factor and the average of the two terms immediately above and below it. If a step is horizontal and passes through a difference, use the product of the difference and the average of the two terms immediately above and below it. The factors are expressed using the formula:<math display="block">C(u+k,n)=\frac{(u+k)(u+k-1)\cdots(u+k-n+1)}{n!} </math> ==== Proof of equivalence ==== If a path goes from <math>\Delta^{n-1}y_s </math> to <math>\Delta^{n+1}y_{s-1} </math>, it can connect through three intermediate steps, (a) through <math>\Delta^{n}y_{s-1} </math>, (b) through <math display="inline">C(u-s ,n) </math> or (c) through <math>\Delta^{n}y_s </math>. Proving the equivalence of these three two-step paths should prove that all (n-step) paths can be morphed with the same starting and ending, all of which represents the same formula. Path (a): <math>C(u-s, n) \Delta^n y_{s-1}+C(u-s+1, n+1) \Delta^{n+1} y_{s-1} </math> Path (b): <math>C(u-s, n) \Delta^n y_s + C(u-s, n+1) \Delta^{n+1} y_{s-1} </math> Path (c): <math>C(u-s, n) \frac{\Delta^n y_{s-1}+\Delta^n y_{s}}{2} \quad+\frac{C(u-s+1, n+1)+C(u-s, n+1)}{2} \Delta^{n+1} y_{s-1} </math> Subtracting contributions from path a and b: <math>\begin{aligned} \text{Path a - Path b}= & C(u-s, n)(\Delta^n y_{s-1}-\Delta^n y_s) +(C(u-s+1, n+1)-C(u-s, n-1)) \Delta^{n+1} y_{s-1} \\ = & - C(u-s, n)\Delta^{n+1} y_{s-1} + C(u-s, n) \frac{(u-s+1)-(u-s-n)}{n+1} \Delta^{n+1} y_{s-1} \\ = & C(u-s, n)(-\Delta^{n+1} y_{s-1}+\Delta^{n+1} y_{s-1} )=0 \\ \end{aligned} </math> Thus, the contribution of either path (a) or path (b) is the same. Since path (c) is the average of path (a) and (b), it also contributes identical function to the polynomial. Hence the equivalence of paths with same starting and ending points is shown. To check if the paths can be shifted to different values in the leftmost corner, taking only two step paths is sufficient: (a) <math>y_{s+1} </math> to <math>y_{s} </math> through <math>\Delta y_{s} </math> or (b) factor between <math>y_{s+1} </math> and <math>y_{s} </math>, to <math>y_{s} </math> through <math>\Delta y_{s} </math> or (c) starting from <math>y_{s} </math>. Path (a) <math>y_{s+1}+C(u-s-1,1) \Delta y_s - C(u-s, 1) \Delta y_s </math> Path (b) <math>\frac{y_{s+1}+y_s}{2}+\frac{C(u-s-1,1)+C(u-s, 1)}{2} \Delta y_s - C(u-s, 1) \Delta y_s </math> Path (c) <math>y_{s} </math> Since <math>\Delta y_{s} = y_{s+1}-y_s </math>, substituting in the above equations shows that all the above terms reduce to <math>y_{s} </math> and are hence equivalent. Hence these paths can be morphed to start from the leftmost corner and end in a common point.<ref name=":0" /> ==== Newton formula ==== Taking negative slope transversal from <math>y_0 </math> to <math>\Delta^n y_0 </math> gives the interpolation formula of all the <math>n+1 </math> consecutively arranged points, equivalent to Newton's forward interpolation formula: <math>\begin{aligned} y(s) &=y_0+C(s, 1) \Delta y_0+C(s, 2) \Delta^2 y_0+C(s, 3) \Delta^3 y_0+\cdots \\ & =y_0+s \Delta y_0+\frac{s(s-1)}{2} \Delta^2 y_0+\frac{s(s-1)(s-2)}{3 !} \Delta^3 y_0+\frac{s(s-1)(s-2)(s-3)}{4 !} \Delta^4 y_0+\cdots \end{aligned} </math> whereas, taking positive slope transversal from <math>y_n </math> to <math>\nabla^n y_n = \Delta^n y_0 </math>, gives the interpolation formula of all the <math>n+1 </math> consecutively arranged points, equivalent to Newton's backward interpolation formula: <math>\begin{aligned} y(u) & = y_k+C(u-k, 1) \Delta y_{k-1}+C(u-k+1,2) \Delta^2 y_{k-2} +C(u - k+2,3) \Delta^3 y_{k-3}+\cdots \\ & = y_k+(u-k) \Delta y_{k-1} +\frac{(u-k+1) (u-k)}{2} \Delta^2 y_{k-2}+\frac{(u-k+2)(u-k+1)(u-k)}{3 !} \Delta^3 y_{k-3}+\cdots \\ y(k+s) & = y_k+(s) \nabla y_{k} +\frac{(s+1) s}{2} \nabla^2 y_{k}+\frac{(s+2)(s+1) s}{3 !} \nabla^3 y_{k}+\frac{(s+3)(s+2)(s+1) s}{4 !} \nabla^4 y_{k}+\cdots \\ \end{aligned} </math> where <math>s=u-k </math> is the number corresponding to that introduced in Newton interpolation. ==== Gauss formula ==== Taking a zigzag line towards the right starting from <math>y_0 </math> with negative slope, we get Gauss forward formula: <math>y(u)=y_0+u \Delta y_0+\frac{u(u-1)}{2} \Delta^2 y_{-1} +\frac{(u+1)u\left(u-1\right)}{3 !} \Delta^3 y_{-1}+ \frac{(u+1)u\left(u-1\right)(u-2)}{4 !} \Delta^4 y_{-2} + \cdots </math> whereas starting from <math>y_0 </math> with positive slope, we get Gauss backward formula: <math>y(u)=y_0+u \Delta y_{-1}+\frac{(u+1)u}{2} \Delta^2 y_{-1} +\frac{(u+1)u\left(u-1\right)}{3 !} \Delta^3 y_{-2}+ \frac{(u+2)(u+1)u\left(u-1\right)}{4 !} \Delta^4 y_{-2} + \cdots </math> ==== Stirling formula ==== By taking a horizontal path towards the right starting from <math>y_0 </math>, we get Stirling formula: <math>\begin{aligned} y(u)&= y_0 +u \frac{\Delta y_0+\Delta y_{-1}}{2}+\frac{C(u+1,2)+C(u, 2)}{2} \Delta^2 y_{-1} +C(u+1,3) \frac{\Delta^3 y_{-2}+\Delta^3 y_{-1}}{2}+\cdots \\ & = y_0+u \frac{\Delta y_0+\Delta y_{-1}}{2}+\frac{u^2}{2} \Delta^2 y_{-1}+\frac{u(u^2-1)}{3 !} \frac{\Delta^3 y_{-2}+\Delta^3 y_{-1}}{2}+\frac{u^2(u^2-1)}{4!}\Delta^4 y_{-2}+\cdots \end{aligned} </math> Stirling formula is the average of Gauss forward and Gauss backward formulas. ==== Bessel formula ==== By taking a horizontal path towards the right starting from factor between <math>y_0 </math> and <math>y_1 </math>, we get Bessel formula: <math>\begin{align} y(u)&=1{\frac{y_{0}+y_{1}}{2}}+{\frac{C(u,1)+C(u-1,1)}{2}}\Delta y_{0}+C(u,2){\frac{\Delta^{2}y_{-1}+\Delta^{2}y_{0}}{2}}+\cdots\\ &= \frac{y_{0}+y_{1}}{2}+\left(u-{\frac{1}{2}}\right)\Delta y_{0}+\frac{u(u-1)}{2}\frac{\Delta^{2}y_{-1} +\Delta^{2}y_{0}}{2}+\frac{\left(u-{\frac{1}{2}}\right)u\left( u-1\right)}{3!}\Delta^{3} y_{0} + \frac{(u+1)u(u-1)(u-2)}{4!}\frac{\Delta^{4}y_{-1}+\Delta^{4}y_{-2}}{2}+\cdots\\ \end{align} </math> === Vandermonde Algorithms === The [[Vandermonde matrix]] in the second proof above may have large [[condition number]],<ref>{{cite journal |last=Gautschi |first=Walter |year=1975 |title=Norm Estimates for Inverses of Vandermonde Matrices |journal=Numerische Mathematik |volume=23 |issue=4 |pages=337–347 |doi=10.1007/BF01438260 |s2cid=122300795}}</ref> causing large errors when computing the coefficients {{math|''a<sub>i</sub>''}} if the system of equations is solved using [[Gaussian elimination]]. Several authors have therefore proposed algorithms which exploit the structure of the Vandermonde matrix to compute numerically stable solutions in O(''n''<sup>2</sup>) operations instead of the O(''n''<sup>3</sup>) required by Gaussian elimination.<ref>{{cite journal |last=Higham |first=N. J. |year=1988 |title=Fast Solution of Vandermonde-Like Systems Involving Orthogonal Polynomials |journal=IMA Journal of Numerical Analysis |volume=8 |issue=4 |pages=473–486 |doi=10.1093/imanum/8.4.473}}</ref><ref>{{cite journal |last=Björck |first=Å |author2=V. Pereyra |year=1970 |title=Solution of Vandermonde Systems of Equations |journal=Mathematics of Computation |publisher=American Mathematical Society |volume=24 |issue=112 |pages=893–903 |doi=10.2307/2004623 |jstor=2004623}}</ref><ref>{{cite journal |last1=Calvetti |first1=D. |author1-link=Daniela Calvetti |last2=Reichel |first2=L. |year=1993 |title=Fast Inversion of Vandermonde-Like Matrices Involving Orthogonal Polynomials |journal=BIT |volume=33 |issue=3 |pages=473–484 |doi=10.1007/BF01990529 |s2cid=119360991}}</ref> These methods rely on constructing first a [[Newton polynomial|Newton interpolation]] of the polynomial and then converting it to a [[monomial form]]. === Non-Vandermonde algorithms === To find the interpolation polynomial ''p''(''x'') in the vector space ''P''(''n'') of polynomials of degree {{mvar|n}}, we may use the usual [[monomial basis]] for ''P''(''n'') and invert the Vandermonde matrix by Gaussian elimination, giving a [[Computational complexity|computational cost]] of O(''n''<sup>3</sup>) operations. To improve this algorithm, a more convenient basis for ''P''(''n'') can simplify the calculation of the coefficients, which must then be translated back in terms of the [[monomial basis]]. One method is to write the interpolation polynomial in the [[Newton form]] (i.e. using Newton basis) and use the method of [[divided differences]] to construct the coefficients, e.g. [[Neville's algorithm]]. The cost is [[Big O notation|O(''n''<sup>2</sup>)]] operations. Furthermore, you only need to do O(''n'') extra work if an extra point is added to the data set, while for the other methods, you have to redo the whole computation. Another method is preferred when the aim is not to compute the ''coefficients'' of ''p''(''x''), but only a ''single value'' ''p''(''a'') at a point ''x = a'' not in the original data set. The [[Lagrange form]] computes the value ''p''(''a'') with complexity O(''n''<sup>2</sup>).<ref>R.Bevilaqua, D. Bini, M.Capovani and O. Menchi (2003). ''Appunti di Calcolo Numerico''. Chapter 5, p. 89. Servizio Editoriale Universitario Pisa - Azienda Regionale Diritto allo Studio Universitario.</ref> The [[Bernstein form]] was used in a constructive proof of the [[Weierstrass approximation theorem]] by [[Sergei Natanovich Bernstein|Bernstein]] and has gained great importance in computer graphics in the form of [[Bézier curve]]s. == Interpolations as linear combinations of values == Given a set of (position, value) data points <math>(x_0, y_0), \ldots, (x_j, y_j), \ldots, (x_n, y_n)</math> where no two positions <math>x_j</math> are the same, the interpolating polynomial <math>y(x)</math> may be considered as a [[linear combination]] of the values <math>y_j</math>, using coefficients which are polynomials in <math>x</math> depending on the <math>x_j</math>. For example, the interpolation polynomial in the [[Lagrange form]] is the linear combination <math display="block">y(x) := \sum_{j=0}^{k} y_j c_j(x)</math> with each coefficient <math>c_j(x)</math> given by the corresponding Lagrange basis polynomial on the given positions <math>x_j</math>: <math display="block">c_j(x) = L_j(x_0,\ldots,x_n;x) = \prod_{ 0 \le i \le n \atop i \neq j } \frac{x-x_i}{x_j-x_i} = \frac{(x-x_0)}{(x_j-x_0)} \cdots \frac{(x-x_{j-1})}{(x_j-x_{j-1})} \frac{(x-x_{j+1})}{(x_j-x_{j+1})} \cdots \frac{(x-x_n)}{(x_j-x_n)}.</math> Since the coefficients depend only on the positions <math>x_j</math>, not the values <math>y_j</math>, we can use the ''same coefficients'' to find the interpolating polynomial for a second set of data points <math>(x_0, v_0), \ldots, (x_n, v_n)</math> at the same positions: <math display="block">v(x) := \sum_{j=0}^{k} v_j c_j(x).</math> Furthermore, the coefficients <math>c_j(x)</math> only depend on the relative spaces <math>x_i-x_j</math> between the positions. Thus, given a third set of data whose points are given by the new variable <math>t = ax+b</math> (an [[affine transformation]] of <math>x</math>, inverted by <math>x=\tfrac{t-b}{a}</math>): <math display="block">(t_0, w_0), \ldots, (t_j, w_j) \ldots, (t_n, w_n) \qquad \text{with}\qquad t_j = ax_j + b,</math> we can use a transformed version of the previous coefficient polynomials:<blockquote><math>\tilde c_j(t) := c_j(\tfrac{t-b}{a}) = c_j(x),</math> </blockquote>and write the interpolation polynomial as:<blockquote><math display="inline">w(t) := \sum_{j=0}^{k} w_j \tilde c_j(t).</math></blockquote>Data points <math>(x_j,y_j)</math> often have ''equally spaced positions'', which may be normalized by an affine transformation to <math>x_j = j</math>. For example, consider the data points<blockquote><math>(0,y_0), (1,y_1), (2,y_2)</math>.</blockquote>The interpolation polynomial in the Lagrange form is the [[linear combination]] <math display="block">\begin{align} y(x) := \sum_{j=0}^2 y_j c_j(x) &= y_0 \frac{(x-1)(x-2)}{(0-1)(0-2)} + y_1 \frac{(x-0)(x-2)}{(1-0)(1-2)} + y_2 \frac{(x-0)(x-1)}{(2-0)(2-1)} \\ &= \tfrac12 y_0 (x-1)(x-2) - y_1 (x-0)(x-2) + \tfrac12 y_2 (x-0)(x-1). \end{align} </math> For example, <math>y(3) = y_3 = y_0 - 3y_1 + 3y_2 </math> and <math>y(1.5) = y_{1.5} = \tfrac18 (-y_0 + 6y_1 + 3y_2)</math>. The case of equally spaced points can also be treated by the [[method of finite differences]]. The first difference of a sequence of values <math>v=\{v_j\}_{j=0}^\infty</math> is the sequence <math>\Delta v = u = \{u_j\}_{j=0}^\infty </math> defined by <math>u_j = v_{j+1}-v_j </math>. Iterating this operation gives the ''n''<sup>th</sup> difference operation <math>\Delta^n v = u</math>, defined explicitly by:<math display="block">u_j = \sum_{k=0}^n (-1)^{n-k} {n\choose k} v_{j+k}, </math>where the coefficients form a signed version of Pascal's triangle, the [[Pascal's triangle#The Triangle of Binomial Transform Coefficients is like Pascal's Triangle.|triangle of binomial transform coefficients]]: {| class="wikitable" style="text-align:center;line-height:90%;border:none;background:transparent;" | colspan="8" style="border:none;"| || colspan="2"|1 || colspan="7" style="border:none;"| || style="text-align:left;border:none;"|Row n = 0 |- style="background:#f8f8f8;" | colspan="7" style="border:none;"| || colspan="2"|1 || colspan="2"|−1 || colspan="6" style="border:none;"| || style="border:none;"|Row ''n'' = 1 or ''d'' = 0 |- | colspan="6" style="border:none;"| || colspan="2"|1 || colspan="2"|−2 || colspan="2"|1 || colspan="5" style="border:none;"| || style="border:none;"|Row ''n'' = 2 or ''d'' = 1 |- style="background:#f8f8f8;" | colspan="5" style="border:none;"| || colspan="2"|1 || colspan="2"|−3 || colspan="2"|3 || colspan="2"|−1 || colspan="4" style="border:none;"| || style="border:none;"|Row ''n'' = 3 or ''d'' = 2 |- | colspan="4" style="border:none;"| || colspan="2"|1 || colspan="2"|−4 || colspan="2"|6 || colspan="2"|−4 || colspan="2"|1 || colspan="3" style="border:none;"| || style="border:none;"|Row ''n'' = 4 or ''d'' = 3 |- style="background:#f8f8f8;" | colspan="3" style="border:none;"| || colspan="2"|1 || colspan="2"|−5 || colspan="2"|10 || colspan="2"|−10 || colspan="2"|5 || colspan="2"|−1 || colspan="2" style="border:none;"| || style="border:none;"|Row ''n'' = 5 or ''d'' = 4 |- | colspan="2" style="border:none;"| || colspan="2"|1 || colspan="2"|−6 || colspan="2"|15 || colspan="2"|−20 || colspan="2"|15 || colspan="2"|−6 || colspan="2"|1 || style="border:none;"| || style="border:none;"|Row ''n'' = 6 or ''d'' = 5 |- style="background:#f8f8f8;" | colspan="1" style="border:none;"| || colspan="2"|1 || colspan="2"|−7 || colspan="2"|21 || colspan="2"|−35 || colspan="2"|35 || colspan="2"|−21 || colspan="2"|7 || colspan="2"|−1 || style="border:none;"|Row ''n'' = 7 or ''d'' = 6 |- | style="border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| | style="width:1em;border:none;"| |} A polynomial <math>y(x)</math> of degree ''d'' defines a sequence of values at positive integer points, <math>y_j = y(j)</math>, and the <math>(d+1)^{\text{th}}</math> difference of this sequence is identically zero: <blockquote><math>\Delta^{d+1} y = 0</math>. </blockquote>Thus, given values <math>y_0,\ldots,y_n</math> at equally spaced points, where <math>n=d+1 </math>, we have: <math display="block">(-1)^n y_0 + (-1)^{n-1} \binom{n}{1} y_1 + \cdots - \binom n{n-1} y_{n-1} + y_n= 0. </math>For example, 4 equally spaced data points <math>y_0,y_1,y_2,y_3 </math> of a quadratic <math>y(x)</math> obey <math>0 = -y_0 + 3y_1 - 3y_2 + y_3</math>, and solving for <math>y_3</math> gives the same interpolation equation obtained above using the Lagrange method. ==Interpolation error: Lagrange remainder formula== {{confusing section|date=June 2011}} When interpolating a given function ''f'' by a polynomial <math>p_n</math> of degree {{mvar|n}} at the nodes ''x''<sub>0</sub>,..., ''x''<sub>''n''</sub> we get the error <math display="block">f(x) - p_n(x) = f[x_0,\ldots,x_n,x] \prod_{i=0}^n (x-x_i) </math> where <math display="inline">f[x_0,\ldots,x_n,x]</math> is the (''n''+1)<sup>st</sup> [[divided differences|divided difference]] of the data points <blockquote><math>(x_0,f(x_0)),\ldots,(x_n,f(x_n)),(x,f(x)) </math>.</blockquote>Furthermore, there is a ''Lagrange remainder form'' of the error, for a function ''f'' which is {{math|''n'' + 1}} times continuously differentiable on a closed interval <math>I</math>, and a polynomial <math>p_n(x)</math> of degree at most {{mvar|n}} that interpolates ''f'' at {{math|''n'' + 1}} distinct points <math>x_0,\ldots,x_n\in I</math>. For each <math>x\in I</math> there exists <math>\xi\in I</math> such that <math display="block"> f(x) - p_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^n (x-x_i). </math> This error bound suggests choosing the interpolation points {{math|''x<sub>i</sub>''}} to minimize the product <math display="inline">\left | \prod (x - x_i) \right |</math>, which is achieved by the [[Chebyshev nodes]]. === Proof of Lagrange remainder === Set the error term as <math display="inline"> R_n(x) = f(x) - p_n(x) </math>, and define an auxiliary function:<math display="block"> Y(t) = R_n(t) - \frac{R_n(x)}{W(x)} W(t) \qquad\text{where}\qquad W(t) = \prod_{i=0}^n (t-x_i). </math>Thus:<math display="block"> Y^{(n+1)}(t) = R_n^{(n+1)}(t) - \frac{R_n(x)}{W(x)} \ (n+1)! </math> But since <math>p_n(x)</math> is a polynomial of degree at most {{mvar|n}}, we have <math display="inline"> R_n^{(n+1)}(t) = f^{(n+1)}(t) </math>, and: <math display="block"> Y^{(n+1)}(t) = f^{(n+1)}(t) - \frac{R_n(x)}{W(x)} \ (n+1)! </math> Now, since {{math|''x<sub>i</sub>''}} are roots of <math>R_n(t)</math> and <math>W(t)</math>, we have <math> Y(x)=Y(x_j)=0 </math>, which means {{mvar|Y}} has at least {{math|''n'' + 2}} roots. From [[Rolle's theorem]], <math>Y^\prime(t)</math> has at least {{math|''n'' + 1}} roots, and iteratively <math>Y^{(n+1)}(t)</math> has at least one root {{mvar|ξ}} in the interval {{mvar|I}}. Thus: <math display="block"> Y^{(n+1)}(\xi) = f^{(n+1)}(\xi) - \frac{R_n(x)}{W(x)} \ (n+1)! = 0 </math> and: <math display="block"> R_n(x) = f(x) - p_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^n (x-x_i) .</math> This parallels the reasoning behind the Lagrange remainder term in the [[Taylor's theorem|Taylor theorem]]; in fact, the Taylor remainder is a special case of interpolation error when all interpolation nodes {{math|''x<sub>i</sub>''}} are identical.<ref>{{cite web| url=http://www.math.okstate.edu/~binegar/4513-F98/4513-l16.pdf| title=Errors in Polynomial Interpolation}}</ref> Note that the error will be zero when <math>x = x_i</math> for any ''i''. Thus, the maximum error will occur at some point in the interval between two successive nodes. ===Equally spaced intervals=== In the case of equally spaced interpolation nodes where <math>x_i = a + ih</math>, for <math>i=0,1,\ldots,n,</math> and where <math>h = (b-a)/n,</math> the product term in the interpolation error formula can be bound as<ref>{{cite web| url=https://www-users.cselabs.umn.edu/Spring-2021/csci5302/Notes/Classnotes/interp.pdf| title=Notes on Polynomial Interpolation}}</ref> <math display="block">\left|\prod_{i=0}^n (x-x_i)\right| = \prod_{i=0}^n \left|x-x_i\right| \leq \frac{n!}{4} h^{n+1}.</math> Thus the error bound can be given as <math display="block"> \left|R_n(x)\right| \leq \frac{h^{n+1}}{4(n+1)} \max_{\xi\in[a,b]} \left|f^{(n+1)}(\xi)\right| </math> However, this assumes that <math>f^{(n+1)}(\xi)</math> is dominated by <math>h^{n+1}</math>, i.e. <math>f^{(n+1)}(\xi) h^{n+1} \ll 1</math>. In several cases, this is not true and the error actually increases as {{math|''n'' → ∞}} (see [[Runge's phenomenon]]). That question is treated in the section [[#Convergence properties|''Convergence properties'']]. ==Lebesgue constants== {{Main|Lebesgue constant}} We fix the interpolation nodes ''x''<sub>0</sub>, ..., ''x''<sub>''n''</sub> and an interval [''a'', ''b''] containing all the interpolation nodes. The process of interpolation maps the function ''f'' to a polynomial ''p''. This defines a mapping ''X'' from the space ''C''([''a'', ''b'']) of all continuous functions on [''a'', ''b''] to itself. The map ''X'' is linear and it is a [[projection (linear algebra)|projection]] on the subspace <math>P(n) </math> of polynomials of degree ''n'' or less. The Lebesgue constant ''L'' is defined as the [[operator norm]] of ''X''. One has (a special case of [[Lebesgue's lemma]]): <math display="block"> \left\|f-X(f)\right\| \le (L+1) \left\|f-p^*\right\|. </math> In other words, the interpolation polynomial is at most a factor (''L'' + 1) worse than the best possible approximation. This suggests that we look for a set of interpolation nodes that makes ''L'' small. In particular, we have for [[Chebyshev nodes]]: <math display="block"> L \le \frac2\pi \log(n+1) + 1.</math> We conclude again that Chebyshev nodes are a very good choice for polynomial interpolation, as the growth in ''n'' is exponential for equidistant nodes. However, those nodes are not optimal. ==Convergence properties== It is natural to ask, for which classes of functions and for which interpolation nodes the sequence of interpolating polynomials converges to the interpolated function as {{math|''n'' → ∞}}? Convergence may be understood in different ways, e.g. pointwise, uniform or in some integral norm. The situation is rather bad for equidistant nodes, in that uniform convergence is not even guaranteed for infinitely differentiable functions. One classical example, due to [[Runge's phenomenon|Carl Runge]], is the function ''f''(''x'') = 1 / (1 + ''x''<sup>2</sup>) on the interval {{math|[−5, 5]}}. The interpolation error {{math|{{!!}} ''f'' − ''p<sub>n</sub>''{{!!}}<sub>∞</sub>}} grows without bound as {{math|''n'' → ∞}}. Another example is the function ''f''(''x'') = |''x''| on the interval {{math|[−1, 1]}}, for which the interpolating polynomials do not even converge pointwise except at the three points ''x'' = ±1, 0.<ref>{{Harvtxt|Watson|1980|p=21}} attributes the last example to {{Harvtxt|Bernstein|1912}}.</ref> One might think that better convergence properties may be obtained by choosing different interpolation nodes. The following result seems to give a rather encouraging answer: {{math theorem | math_statement = For any function ''f''(''x'') continuous on an interval [''a'',''b''] there exists a table of nodes for which the sequence of interpolating polynomials <math>p_n(x)</math> converges to ''f''(''x'') uniformly on [''a'',''b''].}} {{math proof | proof = It is clear that the sequence of polynomials of best approximation <math>p^*_n(x)</math> converges to ''f''(''x'') uniformly (due to the [[Weierstrass approximation theorem]]). Now we have only to show that each <math>p^*_n(x)</math> may be obtained by means of interpolation on certain nodes. But this is true due to a special property of polynomials of best approximation known from the [[equioscillation theorem]]. Specifically, we know that such polynomials should intersect ''f''(''x'') at least {{math|''n'' + 1}} times. Choosing the points of intersection as interpolation nodes we obtain the interpolating polynomial coinciding with the best approximation polynomial.}} The defect of this method, however, is that interpolation nodes should be calculated anew for each new function ''f''(''x''), but the algorithm is hard to be implemented numerically. Does there exist a single table of nodes for which the sequence of interpolating polynomials converge to any continuous function ''f''(''x'')? The answer is unfortunately negative: {{math theorem | math_statement = For any table of nodes there is a continuous function ''f''(''x'') on an interval [''a'', ''b''] for which the sequence of interpolating polynomials diverges on [''a'',''b''].<ref>{{Harvtxt|Watson|1980|p=21}} attributes this theorem to {{Harvtxt|Faber|1914}}.</ref>}} The proof essentially uses the lower bound estimation of the Lebesgue constant, which we defined above to be the operator norm of ''X''<sub>''n''</sub> (where ''X''<sub>''n''</sub> is the projection operator on Π<sub>''n''</sub>). Now we seek a table of nodes for which <math display="block">\lim_{n \to \infty} X_n f = f,\text{ for every }f \in C([a,b]).</math> Due to the [[Banach–Steinhaus theorem]], this is only possible when norms of ''X''<sub>''n''</sub> are uniformly bounded, which cannot be true since we know that <math display="block">\|X_n\|\geq \tfrac{2}{\pi} \log(n+1)+C.</math> For example, if equidistant points are chosen as interpolation nodes, the function from [[Runge's phenomenon]] demonstrates divergence of such interpolation. Note that this function is not only continuous but even infinitely differentiable on {{math|[−1, 1]}}. For better [[Chebyshev nodes]], however, such an example is much harder to find due to the following result: {{math theorem | math_statement = For every [[absolute continuity|absolutely continuous]] function on {{math|[−1, 1]}} the sequence of interpolating polynomials constructed on Chebyshev nodes converges to ''f''(''x'') uniformly.<ref>{{cite journal|last=Krylov |first=V. I. |title=Сходимость алгебраического интерполирования покорням многочленов Чебышева для абсолютно непрерывных функций и функций с ограниченным изменением |trans-title=Convergence of algebraic interpolation with respect to the roots of Chebyshev's polynomial for absolutely continuous functions and functions of bounded variation |journal=Doklady Akademii Nauk SSSR |series=New Series |volume=107 |pages=362–365 |date=1956 |language=ru |url=https://books.google.com/books?id=tCMwAAAAMAAJ}} MR 18-32.</ref>}} ==Related concepts== [[Runge's phenomenon]] shows that for high values of {{mvar|n}}, the interpolation polynomial may oscillate wildly between the data points. This problem is commonly resolved by the use of [[spline interpolation]]. Here, the interpolant is not a polynomial but a [[spline (mathematics)|spline]]: a chain of several polynomials of a lower degree. Interpolation of [[periodic function]]s by [[harmonic analysis|harmonic]] functions is accomplished by [[Fourier transform]]. This can be seen as a form of polynomial interpolation with harmonic base functions, see [[trigonometric interpolation]] and [[trigonometric polynomial]]. [[Hermite interpolation]] problems are those where not only the values of the polynomial ''p'' at the nodes are given, but also all derivatives up to a given order. This turns out to be equivalent to a system of simultaneous polynomial congruences, and may be solved by means of the [[Chinese remainder theorem]] for polynomials. [[Birkhoff interpolation]] is a further generalization where only derivatives of some orders are prescribed, not necessarily all orders from 0 to a ''k''. [[Collocation method]]s for the solution of differential and integral equations are based on polynomial interpolation. The technique of [[rational function modeling]] is a generalization that considers ratios of polynomial functions. At last, [[multivariate interpolation]] for higher dimensions. ==See also== * [[Newton series]] * [[Polynomial regression]] * [[Spline smoothing]] ==Notes== {{notelist}} ==Citations== {{reflist|30em}} ==References== * {{cite journal |first=Sergei N. |last=Bernstein |author-link=Sergei Natanovich Bernstein |year=1912 |title=Sur l'ordre de la meilleure approximation des fonctions continues par les polynômes de degré donné |language=fr |trans-title=On the order of the best approximation of continuous functions by polynomials of a given degree |journal=Mem. Acad. Roy. Belg. |volume=4 |pages=1–104 }} * {{cite journal |first=Georg |last=Faber |author-link=Georg Faber |year=1914 |title=Über die interpolatorische Darstellung stetiger Funktionen | language=de |trans-title=On the Interpolation of Continuous Functions |journal=Deutsche Math. Jahr. |volume=23 |pages=192–210 }} * {{cite book |first=G. Alistair |last=Watson |year=1980 |title=Approximation Theory and Numerical Methods |publisher=John Wiley |isbn=0-471-27706-1 }} ==Further reading== * {{cite book |first=Kendell A. |last=Atkinson |year=1988 |title=An Introduction to Numerical Analysis |url=https://archive.org/details/introductiontonu0000atki |url-access=registration |edition=2nd |chapter=Chapter 3. |publisher= John Wiley and Sons |isbn=0-471-50023-2 }} * {{cite journal |first=L. |last=Brutman |year=1997 |title=Lebesgue functions for polynomial interpolation — a survey |journal=Ann. Numer. Math. |volume=4 |pages=111–127 }} * {{cite book |first=M. J. D. |last=Powell |author-link=Michael J. D. Powell |year=1981 |title=Approximation Theory and Methods |chapter=Chapter 4 |publisher=Cambridge University Press |isbn=0-521-29514-9 }} * {{cite book |first=Michelle |last=Schatzman |author-link=Michelle Schatzman |year=2002 |title=Numerical Analysis: A Mathematical Introduction |chapter=Chapter 4 |publisher=Clarendon Press |location=Oxford |isbn=0-19-850279-6 }} * {{cite book |first1=Endre |last1=Süli |author-link=Endre Süli |first2=David |last2=Mayers |year=2003 |title=An Introduction to Numerical Analysis |chapter=Chapter 6 |publisher=Cambridge University Press |isbn=0-521-00794-1 }} * J. L. Walsh: ''Interpolation and Approximation by Rational Functions in the Complex Domain'', AMS (Colloquium Publications, Vol.20), ISBN 0-8218-1020-0 (1960). Chapter VII:'Interpolation by Polynomials'. == External links == * {{springer|title=Interpolation process|id=p/i051970}} * [http://www.alglib.net/interpolation/polynomial.php ALGLIB] has an implementations in C++ / C#. * [https://www.gnu.org/software/gsl/ GSL] has a polynomial interpolation code in C * [https://polynom.herokuapp.com/ Polynomial Interpolation demonstration]. [[Category:Interpolation]] [[Category:Polynomials]] [[Category:Articles containing proofs]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Confusing section
(
edit
)
Template:Efn
(
edit
)
Template:Harvtxt
(
edit
)
Template:Main
(
edit
)
Template:Main article
(
edit
)
Template:Math
(
edit
)
Template:Math proof
(
edit
)
Template:Math theorem
(
edit
)
Template:Mvar
(
edit
)
Template:Notelist
(
edit
)
Template:NumBlk
(
edit
)
Template:Reflist
(
edit
)
Template:See also
(
edit
)
Template:Short description
(
edit
)
Template:Springer
(
edit
)