Interpolazione spline
# Interpolazione spline

L'interpolazione spline è un particolare metodo di interpolazione basato sulle funzioni spline. Si tratta di uno strumento dell'analisi numerica utilizzato in molti campi applicativi (ad esempio in fisica o statistica). A differenza dell'interpolazione polinomiale, che utilizza un unico polinomio per approssimare la funzione su tutto l'intervallo di definizione, l'interpolazione spline è ottenuta suddividendo l'intervallo in più sotto-intervalli $(I_k=[x_k,x_{k+1}]$ con k=1,...,N-1) e scegliendo per ciascuno di essi un polinomio di grado d (di solito piccolo). Verrà poi imposto che due polinomi successivi si saldino in modo liscio, cioè osservando la continuità delle prime d-1 derivate. La funzione che si ottiene con un procedimento di questo genere si chiama funzione spline. L'interpolazione lineare, che utilizza una funzione lineare, ossia un polinomio di grado 1, su ogni sotto-intervallo può essere considerata un caso particolare di interpolazione spline.

## Esempio

Di una funzione di variabile reale f nota in altra sede, si supponga di conoscere i valori che tale funzione assume solo in un insieme di N punti. Si indichino con $x_k,$ k = 1, ... N i nodi nei quali sono noti i valori della funzione f. In ognuno dei nodi la funzione assumerà valore $f(x_k).$

Presentiamo qui un esempio. In particolare si abbiano i punti dati dalla seguente tabella:

| xf(x) 0 0 1 0,8415 2 0,9093 3 0,1411 4 −0,7568 5 −0,9589 6 −0,2794 | Diagramma dei punti dati |
| - | - |

Nel nostro caso N=7; $x_1=0,x_2=1,...,x_7=6.$

Un esempio di funzione spline è la spline naturale cubica. Questa funzione spline è a tratti una cubica e due volte differenziabile nell'intero intervallo. Inoltre, la relativa derivata seconda è zero nei punti estremi. In ogni intervallo $I_k$ la funzione assume la forma:

    $f(x)=a_{k}x^{3}+b_{k}x^{2}+c_{k}x+d_{k},\ x\in I_{k}$

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

Se per ogni nodo $x_{k}$ è nota non solo $f(x_{k})$, ma anche $f'(x_{k})$, è possibile costruire una funzione spline che è di classe $C^{1}[x_{1},x_{N}]$, cioè una funzione che nell'intervallo $[:x_{1},x_{N}]$ è continua, derivabile con derivata prima continua.

Consideriamo la funzione nota per punti introdotta nella tabella precedente. Se si suppone che in ogni punto $x_{k},k=1,...N$ tale che $f'(x_{k})=0$, in ogni intervallo $I_{k}$ la funzione $f(I_{k})$ deve soddisfare 4 condizioni:

    $a_{k}x_{k}^{3}+b_{k}x_{k}^{2}+c_{k}x_{k}+d_{k}=f(x_{k})$
    $a_{k}x_{k+1}^{3}+b_{k}x_{k+1}^{2}+c_{k}x_{k+1}+d_{k}=f(x_{k+1})$
    $3a_{k}x_{k}^{2}+2b_{k}x_{k}+c_{k}=0$
    $3a_{k}x_{k+1}^{2}+2b_{k}x_{k+1}+c_{k}=0$

In tal modo possiamo ottenere un sistema lineare $Ax=b$ di quattro equazioni in 4 incognite così definito:

    matrice dei coefficienti:
    $A=\left[{\begin{matrix}x_{k}^{3}&x_{k}^{2}&x_{k}&1\\x_{k+1}^{3}&x_{k+1}^{2}&x_{k+1}&1\\3x_{k}^{2}&2x_{k}&1&0\\3x_{k+1}^{2}&2x_{k+1}&1&0\\\end{matrix}}\right]$
    vettore dei termini noti:
    $b=\left[{\begin{matrix}f(x_{k})\\f(x_{k+1})\\0\\0\end{matrix}}\right]$
    vettore delle incognite:
    $x=\left[{\begin{matrix}a(k)\\b(k)\\c(k)\\d(k)\end{matrix}}\right].$

## Proprietà

La funzione interpolante ottenuta con la interpolazione spline è più liscia di quelle ottenute con altri metodi (ad esempio con l'interpolazione polinomiale), nel senso che è la funzione interpolante con curvatura media minima.

Inoltre, l'interpolante spline risulta più facile da valutare dei polinomi di grado elevato richiesti dalla interpolazione polinomiale e non soffre del fenomeno di Runge.

Tuttavia, se i dati da interpolare hanno conformazioni particolari (ad esempio formano dei gradini), la spline interpolante può essere soggetta al fenomeno di Gibbs, ampie oscillazioni in vicinanza di un gradino. Per ovviare a questo problema vengono utilizzate le smoothing spline o le tension spline.

| Interpolazione spline dei punti dell'esempio precedente | Interpolazione con spline lineare e cubica di un "gradino" - Fenomeno di Gibbs |
| - | - |

## Storia e interpretazione fisica

Originariamente le spline (in italiano "flessibili") erano degli strumenti da disegno formati da lunghe fettucce elastiche tenute ferme nei punti di interpolazione da dei grossi pesi. Il significato originale della parola inglese spline è appunto striscia di legno o metallo.

Nell'immagine accanto sono visibili alcuni di questi pesi e l'uso che se ne faceva negli anni '30 presso l'IAC.

Tra due pesi, ossia tra due punti di interpolazione, la fettuccia può essere modellizzata con una equazione dell'elasticità semplificata:

    $\ f''''(x)=0$

e quindi assume la forma di un polinomio di terzo grado. Alle estremità, non avendo costrizioni, la fettuccia esce in modo rettilineo: derivata seconda nulla. Questo spiega l'uso dell'aggettivo naturale per indicare le spline cubiche e questo tipo di condizione nei punti estremi dell'intervallo.

Globalmente la fettuccia si dispone in modo da minimizzare l'energia elastica:

    $\left(\int \left|f''(x)\right|^{2}\,dx\right)^{1/2}$

il che può essere interpretato geometricamente dicendo che minimizza la curvatura media.

Le tension spline corrispondono alla possibilità di tirare le estremità della fettuccia per ridurre le oscillazioni.

Le smoothing spline corrispondono alla possibilità di non vincolare strettamente la fettuccia a passare per i punti di interpolazione, ma permettere un aggiustamento regolato dal gancio posto all'estremità del peso.

