Interpolazione

Da Wikipedia, l'enciclopedia libera.
bussola Disambiguazione – Se stai cercando altri significati, vedi Interpolazione (disambigua).

In matematica, e in particolare in analisi numerica, per interpolazione si intende un metodo per individuare nuovi punti del piano cartesiano a partire da un insieme finito di punti dati, nell'ipotesi che tutti i punti si possano riferire ad una funzione f(x) di una data famiglia di funzioni di una variabile reale.

Nelle attività scientifiche e tecnologiche, e in genere negli studi quantitativi di qualsiasi fenomeno, accade molto spesso di disporre di un certo numero di punti del piano ottenuti con un campionamento o con apparecchiature di misura e di ritenere opportuno individuare una funzione che passi per tutti i punti dati o almeno nelle loro vicinanze (vedi curve fitting).

Definizione del problema[modifica | modifica wikitesto]

Sia data una sequenza di n numeri reali distinti \,x_k chiamati nodi e per ciascuno di questi \,x_k sia dato un secondo numero \,y_k. Ci proponiamo di individuare una funzione \,f di una certa famiglia tale che sia

f(x_k) = y_k ~~\mbox{per}~ k=1,\ldots,n .

Una coppia \,(x_k,y_k) viene chiamato punto dato ed \,f viene detta funzione interpolante, o semplicemente interpolante, per i punti dati.

Talora i valori \,y_k, quando si intendono riferiti a una funzione abbastanza definita, si scrivono \,f_k.

Si parla di interpolazione quando: note alcune coppie di dati (x;y), interpretabili come punti di un piano, ci si propone di costruire una funzione, detta funzione interpolante, che sia in grado di descrivere la relazione che intercorre fra l'insieme dei valori x e l'insieme dei valori y

Esempio[modifica | modifica wikitesto]

Si supponga di avere la seguente tabella, che dà alcuni valori di una funzione \,f(x) che si può considerare nota in altra sede.

Diagramma dei punti dati.
x f(x)
0 0
1 0,8415
2 0,9093
3 0,1411
4 -0,33
5 -0,9589
6 -0,2794

Ci chiediamo: quanto vale la funzione per esempio, in \overline{x}= 2{,}5 ? L'interpolazione risolve problemi come questo.

Esistono molti metodi differenti di interpolazione; in questo articolo descriveremo a grandi linee solo quelli più rilevanti per la comprensione della problematica.

Per capire se il metodo scelto e la funzione interpolante trovata sono adatti, occorre rispondere a quattro richieste generali:

  • Quanto è esatto il metodo?
  • Quanto è costoso?
  • Quanto è buona la funzione interpolante?
  • Quanti punti dati sono necessari per procedere?

