Pagina 1 di 2

Interpolazione Spline Cubica

MessaggioInviato: 29/02/2012, 11:53
da Enrico
Inizio la trattazione di un argomento che spero possa essere di interesse pubblico; dell'interpolazione ne ha già parlato magistralmente Mauro evidenziando la conoscenza e la padronanza della materia di cui stava parlando.
Io, con questa trattazione, voglio solo dare uno strumento aggiuntivo, cercando di ridurre al minimo la matematica, in prima istanza perchè non sono così bravo come Mauro ed in seconda istanza per arrivare velocemente all'obiettivo finale; alla fine della trattazione infatti allegherò un file Excel che illustrerà come usare l'interpolazione Spline per calcolare lo skew (o smile) di volatilità.

Re: Interpolazione Spline Cubica

MessaggioInviato: 29/02/2012, 11:57
da Enrico
L’interpolazione polinomiale ha diversi vantaggi, primo tra tutti la facilità di calcolo. Tuttavia presenta alcuni difetti, il principale dei quali è rappresentato dal fatto che all’aumentare del grado n del polinomio interpolante si presentano solitamente delle forti oscillazioni. Questo rende alcune volte l’interpolazione polinomiale inacettabile.

Per ovviare al problema accennato si puo' pensare di interpolare la funzione f(x) utilizzando dei polinomi di grado basso, pertanto poco oscillanti, ma solo in opportuni sottointervalli, cioè utilizzando le funzioni cosiddette polinomiali a tratti, tra le quali le piu' comunemente utilizzate sono le funzioni SPLINE.

Re: Interpolazione Spline Cubica

MessaggioInviato: 29/02/2012, 12:11
da Enrico
Le spline sono particolari curve polinomiali a tratti, costituite da archi di curva che si succedono in sequenza, la cui espressione analitica si ottiene imponendo una serie di condizioni di continuità .

Il primo caso è quello delle splines di grado 1, cioè funzioni che in ogni intervallo [x_i, x_{i+1}]
(per i = 0, . . . ,N −1) sono polinomi di grado m = 1 e globalmente funzioni di classe C_{m-1} = C_0, cioè continue.

Re: Interpolazione Spline Cubica

MessaggioInviato: 29/02/2012, 12:37
da Enrico
Un esempio notevole è quello delle splines cubiche s3, cioè funzioni che in ogni intervallo [x_i, x_{i+1}] (per i = 0, . . . ,N −1) siano polinomi di grado m = 3 e globalmente funzioni di classe C_{m-1} = C_2, quindi con stessa tangente e curvatura.

Re: Interpolazione Spline Cubica

MessaggioInviato: 29/02/2012, 12:47
da Enrico
Più esplicitamente: nei punti di raccordo dei vari polinomi utilizzati per interpolare la curva, devono essere rispettate (come si vede bene dalla figura sopra inserita) delle condizioni di continuità, altrimenti la curva sarebbe composta da una serie di pezzi sconnessi tra di loro. Grazie a queste condizioni la curva ha un andamento continuo senza mostrare cuspidi o anomalie di nessun genere.

Re: Interpolazione Spline Cubica

MessaggioInviato: 29/02/2012, 16:03
da Mauro
Ottimo Enrico: ti seguo con vero e vivo interesse!
:13

Re: Interpolazione Spline Cubica

MessaggioInviato: 29/02/2012, 18:06
da Enrico
In programmazione le Spline possono inoltre sfruttare agevolmente formule di ricorrenza e, poichè sono costituite da tratti di polinomi, sono utilizzabili direttamente per calcolare derivate e integrali.
Le B-Spline, una variante delle Spline, offrono una serie di ulteriori vantaggi di carattere computazionale e sono particolarmente utili nei problemi di interpolazione in 2 o 3 dimensioni.

Analizziamo brevemente le caratteristiche generali delle Spline:
Come già detto, una funzione Spline è definita come un polinomio a tratti; il suo dominio è suddiviso in una serie di sottodomini, all’interno dei quali la funzione viene rappresentata da un polinomio di ordine n. Negli estremi di questi sottodomini, detti "nodi", vengono inoltre soddisfatte le condizioni di continuità della funzione e delle sue derivate di ordine n-1 e, come abbiamo visto, la funzione risulterà di classe C_2.

