Queste note sono basate sugli appunti fatti con Gianmarco Manzini negli anni 1995-2005

Interpolazione Polinomiale

Appunti di calcolo numerico

Autori
Affiliazioni

Enrico Bertolazzi

University of Trento, Department of Industrial Engineering

Marco Frego

Free University of Bozen-Bolzano, Faculty of Engineering

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:

Figura 1

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}

Figura 2: La base di Bernstein dei polinomi di quinto grado B_i^5(x) per i=1,2,\ldots,5.

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.

Figura 3: La funzione \cos(x) approssimata su [0,1] con b_1, b_3 e b_5. Si vede che alzando il grado l’approssimazione è migliore, tuttavia la convergenza è lenta.

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.

Figura 4: La funzione \cos(x) approssimata in un intorno di x_0 = 1/2 con i polinomi di Taylor p_0, p_1 e p_3.

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.

Osservazione

Il teorema Teorema 3 afferma che dati n+1 nodi di interpolazione (distinti) il polinomio interpolante di grado al più n esiste ed è unico. Nel teorema è stato scritto come combinazione lineare dei polinomi 1, x, x^2, \ldots,x^n.

Tuttavia può essere scritto anche come combinazione lineare di funzioni polinomiali generali, che indicheremo con i simboli \mathcal{L}_0(x ), \mathcal{L}_1(x ), \ldots,\mathcal{L}_n(x).

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.

Osservazione

La condizione di Haar esprime l’indipendenza lineare delle funzioni polinomiali \mathcal{L}_i(x) per i=0,1,\ldots n sui nodi di interpolazione ed è necessaria e sufficiente per la risolubilità del problema di interpolazione.

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).

Corollario

Come corollario si può dare subito una stima dell’errore se si conosce (una stima) la derivata (n+1)-esima di f(x) mediante

|f(x)-p_n(x)|\leq \sup_{\xi\in I}\bigg\lvert\dfrac{f^{(n+1)}(\xi)}{(n+1)!}\bigg\rvert |\omega_{n+1}(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

  1. 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.↩︎

  2. Alfréd Haar (1885-1933)↩︎