Interpolazione lineare[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Interpolazione lineare.
Interpolation example linear.svg

Uno dei metodi più semplici è l'interpolazione lineare. Si consideri il suddetto esempio di determinare \,f(2.5). Poiché 2.5 è il punto medio fra 2 e 3, è ragionevole assegnare a \,f(2.5) come il valore medio fra \,f(2) = 0.9093 e \,f(3) = 0.1411: in tal modo si ottiene \,f(2.5)= 0.5252.

In generale, l'interpolazione lineare per ogni coppia di punti dati consecutivi, denotiamoli \,(x_a,y_a) e \,(x_b,y_b), definisce come funzione interpolante nell'intervallo \,[x_a,x_b] la

 f(x) = \frac{x-x_b}{x_a-x_b} y_a - \frac{x-x_a}{x_a-x_b} y_b.

Questa formula può essere interpretata come valutazione della media ponderata.

L'interpolazione lineare è rapida e facile, ma non è molto precisa. Un altro svantaggio è che l'interpolante non è differenziabile nei punti \,x_k.

La seguente stima dell'errore indica che l'interpolazione lineare non è molto precisa. Indichiamo con \,g(x) la funzione interpolante e supponiamo che la \,x sia compresa fra \,x_a e \,x_b e che \,g(x) sia due volte differenziabile. Allora l'errore della interpolazione lineare è

 |f(x)-g(x)| \le C(x_b-x_a)^2 \quad\mbox{dove}\quad C = \frac18 ~\max_{y\in[x_a,x_b]}~ g''(y) .

Quindi, l'errore è proporzionale al quadrato della distanza fra i punti dati. Gli errori di alcuni altri metodi, comprese l'interpolazione polinomiale e l'interpolazione spline descritte qui sotto, sono proporzionali a potenze superiori della distanza fra i punti dati e quindi sono preferibili. Questi metodi inoltre producono funzioni interpolanti più lisce.

Interpolazione polinomiale[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Interpolazione polinomiale.
Interpolation example polynomial.svg

L'interpolazione polinomiale può considerarsi, grosso modo, una generalizzazione dell'interpolazione lineare. Mentre l'interpolante lineare è una sequenza di funzioni lineari, nella interpolazione polinomiale si cerca come interpolante un unico polinomio di un grado opportuno.

Per il problema dato sopra si trova che il seguente polinomio di sesto grado passa attraverso tutti i sette punti:

\, f(x) = -0.0001521 x^6 - 0.003130 x^5 + 0.07321 x^4 - 0.3577 x^3 + 0.2255 x^2 + 0.9038 x . Assegnando \,x=2.5, troviamo che \,f(2.5) = 0.5965.

In generale, se abbiamo n punti dati, esiste esattamente un polinomio di grado n−1 che passa attraverso tutti tali punti. L'errore di interpolazione è proporzionale alla distanza fra i punti dati elevata alla potenza n-esima. Inoltre l'interpolante, in quanto polinomio, è illimitatamente differenziabile. Dunque l'interpolazione polinomiale evita tutte le difficoltà incontrate dalla interpolazione lineare.

Tuttavia, se si riprendono le 4 richieste generali, si vede che l'interpolazione polinomiale presenta alcuni svantaggi. Il calcolo del polinomio d'interpolazione è molto 'costoso' (in termini di operazioni richieste al calcolatore, cioè si ha un tempo di calcolo costoso). Inoltre l'interpolazione polinomiale non risulta molto esatta nell'intero dominio della funzione; in particolare nei punti estremi dell'intervallo si manifesta il cosiddetto fenomeno di Runge. Questi svantaggi possono essere evitati usando altre interpolazioni e in particolare l'interpolazione spline.

Interpolazione razionale[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Interpolazione razionale.

L'interpolazione razionale, simile a quella polinomiale, utilizza invece delle funzioni razionali  {R}(x) = \frac{P(x)}{Q(x)}.
I più noti metodi di interpolazione razionale sono

Dei tre, l'ultimo non ha mai asintoti e garantisce un modesto errore anche con piccoli intervalli, anche con le funzioni di tipo Runge. Il vantaggio dell'approssimazione razionale è che, ad esempio nella funzione f(x) = ln(x), l'interpolazione polinomiale causa delle forti oscillazioni, soprattutto fuori dai valori tabellati (estrapolazione), mentre la razionale ha meno oscillazioni. Inoltre, coinvolge meno calcoli dell'interpolazione spline, essendo generalmente implementata in O(n^2) per il calcolo dei pesi, da farsi una tantum per i valori tabulati, e O(n) per l'interpolazione.

Interpolazione spline[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Interpolazione spline.
Interpolation example spline.svg

Mentre l'interpolazione lineare utilizza una funzione lineare per ciascuno degli intervalli \,[x_k,y_k], la interpolazione spline si serve nei suddetti intervalli di polinomi di grado piccolo scegliendoli in modo che due polinomi successivi si saldino in modo liscio. La funzione che si ottiene con un procedimento di questo genere si chiama funzione spline.

Per esempio, la spline naturale cubica è a tratti cubica e due volte differenziabile. Inoltre, la relativa derivata seconda è zero nei punti finali. La spline naturale cubica che interpola i punti nella tabella qui sopra è così definita

 f(x) = \left\{ \begin{matrix}
-0.1522 x^3 + 0.9937 x, & \mbox{se } x \in [0,1], \\
-0.01258 x^3 - 0.4189 x^2 + 1.4126 x - 0.1396, & \mbox{se } x \in [1,2], \\
0.1403 x^3 - 1.3359 x^2 + 3.2467 x - 1.3623, & \mbox{se } x \in [2,3], \\
0.1579 x^3 - 1.4945 x^2 + 3.7225 x - 1.8381, & \mbox{se } x \in [3,4], \\
0.05375 x^3 -0.2450 x^2 - 1.2756 x + 4.8259, & \mbox{se } x \in [4,5], \\
-0.1871 x^3 + 3.3673 x^2 - 19.3370 x + 34.9282, & \mbox{se } x \in [5,6]. \\
\end{matrix} \right.

La funzione interpolante ottenuta con la interpolazione spline, come quella ottenuta con la interpolazione polinomiale, rispetto alla interpolante ottenuta con l'interpolazione lineare presenta errori inferiori ed è più liscia. L'interpolante spline risulta più facile da valutare dei polinomi di grado elevato richiesti dalla interpolazione polinomiale. Inoltre non soffre del fenomeno di Runge.

Altre forme di interpolazione[modifica | modifica wikitesto]

Si individuano altri procedimenti di interpolazione servendosi di famiglie di interpolanti differenti. Si studiano quindi, per esempio, l'interpolazione razionale, cioè l'interpolazione mediante funzioni razionali e l'interpolazione trigonometrica che si serve di polinomi trigonometrici. La trasformata discreta di Fourier è un caso speciale di interpolazione trigonometrica. Un'altra possibilità interessante consiste nell'utilizzare le cosiddette wavelets o ondine

Quando si dispone di un insieme illimitato di punti dati si può adottare le formula interpolante di Nyquist-Shannon.

Si studia anche l'interpolazione multivariata, attività di interpolazione concernente le funzioni di più variabili reali. I suoi metodi includono interpolazione bilineare e interpolazione bicubica in due dimensioni e interpolazione trilineare in tre dimensioni.

In alcuni ambiti applicativi può accadere di disporre non solo di alcuni valori della funzione che vogliamo interpolare, ma anche di valori della sua derivata. In questi casi si trattano i cosiddetti problemi della interpolazione di Hermite.

Nozioni collegate[modifica | modifica wikitesto]

Si usa il termine estrapolazione per l'attività finalizzata a trovare valori di una funzione reale \,f(x) per valori della \,x che sono al di fuori dell'intervallo dell'asse reale che contiene i punti \,x_k nei quali sono noti i valori che essa assume.

Nei problemi di regressione o di adattamento di curve (curve fitting) si abbandona il vincolo che impone alla funzione interpolante di passare esattamente per i punti dati e si richiede solo una curva approssimante che avvicini il più possibile i punti dati.

Un problema diverso dalla interpolazione, ma strettamente collegato con esso, è l'approssimazione di una funzione complicata mediante una più semplice e che presenti un andamento simile. Supponiamo di conoscere la funzione di partenza \,f(x), ma che questa sia tanto complessa da non potersi valutare efficientemente. Possiamo allora considerare un determinato insieme dei suoi punti e cercare di interpolarli per individuare una funzione \,a(x) più semplice. Naturalmente quando si utilizzerà la funzione approssimante per calcolare nuovi valori \,a(\overline{x}) si avranno risultati diversi dagli \,f(\overline{x}) ottenibili se calcolassimo la funzione originale; tuttavia, in certi ambiti applicativi e in seguito all'adozione di opportuni metodi di interpolazione, il vantaggio della maggiore semplicità e della conseguente maggiore manovrabilità può rendere poco rilevante l'errore.

La teoria dell'approssimazione studia come trovare la migliore approssimazione di una funzione \,f(x) con una funzione che appartiene ad una classe predeterminata e quanto risulta buona una tale funzione approssimante. Naturalmente si incontrano delle limitazioni a quanto una interpolante riesca ad approssimare la funzione originale.

Note[modifica | modifica wikitesto]

  1. ^ Numerical Recipes in C, II ed, (1992) §3.2 Rational Function Interpolation an Extrapolation.
  2. ^ Jean–Paul Berrut, Richard Baltensperger, Hans D. Mittelmannin, Recent developments in barycentric rational interpolation, 2005. URL consultato il 03.06.2008.
  3. ^ Michael S. Floater, Kai Hormann, Barycentric rational interpolation with no poles and high rates of approximation. URL consultato il 03.06.2008.

Bibliografia[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

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