1. 程式人生 > >矩陣的LU分解

矩陣的LU分解

logs 失敗 pre abs err matrix 指標 span log

矩陣的LU分解
function
[x,L,U,index]=LU_Factorization(A,b) tic %A為要分解的矩陣 %b為方程組的右端常數項 %x為方程組的解 %L為單位下三角陣 %U為上三角陣 %index為指標變量,index=0表示計算失敗,index=1表示計算成功 [n,m]=size(A); nb=length(b); %當方程行與列的維數不相等時,停止計算,並輸出出錯信息 if n~=m error(the rows and columns of matrix A must be equal‘); return; end %當方程組與右端項的維數不匹配時,停止計算,並輸出出錯信息
if m~=nb error(the columns of A must be equal the length of b‘); return; end L=eye(n);U=zeros(n);index=1;x=zeros(n,1);y=zeros(n,1); %矩陣的三角分解過程 for k=1:n for j=k:n z=0; for q=1:k-1 z=z+L(k,q)*U(q,j); end U(k,j)=A(k,j)-z; end if abs(U(k,k))<1e-16
index=0;return; end for i=k+1:n z=0; for q=1:k-1 z=z+L(i,q)*U(q,k); end L(i,k)=(A(i,k)-z)/U(k,k); end end %求解兩個三角方程組的過程 y(1)=b(1); for k=2:n z=0; for j=1:k-1 z=z+L(k,j)*y(j); end y(k)=b(k)-z; end x(n)=y(n)/U(n,n); for
k=n-1:-1:1 z=0; for j=k+1:n z=z+U(k,j)*x(j); end x(k)=(y(k)-z)/U(k,k); end toc

矩陣的LU分解