Spline cubica naturale interpolante
Scopo
Effettuare l'interpolazione polinomiale mediante spline cubica naturale.
Specifiche e Parametri
s=splin(x,y,space)
| Parametro | Tipo | Input/output | Descrizione |
|---|---|---|---|
| x | Vettore | Input | Ascisse dei nodi |
| y | Vettore | Input | Ordinate dei nodi |
| space | Vettore | Input | Insieme di definizione (Opzionale) |
| s | Vettore | Output | Punti di interpolazione |
Routine Ausiliarie
È stata utilizzata la routine x=tridsys(d,a,f,b).
Descrizione
La funzione valuta la spline nei punti compresi nell'insieme di definizione. Opera mediante la costruzione di una matrice A e del vettore dei termini noti tn. Il sistema tridiagonale A*j=tn, nel quale der2 rappresenta le derivate seconde nei nodi, viene risolto mediante l'algoritmo di Gauss per matrici tridiagonali. Infine, tramite un algoritmo di ricerca binaria, vengono calcolati i coefficienti del polinomio rappresentante la spline. Sono state rese nulle le condizioni di contorno per poter ottenere una spline naturale interpolante.
Complessità ed Accuratezza
L'accuratezza dipende dalla macchina su cui viene eseguito l'algoritmo. La complessità di tempo è pari a T(n)=O(n). Per quanto riguarda la complessità di spazio è pari a S(n)=O(n).
Indicatori di Errore
La funzione esegue prioritariamente un controllo sui parametri inseriti, ed avverte l'utente in caso di un inserimento errato dei dati. Nel caso avvenga il mancato inserimento dell'intervallo, la funzione provvederà a generarne uno automaticamente prendendo come estremi il valore minimo ed il valore massimo delle ascisse.
- Errore dovuto alla coerenza delle dimensioni dei vettori: Dimensioni di x, y diverse tra loro.
- Errori di inserimento dei nodi: Numero di nodi inseriti minore di 4.
- L'intervallo di valutazione della funzione si estende oltre gli estremi dettati dai nodi.
- Inserimento di nodi coincidenti.
Testo della Funzione
function s=splin(x,y,space)
%Controllo dei parametri inseriti
if nargin < 2
error('Hai dimenticato di Inserire le coordinate dei nodi')
end
%Controllo sui nodi inseriti
alfa=[x y];
if length(x)<4 %Numero di nodi
error('I nodi inseriti sono troppo pochi per poter valutare la funzione')
elseif length(x)~=length(y) %Coerenza nella dimensione dei vettori
error('L''ascissa e l''ordinata devono avere lo stesso numero di elementi')
elseif ischar(alfa) %Inserimento di elementi alfanumerici
error('Non si possono inserire dei caratteri nei vettori')
end
%Controllo sull'intervallo
if exist('space')==0
space = linspace(min(x),max(x));
elseif ischar(space) %Presenza di Caratteri
error('Non si possono inserire dei caratteri nei vettori')
elseif (max(space)>max(x))|(min(space)<min(x)) %Coerenza del dominio
... % Continuazione del controllo
end
-
Calcolo Numerico – Spline
-
Statistica bivariata - tabella di contingenza, retta di regressione, retta interpolante
-
Terzo parziale, Statistica descrittiva
-
Script di Analisi numerica