Estratto del documento
Funzione factorpivot.m
function [A,x,flag,detA]=factorpivot(A,b);
if nargin==0 %Se i parametri di ingresso sono inesistenti, segnala l'errore
error('ERRORE! Non hai inserito alcun parametro in ingresso.');
end
if nargin==1 %Se b non è stato inserito, segnala l'errore
error('ERRORE! Non hai inserito il vettore b.');
end
flag=0; %Creazione di flag
detA=1; %Creazione di detA
epsmac=eps*norm(A); %Creazione dell'epsilon macchina
if (ischar(A)==1||length(A)==1) %Se A è un carattere o uno scalare, segnala l'errore
error('ERRORE! Matrice A non valida.');
end
[n,m]=size(A); %Ricerca delle dimensioni di A
if n~=m %Se A non è quadrata, segnala l'errore
error('ERRORE! Matrice A non quadrata.');
end
[nb,mb]=size(b); %Ricerca delle dimensioni di b
if (nb~=n || mb~=1 || ischar(b)==1) %Se b non ha dimensioni valide o è un carattere, segnala l'errore
error('ERRORE! Vettore b non idoneo.');
end
%Creazione del
vettore degli indici di accesso alle righe di Apivind=1:n;%Fattorizzazione LU con pivoting parziale
for k=1:n-1
[pivot,i]=max(abs(A(pivind(k:n),k))); %Ricerca del pivot e dell'indice di posizione
i=i+k-1;
if i~=k %Se i è diverso da k, moltiplica detA per -1 e fai lo scambio degli indici delle righe
detA=detA*-1;
pivind([k i])=pivind([i,k]);
endif
if abs(A(pivind(k),k))<=epsmac %Se il pivot è nullo, cambia flag e segnala l'errore
flag=1;
error('ERRORE! Matrice singolare.');
end
Anteprima
Vedrai una selezione di 1 pagina su 3
Dettagli
SSD
Scienze matematiche e informatiche
INF/01 Informatica
I contenuti di questa pagina costituiscono rielaborazioni personali del
Publisher cecilialll di informazioni
apprese con la frequenza delle lezioni
di Calcolo numerico e studio autonomo di eventuali libri di riferimento in preparazione
dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale
dell'università Università degli studi di Napoli Federico II o del prof D'Alessio Alessandra.