1、克劳特(Crout)(LU)分解法求解线性方程组
function [x,L,U]=Crout(A,b)
%Crout分解法求解线性方程组
%系数矩阵:A
N=size(A);
n=N(1);
L=zeros(n,n); %下三角矩阵
U=eye(n,n); %上三角矩阵
L(1:n,1)=A(1:n,1); %L的第一列
U(1,1:n)=A(1,1:n)/L(1,1); %U的第一行?
for k=2:n
for i=k:n
L(i,k)=A(i,k)-L(i,1:(k-1))*U(1:(k-1),k);
%L的第k列
end
for j=(k+1):n
U(k,j)=(A(k,j)-L(k,1:(k-1))*U(1:(k-1),j))/(L(k,k));
%U的第k行
end
end
%y=inv(L)*b;
%x=inv(U)*y;
y=SolveDownTriangle(L,b);
x=SolveUpTriangle(U,y); %求解线性方程组的解x
%x=U\(L\b);
function x=SolveUpTriangle(A,b)
%求解上三角矩阵Ax=b的解
N=size(A);
n=N(1);
for i=n:-1:1
if(is=A(i,(i+1):n)*x((i+1):n,1);
else
s=0;
end
x(i,1)=(b(i)-s)/A(i,i);
end
function x=SolveDownTriangle(A,b)
%求解下三角矩阵Ax=b的解
N=size(A);