[x,A]=simpleLU(A,b) -
Data la matrice A tale che
ed il vettore b, fattorizza
la matrice A nel prodotto LU, con L matrice triangolare inferiore
con diagonale composta da tutti 1 ed U matrice triangolare
superiore. Restituisce in x la soluzione del sistema
e memorizza nella parte triangolare superiore di A
la parte significativa di U, nella parte inferiore esclusa la
diagonale invece inserisce la parte significativa (senza la diagonale)
della matrice L.
%SIMPLELU %[x,LU]=SIMPLELU(A,b) %Pre: A matrice n x n tale che tutti i suoi minori principali % sono non singolari, % b vettore di lunghezza n % % La funzione risolve il sistema lineare di n equazioni in n % incognite % Ax=b con il metodo della fattorizzazione LU. % Restituisce: % - in x la soluzione del sistema, % - in LU una matirce che contiene nella parte triangolare % superiore la matrice U % e nella parte strettamente % triangolare inferiore gli elementi significativi % della matrice L (in pratica L è una matrice che ha la % parte strettamente triangolare % inferiore uguale ad LU % e tutti 1 sulla diagonale principale). % Le matrici L,U sono tali che A=L*U % % See also PLU, QRHOUSE function [x,A]=simpleLU(A,b) n=length(b); for i=1:n-1 for j=i+1:n if A(i,i)==0 error('Matrice non fattorizzabile LU') end A(j,i)=A(j,i)/A(i,i); A(j,i+1:n)=A(j,i+1:n)-A(j,i)*A(i,i+1:n); end; end; L=tril(A,-1)+eye(n); U=triu(A); y=solveL(L,b); x=solveU(U,y); return
>> A A = 1 2 3 4 5 6 7 8 9 10 32 354 65 78 98 54 >> b b = 1 2 54 7 >> inv(A)*b ans = -1.20731707317073 2.38414634146343 -1.14634146341463 0.21951219512195 >> simpleLU(A,b) ans = -1.20731707317073 2.38414634146341 -1.14634146341463 0.21951219512195