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