矩阵的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
时间: 2024-11-10 04:26:57