Interpolazione polinomiale

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

L'interpolazione polinomiale è l'interpolazione di una serie di valori (ad esempio dei dati sperimentali) con una funzione polinomiale che passa per i punti dati. In particolare, un qualsiasi insieme di n+1 punti distinti può essere sempre interpolato da un polinomio di grado n che assume esattamente il valore dato in corrispondenza dei punti iniziali.

Interpolazione e approssimazione[modifica | modifica wikitesto]

L'interpolazione polinomiale è un caso particolare di approssimazione tramite polinomi, dove il vettore degli scarti r, ovvero il vettore dei quadrati della distanza tra il valore dato in un punto e il valore del polinomio approssimante in quel punto, è nullo. Mentre per l'approssimazione polinomiale si vuole trovare un polinomio (generalmente di basso grado) che approssima i punti dati con un errore minimo, nell'interpolazione si vuole trovare il polinomio (potenzialmente di alto grado) che passa esattamente per quei punti.

Sebbene il polinomio di interpolazione assuma il valore esatto nei punti dati, dato il grado superiore esso tenderà ad oscillare maggiormente tra un punto e l'altro, dando quindi una previsione del valore in quelle aree che sarà peggiore di quella data da un polinomio di grado inferiore che non passa per tutti i punti dati. Questo fenomeno è noto come fenomeno di Runge.

Costruzione di un polinomio di interpolazione[modifica | modifica wikitesto]

Un polinomio di interpolazione può essere costruito con diversi metodi, ad esempio ricorrendo alla matrice di Vandermonde o alla formula di interpolazione di Lagrange.

Esistenza del polinomio interpolatore[modifica | modifica wikitesto]

Dati punti distinti, dove , dobbiamo determinare il polinomio (eventualmente unico) di grado minimo che passa per i punti assegnati.

Teorema di unicità del polinomio interpolatore[modifica | modifica wikitesto]

Esiste uno ed un sol polinomio di grado al più che assume valori , , in corrispondenza di punti distinti , .

Dimostrazione[modifica | modifica wikitesto]

Abbiamo preso punti così da poter usare un polinomio di grado che ha coefficienti

e imporre le condizioni

I parametri incogniti sono soluzione del seguente sistema quadrato di ordine . Dovremo quindi risolvere il sistema associato

dove è la classica matrice di Vandermonde, che risulta non singolare se e solo se per (e quindi ), dato che

Essendo la matrice non singolare, possiamo affermare che il polinomio di grado n esiste ed è unico.

Il sistema ci è servito per stabilire l’esistenza di ma non è consigliato risolvere il sistema per due motivi:

  • I sistemi con matrici di Vandermonde sono mal condizionati
  • Il numero di operazioni aritmetiche necessarie è elevato

Esempio di interpolazione[modifica | modifica wikitesto]

Di una funzione f che in altra sede è nota si supponga di conoscere alcuni valori; in particolare si considerino i seguenti valori tabulati

Diagramma dei punti dati.
x f(x)
0 0
1 0.8415
2 0.9093
3 0.1411
4 −0.7568
5 −0.9589
6 −0.2794

Ci si chiede, per esempio: quanto vale la funzione in ? L'interpolazione risolve problemi come questo.

Il seguente polinomio di sesto grado passa attraverso tutti i sette punti dati:

Sostituendo x = 2.5, troviamo che f(2.5) = 0.5965.

L'errore di interpolazione è proporzionale alla distanza fra i punti dati alla potenza n . Inoltre questo interpolante, essendo un polinomio, è illimitatamente differenziabile. Quindi l'interpolazione polinomiale, in linea di principio, risolve tutti i problemi di interpolazione lineare.

Tuttavia questo metodo presenta alcuni svantaggi. Il calcolo che porta ai coefficienti del polinomio d'interpolazione è molto "costoso" (in termini di tempo di esecuzione richiesto al calcolatore e in termini di complessità delle elaborazioni). Inoltre, l'interpolazione polinomiale per il complesso dei valori dalla variabile indipendente non si rivela molto esatta; questo accade in particolare nei punti estremi. Questi svantaggi possono essere evitati usando i metodi dell'interpolazione spline o razionale col metodo Floater Hormann.