Re: Interpolazione Spline Cubica

MessaggioInviato: 29/02/2012, 18:48
da Enrico
Dimostrazione: Spline cubica

- s(x) è un polinomio di grado 3 su ogni sottointervallo [x_{k-1}, x_k], k = 1,...,n; indichiamo con s_k (x) il polinomio che rappresenta la spline su [x_{k-1}, x_k], k = 1,...,n;
- s(x) ; s' (x) ; s'' (x) continue su [x_0; x_n].

La spline è rappresentata su ognuno degli n sottointervalli da un polinomio di grado 3, identi cato quindi da 4 coefficienti. La
spline è completamente determinata se si conoscono i coefficienti di ciascun polinomio componente.

Grado 3
\begin{cases} s_k(x) = a_kx^3 + b_kx^2 + c_kx + d_k 
\\ k = 1,....,n
\\ \end{cases} 
\Rightarrow 
\text{4n gradi di Libertà}

Interpolazione
\begin{cases} 
 s(x_i) = y_i \\
 i = 0,....,n \\
\end{cases} 
\Rightarrow 
\text{n+1 condizioni}

Regolarità
\begin{cases}
 s_i(x_i) = s_{i+1}(x_i) \\
 s^\prime_i(x_i) = s^\prime_{i+1}(x_i) \\
 s^{\prime\prime}_i(x_i) = s^{\prime\prime}_{i+1}(x_i) \\
 i=1,....,n-1
\end{cases}
\Rightarrow 
\text{3(n-1) condizioni}

4n-(n + 1)-3(n - 1)=2 gradi di libertà

Re: Interpolazione Spline Cubica

MessaggioInviato: 29/02/2012, 19:51
da Enrico
Per determinare in modo univoco s (x) servono 2 condizioni aggiuntive che si ottengono imponendo le condizioni di spline
naturale:

s^{\prime\prime}_1(x_0) = s^{\prime\prime}_n (x_n) = 0

Imponendo le condizioni aggiuntive, si ottiene un sistema di 4n equazioni nelle 4n incognite {a_k, b_k, c_k, d_k} ; k = 1,...., n, che ammette una ed una sola soluzione.

Indichiamo con s_j (x) il pezzo di spline cubica sull'intervallo [x_{j-1}, x_j ], j = 1,...,n e con m_k il valore della derivata seconda della spline nei nodi x_k, k = 0,...,n.

m_k = s^{\prime\prime}(x_k), k = 0,...,n.

Per la continuità della derivata seconda nei nodi vale;

s^{\prime\prime}_{j-1}(x_j) = s^{\prime\prime}_j(x_j) = s^{\prime\prime}(x_j)

s_j(x) è un polinomio di terzo grado, quindi s^{\prime\prime}_j(x) è un polinomio di primo grado, una retta, passante per i punti

(x_{j-1}; s^{\prime\prime}_j (x_{j-1})), (x_j; s^{\prime\prime}_j (x_j)), cioè con la notazione introdotta (x_{j-1},m_{j-1}), (x_j, m_j)

L'espressione della derivata seconda sarà quindi:

s^{\prime\prime}_j(x)={m_j {(x_{j-1}-x) \over -h_j}+m_{j-1} {(x_j-x)\over h_j}}, \text{        } h_j = x_j -x_{j-1}.

Re: Interpolazione Spline Cubica

MessaggioInviato: 29/02/2012, 22:48
da Enrico
Integrando due volte si ottiene l'espressione di s_j (x), in termini di m_j , m_{j-1} che non sono noti:

s_j(x)=m_j{(x_j-x)^3 \over -6h_j}+m_{j-1}{(x_j-x)^3 \over 6hj}+C_j(x_{j-1}-x) +D_j(x_j-x).

Per determinare le costanti incognite C_j e D_j , si impongono le condizioni di interpolazione:

s_j(x_j) = y_j

sj (x_{j-1}) = y_{j-1}

da cui si ricava il sistema di due equazioni nelle due incognite C_j e D_j

m_j{h_j^2 \over 6}-C_jh_j=y_j

m_{j-1}{h_j^2 \over 6}+D_jh_j=y_{j-1}