Interpolazione Polinomiale
Appunti di calcolo numerico
Introduzione
Qui ci occuperemo di approssimare una funzione f assegnata con un polinomio p di grado assegnato e come descrivere con un polinomio un insieme di misurazioni. I due problemi sono spesso equivalenti, ad esempio se abbiamo un certo insieme di misurazioni \{(x_i,y_i)\}_{i=0}^m, le possiamo interpretare come i valori di una funzione f incognita che vogliamo approssimare, ad esempio con un polinomio:
Indichiamo con \mathbb{R}_n[x] lo spazio vettoriale di polinomi di grado al più n a coefficienti reali. Vogliamo trovare un polinomio p(x)\in\mathbb{R}_n[x] tale che p(x_i)=y_i per ogni i=1,\ldots,m. Ciò corrisponde a risolvere un sistema lineare del tipo:
\begin{aligned} f(x)\approx p(x) &= a_0+a_1x+a_2x^2+\ldots+a_n x^n\\ p(x_0) &= a_0 + a_1 x_0+ a_2x_0^2+\ldots+a_n x_0^n\\ p(x_1) &= a_0 + a_1 x_1+ a_2x_1^2+\ldots+a_n x_1^n\\ & \vdots\\ p(x_m) &= a_0 + a_1 x_m+ a_2x_m^2+\ldots+a_n x_m^n \end{aligned}
Esempio 1 Se per esempio m=2 e n=3, con i dati \{(0,1),(1,2),(-1,3)\}, cerchiamo di determinare i coefficienti di p(x)=a_0+a_1x+a_2x^2+a_3x^3 tramite il sistema:
\begin{aligned} p(x_0) &= a_0 + a_1 0+ a_20^2+a_3 0^3 = 1 = y_0\\ p(x_1) &= a_0 + a_1 1+ a_21^2+a_3 1^3 = 2= y_1\\ p(x_2) &= a_0 + a_1 (-1)+ a_2(-1)^2+a_3 (-1)^3 = 3= y_2. \end{aligned}
Si vede subito che in generale un sistema rettangolare (ovvero in cui n\neq m) non si presta bene a risolvere il problema, perché potrebbe risultare senza soluzione o con infinite soluzioni. Per avere esistenza e unicità una condizione necessaria (ma non sufficiente) è richiedere n=m, per avere anche la sufficienza serve anche che x_i\neq x_j se i\neq j. D’ora in poi faremo queste assunzioni.
Esempio 2 Nel caso di n=0 il polinomio si riduce a p(x) = a_0 = y_0 ovvero al polinomio costante; se n=1 avremo p(x) = a_0+a_1x cioè una retta; se n=2 avremo una parabola.
Esempio 3 Supponiamo di voler interpolare i dati \{(-1,1),(2,7),(0,1)\}, avremo bisogno di un polinomio di secondo grado p(x)=a_0+a_1x+a_2x^2. Il sistema da risolvere è quindi:
\begin{aligned} a_0+a_1(-1)+a_2(-1)^2 &= 1\\ a_0+a_1 2 +a_2 2^2 &= 7\\ a_0+a_1 0 + a_2 0^2 &= 1, \end{aligned}
da cui
\begin{aligned} a_0-a_1+a_2 &= 1\\ a_0+2a_1 +4a_2 &= 7\\ a_0 &= 1, \end{aligned}
e quindi semplificando, -a_1+a_2=0 e 2a_1+4a_2=6 da cui a_2=a_1 e 6a_2=6. La soluzione è quindi a_0=a_1=a_2=1, ovvero p(x)=1+x+x^2.
Con questo metodo si vede che approssimare una funzione tramite dati campionati è equivalente alla risoluzione di un sistema lineare. Questo modo di procedere tuttavia è macchinoso e in questa sezione ne vedremo di più efficienti. Iniziamo con un teorema che ci garantisce che un tale polinomio esiste.
Teorema 1 (Stone-Weierstrass) Sia f una funzione continua definita sull’intervallo [a,b], allora per ogni \varepsilon>0 esiste un numero naturale n (dipendente da \varepsilon) e un polinomio p\in\mathbb{R}_n[x] tali che \|f-p\|_{\infty}<\varepsilon.
Ricordiamo che la norma infinito di un vettore v significa \|v\|_{\infty}:=\max |v|, e nel caso di funzioni corrisponde a \|f\|_{\infty}:=\max_{a\leq x \leq b} |f(x)|. Il teorema non ci dice quale sia questo polinomio approssimante, né che grado abbia. Tuttavia è possibile costruire una successione di polinomi b_n, detti polinomi di Bernstein, per i quali vale il seguente limite:
\lim_{n\to\infty}\|f-b_n\|_{\infty}=0.
Inoltre se f\in\mathcal{C}^k[a,b] allora
\lim_{n\to\infty}\|f^{(k)}-b_n^{(k)}\|_{\infty}=0,
ovvero il polinomio approssima bene anche le derivate di f.
I polinomi di Bernstein sono molto utili in quanto sono la base delle Curve di Bèzier, molto usate in computer graphics e in altre applicazioni. Senza perdita di generalità si possono scrivere sull’intervallo [0,1] come:
b_n(x) = \sum_{i=0}^n c_k B_i^n(x)= \sum_{i=0}^n c_i \binom{n}{i}x^i(1-x)^{n-i}.
I coefficienti c_i sono dati dai valori della funzione da approssimare su punti equispaziati di [0,1], dunque
f:[0,1]\mapsto\mathbb{R}, \qquad f(x) \approx b_n(x)= \sum_{i=0}^n f\left(i/n\right) \binom{n}{i}x^i(1-x)^{n-i}
Il polinomio di Bernstein fa una media pesata dei valori di f nei punti di suddivisione, utilizzando come pesi i polinomi B_i^n(x)=\binom{n}{i}x^i(1-x)^{n-i}, detti base di Bernstein vedi Figura 2, che privilegiano i valori di f nei punti di suddivisione e ignorando quasi i punti più lontani. Questo fatto può essere interpretato da un punto di vista probabilistico in termini della legge dei grandi numeri. La media dei valori di f è effettivamente una media pesata, infatti i coefficienti sommano a 1:
\sum_{i=0}^n\binom{n}{i}x^i(1-x)^{n-i} = (x+(1-x))^n = 1.
L’area sottesa a ogni peso è pari a 1/(n+1), dunque la loro somma è 1 e l’area è equidivisa. Supponiamo ora che x rappresenti la probabilità di un certo evento, ad esempio x=1/6 la probabilità che esca 6 lanciando un dado. Se facciamo n lanci indipendenti, allora B_i^n(x) è la probabilità che l’evento si verifichi esattamente i volte. Allora, a patto di prendere n abbastanza grande, possiamo rendere arbitrariamente grande la probabilità che la frequenza i/n del verificarsi dell’evento sia vicina (più di \varepsilon) alla sua probabilità x, ovvero la legge dei grandi numeri.
Esempio 4 Approssimiamo la funzione f(x)=\cos(x) su [a,b]=[0,1] con alcuni polinomi di Bernstein. Come si vede dalla Figura 3, via via che il grado del polinomio si eleva, la qualità dell’approssimazione migliora.
La convergenza è estremamente lenta, anche nel caso in cui f stessa sia un polinomio. Dal Corso di Analisi Matematica possiamo usare il Teorema di Taylor, nel caso in cui f sia differenziabile.
Teorema 2 (Taylor) Sia f una funzione continua su [a,b] differenziabile di classe almeno \mathcal{C}^{n+1}[a,b], allora per ogni punto x_0\in(a,b) fissato, esiste un polinomio p_n(x)\in\mathbb{R}_n[x] (il polinomio di Taylor) tale che
\begin{aligned} f(x) &=p_n(x) + R_{n+1}(x),\\ p_n(x) &=\sum_{k=0}^n\dfrac{f^{(k)}(x_0)}{k!}(x-x_0)^k. \end{aligned}
Il resto R_{n+1}(x) si può esprimere in tanti modi, tra i più citati ricordiamo quello di Peano e quello di Lagrange. Quest’ultimo è utile ai nostri scopi perchè permette una stima dell’errore di approssimazione. Il resto di Lagrange è
R_{n+1}(x)=\dfrac{(x-x_0)^{n+1}}{(n+1)!}f^{(n+1)}(\xi_x),
con \xi_x (incognito) compreso tra x e x_0, ovvero \xi_x\in(\min(x,x_0),\max(x_0,x)).
Questo approccio sembra più promettente, ma vale solo localmente, in un intorno di x_0.
Esempio 5 Riprendiamo l’esempio precedente, usando questa volta alcuni polinomi di Taylor centrati in x_0=\frac{1}{2}. Il risultato per il polinomio p_0 è la costante, quello al primo ordine è la retta tangente. Le approssimazioni sono via via migliori ma solamente intorno a x_0, Figura 4.
Una terza via è data dalla costruzione dei polinomi interpolatori. Essi saranno utili anche nei prossimi capitoli quando affronteremo l’integrazione numerica e le equazioni differenziali.
Unicità del polinomio interpolante
Teorema 3 (interpolazione polinomiale) Siano x_0,x_1,\ldots,x_n\in\Bbb{R}, n+1 punti distinti ed f:\Bbb{R}\mapsto\Bbb{R} una funzione, allora esiste un unico polinomio di grado al più n, p(x) per cui vale
p(x_i)=f(x_i),\quad\quad i=0,1,\ldots,n
Dimostrazione. Consideriamo un generico polinomio di grado al più n,
p(x) = a_0+a_1x+a_2x^2+\cdots+a_nx^n,
ed imponiamo che soddisfi le n+1 condizioni della forma (x_i,f(x_i)) per i=0,1,\ldots,n. Si ottiene il sistema lineare
\bgroup \left\{\begin{aligned} a_0 +a_1 x_0+a_2 x^2+\cdots+a_nx^n &= f(x_0) \\ a_0 +a_1 x_1+a_2 x_1^2+\cdots+a_nx_1^n &= f(x_1) \\ &\vdots \\ a_0 +a_1 x_n+a_2 x_n^2+\cdots + a_n x_n^n &= f(x_n) \end{aligned}\right.\egroup
Il sistema si scrive in forma compatta matriciale \boldsymbol{M}\boldsymbol{a}=\boldsymbol{b} con
\boldsymbol{M}= \begin{pmatrix} 1 & x_0 & x^2 & \cdots & x^n \\ 1 & x_1 & x_1^2 & \cdots & x_1^n \\ \vdots & & & \vdots \\ 1 & x_n & x_n^2 & \cdots & x_n^n \end{pmatrix},
ed \boldsymbol{a}= \begin{pmatrix}a_0 \\ a_1 \\ \vdots \\ a_n \end{pmatrix} \quad \boldsymbol{b}= \begin{pmatrix}f(x_0) \\ f(x_1) \\ \vdots \\ f(x_n) \end{pmatrix},
quindi il problema ha una unica soluzione se e solo se il determinante della matrice \boldsymbol{M} è non nullo.
La matrice \boldsymbol{M} è nota col nome di matrice di Vandermonde 1 ed il suo determinante ha la forma seguente:
\boxed{\prod_{i>j}^n (\boldsymbol{x}_i- x_j)} \tag{1}
Dall’ipotesi che x_i\neq x_j per i\neq j (punti distinti) segue che il determinante di \boldsymbol{M} è non nullo ed il problema ha una unica soluzione.
Per completare la dimostrazione calcoliamo il determinante Equazione 1. Sia
V(x_0,x_1,\ldots,x_{n-1},x) = \left|\begin{matrix} 1 & x_0 & x_0^2 & \cdots & x_0^n \\ 1 & x_1 & x_1^2 & \cdots & x_1^n \\ \vdots & & & \vdots & \\ 1 & x_{n-1} & x_{n-1}^2 & \cdots & x_{n-1}^n \\ 1 & x & x^2 & \cdots & x^n \end{matrix}\right|. \tag{2}
Sviluppando il determinante in Equazione 2 per cofattori sull’ultima riga si ottiene un polinomio nella variabile x di grado al più n. Osserviamo che sostituendo al posto di x successivamente i valori x_0, x_1,\ldots fino a $ x_{n-1}$ il determinante si annulla, cioè
V(x_0,x_1,\ldots, x_{n-1},x_k]) = 0, \quad\quad k=0,1,\ldots,n-1.
Ciò accade perché si sta calcolando il determinante di una matrice con due righe uguali, l’ultima e di volta in volta la k-esima. Le ascisse x_0, x_1, \ldots,x_{n-1} sono radici del polinomio V(x_0,x_1,\ldots, x_{n-1},x ), che può essere quindi fattorizzato nella forma
K(x -x_0)(x -x_1)\cdots(x - x_{n-1}), \tag{3}
dove lo scalare K è il coefficiente del termine di grado massimo.
Infatti, moltiplicando i binomi in Equazione 3
V(x_0,x_1,\ldots, x_{n-1},x ) = Kx^n + Lx^{n-1} \cdots
si vede subito che K è il coefficiente che moltiplica x^n.
Il determinante della matrice di Vandermonde coincide con il valore del polinomio in Equazione 3 calcolato nell’ascissa x_n, per cui si rende necessario determinare esplicitamente il coefficiente K. Sviluppando V(x_0,x_1,\ldots, x_{n-1},x ) per minori rispetto alla ultima riga otteniamo
\begin{aligned} V(x_0,x_1,\ldots, x_{n-1},x ) &= \left|\begin{matrix} 1 & x_0 & x^2 & \cdots & x^n \\ 1 & x_1 & x_1^2 & \cdots & x_1^n \\ \vdots & & & & \vdots \\ 1 & x_{n-1} & x_{n-1}^2 & \cdots & x_{n-1}^n \\ 1 & x & x^2 & \cdots & x^n \end{matrix}\right| \\[1em] &= x^n \left|\begin{matrix} 1 & x_0 & x^2 & \cdots & x_0^{n-1} \\ 1 & x_1 & x_1^2 & \cdots & x_1^{n-1} \\ \vdots & & & & \vdots \\ 1 & x_{n-1} & x_{n-1}^2 & \cdots & x_{n-1}^{n-1} \end{matrix}\right| + x^{n-1} \cdots \end{aligned}
da cui segue immediatamente che
K = \left|\begin{matrix} 1 & x_0 & x^2 & \cdots & x_0^{n-1} \\ 1 & x_1 & x_1^2 & \cdots & x_1^{n-1} \\ \vdots & & & & \vdots \\ 1 & x_{n-1} & x_{n-1}^2 & \cdots & x_{n-1}^{n-1} \end{matrix}\right| = V(x_0,x_1,\ldots, x_{n-1}).
Sostituendo questa espressione per K in Equazione 3 abbiamo
V(x_0,x_1,\ldots, x_{n-1},x_n) = V(x_0,x_1,\ldots, x_{n-1})(x_n-x_0)(x_n-x_1)\cdots(x_n- x_{n-1}), \tag{4}
in cui è facile riconoscere una relazione di ricorrenza
\begin{aligned} V(x_0,x_1,\ldots, x_{n-1},x_n) & = V(x_0,x_1,\ldots, x_{n-1}) \prod_{i=0}^{n-1}(x_n-\boldsymbol{x}_i),\\[0.5em] & = V(x_0,x_1,\ldots,x_{n-2}) \left(\prod_{i=0}^{n-2}( x_{n-1}-\boldsymbol{x}_i)\right) \left(\prod_{i=0}^{n-1}(x_n-\boldsymbol{x}_i)\right), \\[0.5em] & \vdots \\[0.5em] &= V(x_0,x_1,\ldots,x_k) \prod_{j=k}^{n}\prod_{i=0}^{j-1}( x_j-\boldsymbol{x}_i), \qquad\qquad k\geq 1. \end{aligned} \tag{5}
La ricorsione all’indietro si arresta sull’indice k=1
V(x_0,x_1) = \left|\begin{matrix}1 & x_0 \\ 1 & x_1\end{matrix}\right| = x_1 - x_0.
che in Equazione 5 produce proprio la formula Equazione 1.
Definizione 1 (Nodi di interpolazione) Le coppie ordinate della forma (x_i,y_i) con gli x_i assunti distinti, cioè x_i\neq x_j per i\neq j, si indicano normalmente col termine di nodi di interpolazione.
Se necessario, si può anche supporre che y_i=f(x_i), cioè che i valori assunti nei nodi di interpolazione siano tabulati a partire da una funzione nota y=f(x).
Definizione 2 (Gradi di libertà) Gli n+1 coefficienti a_i per i=0,1,\ldots n che determinano il polinomio di grado n si indicano normalmente col termine di gradi di libertà. Il numero a_n si chiama coefficiente del termine di grado massimo o leading coefficient, ed è ovviamente assunto non nullo quando il polinomio è di grado n.
Generalizzazione
Esaminiamo cosa succede se consideriamo una funzione della forma:
\mathcal{L}(x) = a_0 \mathcal{L}_0(x ) + a_1 \mathcal{L}_1(x) + \cdots + a_n\mathcal{L}_n(x ),
per cui valga
\mathcal{L}(x_k) = f(x_k), \qquad k=0,1,\ldots,n
Imponendo esplicitamente il passaggio per i nodi di interpolazione si ha un sistema lineare
\bgroup \left\{\begin{aligned} a_0 \mathcal{L}_0(x_0)+a_1 \mathcal{L}_1(x_0)+\cdots +a_n\mathcal{L}_n(x_0) &= f(x_0)\\ %% a_0 \mathcal{L}_0(x_1)+a_1 \mathcal{L}_1(x_1)+\cdots +a_n\mathcal{L}_n(x_1) &= f(x_1)\\ %% & \vdots \\ a_0 \mathcal{L}_0(x_n)+a_1 \mathcal{L}_1(x_n)+\cdots+a_n\mathcal{L}_n(x_n) &= f(x_n) \end{aligned}\right.\egroup
che scriviamo in forma matriciale compatta \boldsymbol{M}\boldsymbol{a}=\boldsymbol{b} con
\boldsymbol{M}= \begin{pmatrix} \mathcal{L}_0(x_0) & \mathcal{L}_1(x_0) & \mathcal{L}_2(x_0) & \cdots & \mathcal{L}_n(x_0) \\ \mathcal{L}_0(x_1) & \mathcal{L}_1(x_1) & \mathcal{L}_2(x_1) & \cdots & \mathcal{L}_nx_1) \\ \vdots & & & & \vdots \\ \mathcal{L}_0(x_n) & \mathcal{L}_1(x_n) & \mathcal{L}_2(x_n) & \cdots & \mathcal{L}_n(x_n) \end{pmatrix},
ed \boldsymbol{b}= \begin{pmatrix}f(x_0) \\ f(x_1) \\ \vdots \\ f(x_n) \end{pmatrix}, nelle incognite \boldsymbol{a}=(a_0 ,\,a_1 ,\,\ldots,\,a_n)^T.
Quindi la soluzione esiste ed è unica se e solo se la matrice \boldsymbol{M} ha determinante non nullo.
Condizione di Haar (o unisolvenza)
Definizione 3 (Condizione di Haar (o unisolvenza)) Date n+1 funzioni polinomiali generali \mathcal{L}_0(x ), \mathcal{L}_1(x ),,\mathcal{L}_n(x) ed n+1 nodi di interpolazione con ascisse (\boldsymbol{x}_i) supposte distinte, sia \boldsymbol{M} la matrice di componenti M_{i,j}=\mathcal{L}_j(x_i). La condizione \left|\begin{matrix}\boldsymbol{M}\end{matrix}\right|\neq 0 si chiama condizione di Haar2 o semplicemenet si dice che il la base è unisolvente.
Errore di interpolazione
Definizione 4 (errore di interpolazione) Data la funzione f(x ) ed il polinomio p(x) interpolante gli n+1 nodi (x_i,f_i) per i=0,1,\ldots n, definiamo come errore di interpolazione nel punto x la differenza (in valore assoluto) tra il valore calcolato con la funzione ed il valore calcolato con il polinomio
E(x) = |\,f(x )-p (x )\,|.
È possibile calcolare l’errore di approssimazione che si commette a sostituire p_n(x) alla funzione di partenza f(x).
Teorema 4 (Errore di interpolazione) Sia
- f(x) differenziabile di classe \mathcal{C}^{n+1} sull’intervallo [a,b]
- p_n(x) il suo polinomio interpolatore sui nodi distinti \{x_i\}_{i=0}^n
- E_n(x)=f(x)-p_n(x) l’errore di interpolazione
allora per ogni x vale E_n(x) = \dfrac{f^{(n+1)}(\xi_x)}{(n+1)!}\omega_{n+1}(x),\qquad \xi_x\in I(x,x_0,\ldots,x_n)
dove I(x,x_0,\ldots,x_n) = (\min\{x ,x_0,\ldots,x_n\}, \max\{x ,x_0,\ldots,x_n\}),
ovvero il più piccolo intervallo contenente i punti x_0,x_1,\ldots,x_n ed x, ed
\omega_{n+1}(x) = (x-x_0)(x-x_1)\cdots (x-x_n)
ovvero un polinomio monico le cui radici sono le ascisse di interpolazione.
Dimostrazione. L’errore di interpolazione è ovviamente zero se x coincide con uno dei nodi \{x_i\}_{i=0}^n. Negli altri casi fissiamo x=\bar{x} e definiamo una funzione ausiliaria G(z) come
G(z):=f(z)-p_n(z)-\dfrac{\omega_{n+1}(z)E_n(\bar{x})}{\omega_{n+1}(\bar{x})},
con la proprietà che G è di classe \mathcal{C}^{n+1} su I in quanto lo è f, mentre le restanti funzioni sono polinomi, inoltre G ha n+2 zeri distinti, dati dai nodi e da \bar{x}. Infatti per i=0,1,\ldots,n:
\begin{aligned} G(x_i) &= f(x_i)-p_n(x_i)-\dfrac{\omega_{n+1}(x_i)E_n(\bar{x})}{\omega_{n+1}(\bar{x})} \\ &= f(x_i)-f(x_i) -0 = 0, \end{aligned}
ed
\begin{aligned} G(\bar{x}) &= f(\bar{x})-p_n(\bar{x})-\dfrac{\omega_{n+1}(\bar{x})E_n(\bar{x})}{\omega_{n+1}(\bar{x})}\\ &= E_n(\bar{x})-E_n(\bar{x})=0. \end{aligned}
Per il teorema di Rolle (o del valor medio) G^\prime(z) avrà n+1 zeri distinti, e similmente G^{(k)}(z) avrà n+2-k zeri distinti. Dunque la derivata (n+1)-esima di G(z) avrà un solo zero \xi_x. Poiché però si ha anche che la derivata (n+1)-esima di E_n è uguale a alla derivata (n+1)-esima di f (perchè p_n ha grado n), e la derivata (n+1)-esima di \omega_{n+1} è (n+1)!, si ottiene
G^{(n+1)}(z) = f^{(n+1)}(z)-\dfrac{(n+1)!E_n(\bar{x})}{\omega_{n+1}(\bar{x})}
L’espressione precedente si annulla per z=\xi_x, quindi si ricava la relazione cercata per E_n(x).
Un’altra caratterizzazione può essere data quando i nodi sono equispaziati, ovvero nel caso in cui x_{i+1}-x_i=h. In tal caso la stima grossolana del polinomio \omega_{n+1}(x) quando x\in(a,b) si può esplicitare in
|\omega_{n+1}(x)| = \bigg\lvert\prod_{i=0}^n(x-x_i)\bigg\rvert\leq (b-a)^{n+1}.
ma si puo facilmente migliorare con la seguente osservazione. Se il punto x cade nell’intervallo [x_{i-1},x_i] allora
\begin{aligned} 0 & \leq |x-x_i| \leq h,\\ h & \leq |x-x_{i\pm 1}| \leq 2h,\\ 2h & \leq |x-x_{i\pm 2}| \leq 3h,\\ & \cdots \end{aligned}
cosi possiamo scrivere
|\omega_{n+1}(x)| \leq h(2h)(3h)\cdots(nh)((n+1)h) = (n+1)!h^{n+1}. \tag{6}
In casi particolari si può fare di meglio. Ad esempio per n=1 abbiamo
|\omega_2(x)| = |(x-x_0)(x-x_1)| = |x^2-(a+b)x+ab|,
essendo una parabola è facile trovare il massimo in [a,b] ottenendo con alcuni passaggi facili |\omega_2(x)|\leq h^2/4 che è migliore di 2h^2 che si ottiene con la Equazione 6.
Con questa osservazione si può migliorare un poco la stima Equazione 6 osservando che se il punto x cade nell’intervallo [x_{i-1},x_i] allora
|x-x_{i-1}|\cdot|x-x_i| \leq \dfrac{h^2}{4},\quad\implies\quad |\omega_{n+1}(x)| \leq \dfrac{(n+1)!}{4}h^{n+1}. \tag{7}
Usando la stima Equazione 7 si ottiene per i nodi equispaziati
|E_n(x)|\leq \sup_{\xi\in I}\bigg\lvert\dfrac{f^{(n+1)}(\xi)}{(n+1)!}\bigg\rvert |\omega_{n+1}(x)| \leq \sup_{\xi\in I} | f^{(n+1)}(\xi) |\dfrac{ h^{n+1} }{4}
Bisogna stare attenti a non concludere che il limite per n\to\infty dell’espressione dell’errore sia zero. Infatti se derivata n+1-esima di f(x) cresce piu velocemente di h^{n+1} allora la convergenza non è garantita. Un famoso controesempio (di Runge) mostra che tale limite può addirittura essere infinito (vedi note su esempio di Runge)
Note
Alexandre Thèophile Vandermonde (1735-1796), l’attribuzione è dovuta a Henri Lèon Lebesgue (1875-1941), tuttavia questa matrice non compare nei lavori di Vandermonde.↩︎