Interpolazione di funzioni su calcolatore[modifica | modifica wikitesto]

Su calcolatore l'interpolazione polinomiale è soggetta a diversi problemi. Il peggiore è sicuramente il mal condizionamento della matrice dei coefficienti (che assume la forma di matrice di Vandermonde). Ciò si traduce nella impossibilità di poter risolvere il sistema di equazioni con metodi standard come decomposizione LU o sostituzione all'indietro, infatti al crescere del numero dei nodi cresce il sistema e l'indice di condizionamento si fa sempre più grande.

Per calcolare i coefficienti del polinomio interpolante, senza dover risolvere il sistema di equazioni mal condizionato, viene utilizzata l'interpolazione di Lagrange oppure l'interpolazione spline.

I software per il calcolo numerico sono, il più delle volte, provvisti di funzioni built-in per risolvere questi problemi.

Su MATLAB vengono utilizzati due comandi per interpolare una funzione tramite polinomi:

  • polyfit per calcolare il polinomio interpolante su un insieme di nodi noti
  • polyval per valutare il polinomio su punti in cui non si conosce la f(x)

La scelta dei nodi da utilizzare per l'interpolazione viene fatta in modo da soddisfare la proprietà di convergenza uniforme tra funzione interpolante e funzione da interpolare, scegliendo i nodi in modo che non siano equidistanti.

Sulla scelta influiscono diverse cause:

  • Teorema di Faber: data una qualunque successione di nodi in un intervallo chiuso [a,b] esiste sempre una funzione f(x) che genera una sequenza di polinomi di interpolazione che non convergono uniformemente a f in [a,b].
  • Fenomeno di Runge: nell'intervallo [-5,5] la funzione f(x)=1/1+x^2 se interpolata con una funzione p(x) mostra che all'aumentare del numero di nodi (equidistanti) p(x) non converge a f(x) ma l'errore aumenta.

Ciò che viene fatto generalmente è scegliere i nodi utilizzando la definizione di nodi di Čebyšëv che assicurano la convergenza uniforme all'aumentare del numero di nodi.

Su MATLAB i nodi di Čebyšëv su un intervallo [a,b] vengono calcolati eseguendo la funzione:

  %i = vettore degli indici dei nodi (da 0 a n-1 nodi)
  %n = numero di nodi 
  nchev=(a+b)/2 + (a-b)/2 * cos((2*i+1)/(2*(n+1))*pi)

nchev conterrà alla fine un vettore riga che rappresenta i nodi (x) da utilizzare per interpolare la funzione.

Stima dell'errore[modifica | modifica wikitesto]

Siano dati punti distinti, dell'intervallo chiuso e limitato . Sia una funzione assegnata nello spazio e il polinomio di grado n tale che:

.

Allora per ogni esiste un valore

, con

con definito errore di interpolazione, ossia l'errore che si commette approssimando il valore della funzione col valore del polinomio.

Posto , un limite superiore del valore assoluto dell'errore di interpolazione risulta essere .

Questa formula è molto utile per stimare, ad esempio, il numero di nodi necessari ad ottenere un errore di interpolazione minore di una data tolleranza massima.

Nodi di Čebyšëv[modifica | modifica wikitesto]

I nodi di Čebyšëv sono dei valori sull'asse delle ascisse, da utilizzare per l'interpolazione polinomiale di una funzione, che permettono di minimizzare l'errore di interpolazione.

Bibliografia[modifica | modifica wikitesto]

  • R.Bevilacqua, D. Bini, M.Capovani, O. Menchi (2003). Appunti di Calcolo Numerico. Capitolo 5. Servizio Editoriale Universitario Pisa - Azienda Regionale Diritto allo Studio Universitario.

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

  Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica