Anteprima
Vedrai una selezione di 1 pagina su 3
Disdici quando
vuoi
vuoi
Acquista con carta
o PayPal
o PayPal
Scarica i documenti
tutte le volte che vuoi
tutte le volte che vuoi
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
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.