Interpolazione polinomiale - forma di Lagrange, differenze divise ed errore
In questa pagina 6
Prerequisiti: Teoremi di Rolle e di LagrangeRolle: f continua su [a,b], derivabile in ]a,b[, f(a) = f(b) ⇒ esiste c in ]a,b[ con f'(c) = 0. Lagrange (valor medio): stesse ipotesi senza f(a) = f(b) ⇒ esiste c con f'(c) = (f(b) − f(a))/(b − a): la tangente in c è parallela alla corda. Conseguenza: su un intervallo f è costante se e solo se f' = 0; su un insieme che non è un intervallo è solo costante a tratti (arctan x + arctan(1/x)).Teoremi di Rolle e di Lagrange → (per l'errore), Formula di Taylor con resto di LagrangeSe f ha n+1 derivate continue su [a,b], l'errore tra f e il suo polinomio di Taylor si scrive esattamente come f^(n+1)(c)(x-x0)^(n+1)/(n+1)! per un c opportuno: serve a stimare l'errore su tutto un intervallo e a scegliere il grado del polinomio.Formula di Taylor con resto di Lagrange → (caso a nodi coincidenti), Eliminazione di GaussCon tre operazioni elementari sulle righe (scambio, moltiplicazione per uno scalare non nullo, somma di un multiplo di un'altra riga) ogni matrice si riduce a scala senza cambiare il rango; serve a calcolare ranghi, risolvere sistemi, trovare relazioni di dipendenza e matrici che riducono a scala.Eliminazione di Gauss → (sistema di Vandermonde).
Problema. Di una funzione si conoscono i valori in punti distinti (nodi), ad esempio perché sono misure o una tabella. Si cerca una funzione semplice, un polinomio, che passi per questi punti, per stimare in altri punti, e poi derivarla o integrarla (Formule di quadratura - trapezi, Cavalieri-Simpson ed estrapolazione di RichardsonUna formula di quadratura approssima $\int_a^b f,dx$ con $\sum w_if(x_i)$ ottenuta integrando il polinomio che interpola $f$ nei nodi. Trapezio $\frac{b-a}2[f(a)+f(b)]$ (grado di esattezza 1, errore $-\frac{(b-a)^3}{12}f''(\xi)$), punto medio $(b-a)f(m)$ (grado 1, errore $+\frac{(b-a)^3}{24}f''(\xi)$), Cavalieri-Simpson $\frac{b-a}6[f(a)+4f(m)+f(b)]$ (grado 3, errore $-\frac{(b-a)^5}{2880}f^{(4)}(\xi)$). Composite con passo $h=\frac{b-a}n$: trapezi errore $-\frac{(b-a)h^2}{12}f''(\xi)$ (ordine 2, rapporto tra errori 4 se $h$ si dimezza), Simpson errore $-\frac{(b-a)h^4}{180}f^{(4)}(\xi)$ (ordine 4, rapporto 16, $n$ pari). Estrapolazione di Richardson: se $Q(h)=I+Ch^p+\dots$ allora $I\approx\frac{2^pQ(h/2)-Q(h)}{2^p-1}$; per i trapezi $p=2$ e $\frac{4T_{h/2}-T_h}3=S_{h/2}$; ripetuta dà la tabella di Romberg. Stima dell'errore a posteriori: $I-Q(h/2)\approx\frac{Q(h/2)-Q(h)}{2^p-1}$.Formule di quadratura - trapezi, Cavalieri-Simpson ed estrapolazione di Richardson →). Un polinomio è facile da valutare; un polinomio di grado è determinato da numeri, proprio come i dati.
Teorema (esistenza e unicità). Per coppie con a due a due distinti esiste un unico polinomio di grado con per ogni .
Dimostrazione. Scrivendo , le condizioni formano un sistema lineare per nelle incognite , con matrice di Vandermonde , il cui determinante è perché i nodi sono distinti. Quindi il sistema ha una e una sola soluzione. (Unicità anche direttamente: la differenza di due soluzioni è un polinomio di grado con zeri, quindi nulla.) ∎
Risolvere il sistema di Vandermonde è però mal condizionato (la matrice ha numero di condizionamento enorme: circa per 5 nodi equispaziati in , per 10 nodi, per 15, per 20; vedi Condizionamento di un problema e stabilità di un algoritmoL'errore finale ha tre origini (dati, troncamento, arrotondamento). Un problema è ben posto se la soluzione esiste, è unica e dipende con continuità dai dati; il numero di condizionamento K = |x f'(x)/f(x)| misura di quanto un errore relativo sui dati si amplifica nel risultato (si perdono circa log10 K cifre). La stabilità riguarda invece l'algoritmo: un algoritmo instabile amplifica gli errori anche su un problema ben condizionato (ricorrenza I_n = 1 − n I_{n−1}); un problema mal condizionato non si salva con nessun algoritmo. Uno schema numerico converge se è consistente e stabile (derivata numerica: troncamento contro arrotondamento).Condizionamento di un problema e stabilità di un algoritmo →). Per questo si usano due altre scritture dello stesso polinomio.
Forma di Lagrange
Si costruiscono i polinomi di grado (il numeratore si annulla in tutti i nodi tranne ; il denominatore normalizza a in ). Allora Infatti , e il grado è . Dato che (interpola la funzione costante ), i sono "pesi" che sommano a .
Esempio svolto. con nodi , , , valori . Si stima . Con :
- ;
- ;
- .
Somma dei pesi: ✓. Quindi Il valore esatto è : errore .
La forma di Lagrange è comoda per la teoria, ma se si aggiunge un nodo si deve ricalcolare tutto, e valutarla costa .
Forma di Newton e differenze divise
Definizione (differenze divise). e ricorsivamente
Teorema (forma di Newton). Il polinomio di interpolazione è
Perché funziona: aggiunge ogni volta un termine che si annulla nei nodi precedenti, quindi non rovina l'interpolazione già fatta; il coefficiente è scelto per far passare il nuovo nodo. Proprietà utili:
- Le differenze divise sono simmetriche nei nodi (non dipendono dall'ordine).
- per un certo nel più piccolo intervallo contenente i nodi (si ricava dall'errore sotto). In particolare, se è un polinomio di grado , tutte le differenze divise di ordine sono nulle, e quelle di ordine valgono il coefficiente direttivo.
- Aggiungere un nodo costa solo una nuova riga della tabella: si aggiunge un termine alla forma di Newton senza toccare i precedenti.
Esempio svolto: tabella delle differenze divise di . Per i nodi , , : Allora e lo stesso valore di Lagrange (stesso polinomio, scritto in un'altra base).
Caso limite (nodi coincidenti). Se tutti i nodi tendono a , e diventa il polinomio di Taylor; la formula dell'errore diventa il resto di Lagrange. Quindi Taylor è il caso limite dell'interpolazione.
Errore di interpolazione
Teorema (errore). Sia , con nodi . Per ogni esiste tale che
Dimostrazione. Se è un nodo entrambi i membri sono nulli. Sia non nodo e si pone si annulla negli nodi (perché e lì) e anche in (per la scelta di ): ha zeri distinti. Applicando il teorema di Rolle (Teoremi di Rolle e di LagrangeRolle: f continua su [a,b], derivabile in ]a,b[, f(a) = f(b) ⇒ esiste c in ]a,b[ con f'(c) = 0. Lagrange (valor medio): stesse ipotesi senza f(a) = f(b) ⇒ esiste c con f'(c) = (f(b) − f(a))/(b − a): la tangente in c è parallela alla corda. Conseguenza: su un intervallo f è costante se e solo se f' = 0; su un insieme che non è un intervallo è solo costante a tratti (arctan x + arctan(1/x)).Teoremi di Rolle e di Lagrange →) ripetutamente, ha almeno zeri, ne ha , …, ne ha almeno , in un punto . Ora (grado ) e , quindi ∎.
Maggiorazione. Se su , L'errore ha due fattori: uno dipende da (la sua derivata -esima), l'altro solo dai nodi (il polinomio nodale ). Il primo non si controlla; il secondo sì, scegliendo bene i nodi.
Esempio (continuazione). Per , , su . Per : . Maggiorazione: . L'errore effettivo è inferiore ✓.
Esempio: , nodi , valore in . , , . Il polinomio è e , contro : errore . Con la formula: e , quindi ; ponendolo uguale a si trova ✓. Aggiungendo il nodo () basta una differenza divisa in più: , e (più vicino a ).
La scelta dei nodi: fenomeno di Runge e nodi di Chebyshev
Più nodi non significano più accuratezza. Per su con nodi equispaziati l'errore massimo cresce con :
| nodi equispaziati | nodi di Chebyshev | |
|---|---|---|
(errore massimo su .) Con equispaziati si ha mentre : le oscillazioni agli estremi dell'intervallo sono enormi. È il fenomeno di Runge: per nodi equispaziati è piccolo al centro e grande ai bordi, e le derivate di crescono fattorialmente.
Grafico interattivo: Fenomeno di Runge: f(x) = 1/(1+25x²) e il polinomio di interpolazione di grado 8 sui 9 nodi equispaziati di [−1, 1] (oscilla ai bordi, p(0,95) = −0,89)
Per ridurre il problema si usano i nodi di Chebyshev sull'intervallo : (le proiezioni sull'asse di punti equispaziati sulla semicirconferenza: più fitti ai bordi). Per questa scelta , che è il minimo possibile su tutte le scelte di nodi. Confronto di :
| equispaziati | Chebyshev () | |
|---|---|---|
Su un intervallo generico i nodi si ottengono con e vale
Esempio: quanti nodi per su con errore ? Qui . Con nodi di Chebyshev: vale per e per : servono (7 nodi). Con nodi equispaziati ( con , quindi maggiorante ): per e per : servono .
In pratica. Si evitano i polinomi di grado alto su nodi equispaziati; per molti dati si usano polinomi a tratti (Interpolazione a tratti, spline cubiche e minimi quadratiInvece di un polinomio di grado alto si usano polinomi di grado basso su ogni intervallo. Lineare a tratti: errore ≤ h²/8·max|f''|. Spline cubica: polinomio di grado 3 su ogni intervallo, di classe C² nei nodi; i momenti M_i = S''(x_i) risolvono un sistema tridiagonale (h_{i−1}/6)M_{i−1} + ((h_{i−1}+h_i)/3)M_i + (h_i/6)M_{i+1} = differenza tra le pendenze dei due intervalli adiacenti, con due condizioni agli estremi (naturale M_0 = M_n = 0, vincolata, not-a-knot); errore O(h⁴), nessun fenomeno di Runge. Minimi quadrati: con più dati che parametri si minimizza ‖Ac − y‖², cioè si risolvono le equazioni normali AᵀA c = Aᵀy (proiezione ortogonale di y sulle colonne di A); la retta di regressione minimizza la somma dei quadrati dei residui e i residui sono ortogonali alle colonne.Interpolazione a tratti, spline cubiche e minimi quadrati →) o l'approssimazione ai minimi quadrati.
Codice
import numpy as np
def diffdiv(x, y): # coefficienti di Newton f[x0], f[x0,x1], ...
x = np.asarray(x, float); c = np.array(y, float)
n = len(x)
for j in range(1, n):
c[j:] = (c[j:] - c[j-1:-1]) / (x[j:] - x[:n-j])
return c
def newton_val(x, c, t): # schema di Horner generalizzato
p = c[-1]
for k in range(len(c) - 2, -1, -1):
p = p * (t - x[k]) + c[k]
return p
x = [0, 0.5, 1]; y = np.exp(x)
c = diffdiv(x, y)
print(c) # differenze divise
print(newton_val(x, c, 0.25), np.exp(0.25))
x = [1, 2, 4]; y = [1, 0.5, 0.25] # 1/x
c = diffdiv(x, y)
print(c, newton_val(x, c, 3))
print(np.polyfit(x, y, 2)) # stessi nodi: coefficienti in x^2, x, 1Output:
[1. 1.29744254 0.84167857]
1.2717557244677156 1.2840254166877414
[ 1. -0.5 0.125] 0.25
[ 0.125 -0.875 1.75 ]In MATLAB: p = polyfit(x, y, n) con pari al numero di nodi meno uno restituisce il polinomio di interpolazione (coefficienti in potenze di ), polyval(p, t) lo valuta. Per molti nodi polyfit avvisa del cattivo condizionamento (matrice di Vandermonde).
Errori tipici
- Confondere grado e numero di nodi: con nodi il grado è , e l'errore contiene .
- Dimenticare che dipende da e che non si conosce: nell'esercizio si maggiora sull'intervallo.
- Usare molti nodi equispaziati sperando in un errore minore (Runge).
- Sbagliare gli indici delle differenze divise: il denominatore è (nodi estremi), non la differenza di due nodi adiacenti.
Domande d'esame
- Perché il polinomio di interpolazione di grado su nodi distinti è unico? Risposta: matrice di Vandermonde con ; oppure la differenza di due soluzioni ha zeri e grado .
- Enunciare la formula dell'errore e indicare da cosa dipende. Risposta: ; dipende da (derivata -esima) e dai nodi.
- Calcolare la differenza divisa del secondo ordine di sui nodi . Risposta: , , (il coefficiente di ).
- Cos'è il fenomeno di Runge e come si limita? Risposta: crescita dell'errore con per nodi equispaziati; si usano nodi di Chebyshev o polinomi a tratti.
Versione ripasso
Esistenza e unicità: nodi distinti un solo di grado (; oppure la differenza di due soluzioni ha zeri). Vandermonde mal condizionata: cond (5 nodi), (10), (20) (Condizionamento di un problema e stabilità di un algoritmoL'errore finale ha tre origini (dati, troncamento, arrotondamento). Un problema è ben posto se la soluzione esiste, è unica e dipende con continuità dai dati; il numero di condizionamento K = |x f'(x)/f(x)| misura di quanto un errore relativo sui dati si amplifica nel risultato (si perdono circa log10 K cifre). La stabilità riguarda invece l'algoritmo: un algoritmo instabile amplifica gli errori anche su un problema ben condizionato (ricorrenza I_n = 1 − n I_{n−1}); un problema mal condizionato non si salva con nessun algoritmo. Uno schema numerico converge se è consistente e stabile (derivata numerica: troncamento contro arrotondamento).Condizionamento di un problema e stabilità di un algoritmo →).
Lagrange: , , , .
- Esempio su in : , , (somma ); contro (errore ).
Newton: , . Simmetriche; ; per un polinomio di grado quelle di ordine sono nulle; un nodo in più = un termine in più. Nodi coincidenti: Taylor (Formula di Taylor con resto di LagrangeSe f ha n+1 derivate continue su [a,b], l'errore tra f e il suo polinomio di Taylor si scrive esattamente come f^(n+1)(c)(x-x0)^(n+1)/(n+1)! per un c opportuno: serve a stimare l'errore su tutto un intervallo e a scegliere il grado del polinomio.Formula di Taylor con resto di Lagrange →).
- : , , ; .
Errore: , . Dimostrazione: ha zeri, Rolle (Teoremi di Rolle e di LagrangeRolle: f continua su [a,b], derivabile in ]a,b[, f(a) = f(b) ⇒ esiste c in ]a,b[ con f'(c) = 0. Lagrange (valor medio): stesse ipotesi senza f(a) = f(b) ⇒ esiste c con f'(c) = (f(b) − f(a))/(b − a): la tangente in c è parallela alla corda. Conseguenza: su un intervallo f è costante se e solo se f' = 0; su un insieme che non è un intervallo è solo costante a tratti (arctan x + arctan(1/x)).Teoremi di Rolle e di Lagrange →) dà , con . Maggiorante ; per in : .
- su : , , , contro ; ; con il nodo : , .
Nodi: equispaziati Runge (per errore massimo per ; contro ). Chebyshev : su (minimo); su . Errori massimi di Chebyshev .
- su con errore : Chebyshev (), equispaziati ().
Passaggi principali.
- Pesi di Lagrange in : , , .
- Perché la forma di Newton funziona: , il nuovo termine si annulla nei nodi già usati.
- Dimostrazione dell'errore: rende ; , , quindi .
- in : , , .
- equispaziati contro Chebyshev ().
- Equispaziati su : , quindi errore con : (), (). Chebyshev: (), ().
Codice: diffdiv + Horner; MATLAB polyfit(x,y,n), polyval.
Errori tipici: grado ed nodi confusi; trattato come noto; molti nodi equispaziati (Runge); indici del denominatore delle differenze divise ().
Esercizi su questo argomento
- Esercizio - Differenze divise di una tabella, grado del polinomio e un dato sbagliato
- Esercizio - Fenomeno di Runge per 1/(1+x2 su [-5,5] con nodi equispaziati e di Chebyshev
- Esercizio - Interpolazione di sqrt(x) con nodi 1, 4, 9 e perdita di accuratezza vicino a zero
- Esercizio - Interpolazione lineare a tratti di sin x, errore e numero di intervalli
- Esercizio - Stima di ln 2,5 con tre nodi, Lagrange, Newton e maggiorazione dell'errore