Interpolazione con funzioni spline cubiche ( di Massimo Fantin)

Introduzione

Grafico dinamico

Istruzioni per l'uso del grafico

Introduzione

Dati n punti (x1,y1), (x2,y2)... (xn+1,yn+1) di ascisse distinte, vogliamo trovare una funzione continua derivabile con derivate prima e seconda continue e il cui grafico passi per tutti i punti. Per trovare una funzione di questo tipo si può ricercare in tanti modi , per esempio cercando il polinomio di grado n passante per tutti i punti (metodo di Lagrange) tuttavia, così facendo si ottiene una funzione che, all'aumentare del numero di punti interpolanti diventa instabile. Le funzioni spline invece hanno la proprietà di convergere all'aumentare del numero di punti interpolanti.

Le Spline cubiche congiungono ciascun punto con il successivo e si raccordano fortemente fra loro ( coincidono le derivate prime e seconde)

Per determinare i coefficienti delle n spline cubiche interpolanti n+1 punti si scrive e risolve un sistema di 4n equazioni in altrettante incognite (4 sono i coefficienti di ciascuna cubica, le cubiche sono n) le 4n equazioni si determinano in questo modo:

Ciascuna cubica deve passare per i due punti estremi (2n condizioni)

Nei punti intermedi (n-1 punti) devono essere uguali le derivate prime e seconde delle cubiche adiacenti (2(n-1) condizioni).

Rimangono due condizioni che vengono espresse imponendo l'annullarsi delle derivate seconde delle spline estreme.

A titolo di esempio ho scritto la matrice completa del sistema risolvente il problema nel caso in cui i punti da interpolare siano 5 e si debbano pertanto determinare 4 cubiche interpolanti per un totale di sedici coefficienti.

La prima e l'ultima riga rappresentano le ultime due condizioni indicate precedentemente (derivate seconde nulle negli estremi)

La seconda riga esprime la condizione di appartenenza del primo punto alla prima funzione,

La seconda come sopra per il secondo punto

La terza e la quarta riga esprimono l'uguaglianza delle derivate prime e seconde nel secondo punto

La sesta riga esprime la condizione di appartenenza del punto x2 alla seconda spline e così via.

Si nota che le prime quattro incognite rappresentano i coefficienti della prima spline, le seconde quattro della seconda eccetera.

Le celle rimaste vuote contengono evidentemente degli zeri. 

0

0

2

2 x1

0

1

x1

x12

x13

Y1

1

x2

x22

x22

Y2

0

1

2 x2

3 x22

0

-1

-2 x2

-3 x22

0

0

0

2

6 x2

0

0

-2

-6 x2

0

1

x2

x22

x23

Y2

1

x3

x32

x32

Y3

0

1

2 x3

3 x32

0

-1

-2 x3

-3 x32

0

0

0

2

6 x3

0

0

-2

-6 x3

0

1

x3

x32

x33

Y3

1

x4

x42

x42

Y4

0

1

2 x4

3 x42

0

-1

-2 x4

-3 x42

0

0

0

2

6 x4

0

0

-2

-6 x4

0

1

x4

x42

x43

Y4

1

x5

x52

x52

Y5

0

0

2

6 x5

0

Questo sistema può essere risolto con un metodo di triangolazione tuttavia osservando che la matrice incompleta è già quasi triangolata è possibile facilitare il compito limitandosi solo ( una volta trovato il pivot per colonna ) ai soli termini non nulli.

Istruzioni per l'uso della simulazione:

L'uso è molto semplice: inizialmente vengono rappresentati due punti e la spline interpolante che evidentemente è rappresentata dalla retta per i due punti ( condizioni di appartenenza e di derivate seconde nulle ( due punti di flesso in una cubica))

Per aggiungere punti si usano i tasti in basso e per modificarne la posizione si trascinano con il mouse ( attenzione a mantenerne l'ordine )Durante il trascinamento vengono scritte le coordinate del punto e le equazioni delle cubiche ad esso adiacenti.