Per risolvere in maniera efficiente questo problema facciamo le seguenti osservazioni:
Con la fattorizzazione , la matrice
viene fattorizzata in
due matrici:
che ha gli elementi della diagonale uguali a 1 e la
sottodiagonale memorizzata nel vettore
. La diagonale
della matrice D è il vettore
.
Svolgendo formalmente il prodotto si ottiene la matrice
Dalla (3.7) si ricava l'algoritmo per ricavare i vettori
ed
.
Questo algoritmo viene seguito nella procedura solveTrid per
calcolare la fattorizzazione in questo caso particolare.
Successivamente la procedura risolve il sistema
risolvendo tre sistemi successivi
La procedura per calcolare i valori assunti da una spline cubica
consiste nel calcolo del vettore delle differenze tra due ascisse
di interpolazione successive, quindi dei vettori che descrivono la matrice dei
coefficienti
e del vettore dei termini noti
. Si richiama
quindi la procedura solveTrid per la risoluzione del sistema
tridiagonale e si usa l'espressione (3.5) per calcolare i
valori di
nell'intervallo di tabulazione.
Nei grafici delle figure 3.11-3.13 è
illustrato il comportamento dell'interpolazione mediante
spline cubiche naturali della funzione di Runge
.
L'interpolazione mediante spline dà in questo caso risultati molto buoni, migliori anche dell'interpolazione polinomiale con ascisse di Cebyshev.
In questo caso la scelta delle ascisse di interpolazione a distanza costante è quella ottimale, perché con questa scelta viene sicuramente soddisfatto il seguente requisito di quasi uniformità che garantisce l'accuratezza della soluzione
Questo algoritmo può quindi essere migliorato considerando
che le ascisse siano sempre a distanza costante (cioè
) ed evitando in questo
modo alcuni calcoli.
La procedura solveTridCost risolve un sistema tridiagonale del tipo
La procedura splinecubnatCost.m interpola una funzione con una
spline cubica naturale calcolata su una partizione di ascisse
equidistanti su
.
![]() |
![]() |
2004-05-29