lu函数厂商代码
1 function [L,U,x]=lux(A,b)
2 %LU 分解法解线性方程组(列主元LU分解)
3 [n,n]=size(A);
4 p=eye(n);%p记录了选择主元时候所进行的行变换
5 for k=1:n-1
6 [r,m]=max(abs(A(k:n,k))); %选列主元
7 m=m+k-1;
8 if(A(m,k)~=0)
9 if(m~=k)
10 A([k m],:)=A([m k],:);
11 p([k m])=p([m k]);
12 end
13 for i=k+1:n
14 A(i,k)=A(i,k)/A(k,k);
15 j=k+1:n; A(i,j)=A(i,j)-A(i,k)*A(k,j);
16 end
17 end
18 end
19 L=tril(A,-1)+eye(n,n);
20 U=triu(A);
21 %解下三角矩阵 Ly=b
22 newb=p*b;
23 y=zeros(n,1);
24 for k=1:n
25 j=1:k-1;
26 y(k)=(newb(k)-L(k,j)*y(j))/L(k,k);
27 end
28 %解上三角方程组 Ux=y
29 x=zeros(n,1);
30 for k=n:-1:1
31 j=k+1:n;
32 x(k)=(y(k)-U(k,j)*x(j))/U(k,k);
33 end