Funzione factorpivot.m
La funzione factorpivot ha lo scopo di eseguire la fattorizzazione LU con pivoting parziale su una matrice quadrata. Il codice riportato di seguito descrive i vari passaggi per effettuare questa operazione.
Errori di input
Il codice verifica inizialmente se i parametri di ingresso sono corretti:
- Se i parametri di ingresso sono inesistenti, segnala l'errore:
error('ERRORE! Non hai inserito alcun parametro in ingresso.'); - Se il vettore b non è stato inserito, segnala l'errore:
error('ERRORE! Non hai inserito il vettore b.');
Inizializzazione dei valori
Il codice procede con l'inizializzazione di alcuni valori importanti:
- flag viene inizializzato a 0.
- detA viene inizializzato a 1.
- epsmac è calcolato come il prodotto di
epse la norma di A.
Controlli sulla matrice A
Il codice controlla se la matrice A è valida:
- Se A è un carattere o uno scalare, segnala l'errore:
error('ERRORE! Matrice A non valida.'); - Se A non è quadrata, segnala l'errore:
error('ERRORE! Matrice A non quadrata.');
Controlli sul vettore b
Il codice effettua controlli anche sul vettore b:
- Se b non ha dimensioni valide o è un carattere, segnala l'errore:
error('ERRORE! Vettore b non idoneo.');
Fattorizzazione LU con pivoting parziale
Il processo di fattorizzazione LU con pivoting parziale avviene attraverso un ciclo:
- Viene ricercato il pivot e l'indice della sua posizione attraverso
[pivot,i]=max(abs(A(pivind(k:n),k))). - Se i è diverso da k, il determinante detA viene moltiplicato per -1 e gli indici delle righe vengono scambiati.
- Se il pivot è nullo, il flag viene impostato a 1 e segnala l'errore:
error('ERRORE! Matrice singolare.');