Risoluzione di un sistema tridiagonale
A cura degli studenti
Ivano Consiglio, Lucio Cardellicchio, Vincenzo Carletti
Scopo
Risoluzione di un sistema di equazioni avente come matrice caratteristica una matrice tridiagonale.
Specifiche e parametri
x = tridsys(d,a,f,b)
| Parametro | Tipo | Input/output | Descrizione |
|---|---|---|---|
| a | Vettore | Input | Diagonale inferiore |
| d | Vettore | Input | Diagonale principale |
| f | Vettore | Input | Diagonale superiore |
| b | Vettore | Input | Termini noti del sistema |
| x | Vettore | Output | Soluzioni del sistema |
Routine ausiliarie
Non sono state inserite routine ausiliarie.
Descrizione
La funzione risolve un sistema lineare caratterizzato da una matrice associata di tipo tridiagonale. La soluzione del sistema è generata mediante l'utilizzo della fattorizzazione LU adattata a matrici tridiagonali.
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 ad S(n)=O(n).
Indicatori di errore
La routine esegue prioritariamente un controllo sui parametri inseriti, ed avverte l'utente in caso di un inserimento errato dei dati. Un successivo controllo viene effettuato sulla dominanza della diagonale principale sulla dimensione delle altre due. È presente un controllo sulla diagonale principale per evitare l'inserimento di eventuali elementi nulli che possono compromettere il corretto comportamento della routine.
- Errori dovuti ad uno scorretto inserimento dei parametri in ingresso:
- Mancato inserimento di uno o più parametri
- Inserimento di una errata tipologia di parametri, come vettori alfanumerici
- Errori dovuti alla coerenza delle dimensioni dei vettori:
- Dimensioni di a, f sono diverse tra loro.
- Dimensioni di a, f maggiori o uguali a d
- Dimensioni di b diverse da d
- Errori dovuti alla diagonale principale:
- Presenza di elementi nulli in d
- Non dominanza della diagonale d
Testo della funzione
function x=tridsys(d,a,f,b)
%Controllo Sui Parametri Inseriti
if nargin==3
error('Hai dimenticati di inserire il vettore con i termini noti')
elseif nargin<3
error('Devi Inserire tutti e tre i vettori delle diagonali')
end
n=length(d);
%Controllo sull'inserimento di elementi alfanumerici
vettin=[d a f b];
if ischar(vettin)
error('Non si possono inserire dei caratteri nei vettori')
end
%Controllo Sulla Coerenza delle Diagonali
if length(a)~=(n-1)
error('Errore di Coerenza delle Diagonali: Dimensione Diagonale Inferiore Errata')
elseif length(f)~=(n-1)