# Interpolazione

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

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 che sia in grado di descrivere una relazione tra l'insieme degli $\,x_{k}$ e quello degli $\,y_{k}$, ovvero
    $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 definita, si scrivono $\,f_{k}$.

## Esempio

Si supponga di avere la seguente tabella, che dà alcuni valori di una funzione $\,f(x)$ che si può considerare nota in altra sede.
| $x$ | $f(x)$ |
| 0 | 0 |
| 1 | 0,8415 |
| 2 | 0,9093 |
| 3 | 0,1411 |
| 4 | -0,33 |
| 5 | -0,9589 |
| 6 | -0,2794 |
L'interpolazione consente di stabilire il valore di $\,f(x)$ per valori di $\,x$ compresi tra gli estremi dell'intervallo in esame ma che non sono tra quelli per cui $\,f(x)$ è noto, ad esempio per ${\overline {x}}=2{,}5$ .
Esistono molti metodi differenti di interpolazione; verranno di seguito descritti, 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 quesiti di linea generale:
* Quanto è esatto il metodo?
* Quanto è costoso computazionalmente il metodo?
* Quanto è buona la funzione interpolante?
* Quanti punti dati sono necessari per procedere?

## Interpolazione lineare

Uno dei metodi più semplici è l'interpolazione lineare. Si consideri di voler determinare $\,f(2.5)$ nell'esempio precedente. Poiché 2.5 è il punto medio fra 2 e 3, è ragionevole individuare $\,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, denotati $\,(x_{a},y_{a})$ e $\,(x_{b},y_{b})$, definisce come funzione interpolante nell'intervallo $\,[x_{a},x_{b}]$:
    $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 e porta ad ottenere una funzione non differenziabile nei punti $\,x_{k}$.
La seguente stima dell'errore indica la scarsa precisione dell'interpolazione lineare. 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 dell'interpolazione lineare è
    $|f(x)-g(x)|\leq C(x_{b}-x_{a})^{2}\quad {\mbox{dove}}\quad C={\frac {1}{8}}~\max _{y\in [x_{a},x_{b}]}~g''(y)$ .
Quindi, l'errore è proporzionale al quadrato della distanza fra i punti dati. Altri metodi, comprese l'interpolazione polinomiale e l'interpolazione spline, descritti di seguito, producono funzioni più lisce ed errori di interpolazione proporzionali a potenze superiori della distanza fra i punti dati, quindi sono preferibili.

## Interpolazione polinomiale

L'interpolazione polinomiale può considerarsi una generalizzazione dell'interpolazione lineare. Mentre l'interpolante lineare è una sequenza di funzioni lineari, nell'interpolazione polinomiale si cerca come interpolante un polinomio di un grado opportuno (grado che nel caso dell'interpolazione lineare sarebbe pari a 1).
Per il problema dato sopra si trova che il seguente polinomio di sesto grado passa attraverso tutti i sette punti:
$\,f(x)=-0.0001521x^{6}-0.003130x^{5}+0.07321x^{4}-0.3577x^{3}+0.2255x^{2}+0.9038x$ .
Assegnando $\,x=2.5$, troviamo che $\,f(2.5)=0.5965$.
In generale, quando si hanno 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. L'interpolante, inoltre, in quanto polinomio, è illimitatamente differenziabile. L'interpolazione polinomiale, quindi, evita tutte le difficoltà incontrate dalla interpolazione lineare.
Se si riprendono i 4 quesiti visti in precedenza, si vede che l'interpolazione polinomiale presenta alcuni svantaggi. Il calcolo del polinomio d'interpolazione è molto costoso in termini computazionali e 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, in particolare l'interpolazione spline.

## Interpolazione razionale

L'interpolazione razionale, simile a quella polinomiale, utilizza delle funzioni razionali ${R}(x)={\frac {P(x)}{Q(x)}}$. I più noti metodi di interpolazione razionale sono
* Bulirsch - Stoer, da non confondere con quello per le equazioni differenziali.
* Berrut, un miglioramento del precedente
* Hormann - Floater
Dei tre, l'ultimo non produce mai asintoti e garantisce un modesto errore anche con piccoli intervalli, anche con le funzioni che con i polinomi causano il fenomeno di 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 e 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

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, due volte differenziabile e presenta derivata seconda uguale a zero nei punti finali. La spline naturale cubica che interpola i punti nella tabella qui sopra è così definita
    $f(x)=\left\{{\begin{matrix}-0.1522x^{3}+0.9937x,&{\mbox{se }}x\in [0,1],\\-0.01258x^{3}-0.4189x^{2}+1.4126x-0.1396,&{\mbox{se }}x\in [1,2],\\0.1403x^{3}-1.3359x^{2}+3.2467x-1.3623,&{\mbox{se }}x\in [2,3],\\0.1579x^{3}-1.4945x^{2}+3.7225x-1.8381,&{\mbox{se }}x\in [3,4],\\0.05375x^{3}-0.2450x^{2}-1.2756x+4.8259,&{\mbox{se }}x\in [4,5],\\-0.1871x^{3}+3.3673x^{2}-19.3370x+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 a quella ottenuta con l'interpolazione lineare, presenta errori inferiori, è più liscia, risulta più facile da valutare e non soffre del fenomeno di Runge.

## Altre forme di interpolazione

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

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 si avvicini il più possibile ai 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.