www.gusucode.com > 高等数学问题求解源码程序 > CH10/LU_Equ.m

    function [x,L,U]=LU_Equ(A,b)
%LU_EQU   LU分解法求线性方程组的解
% X=LU_EQU(A,B)  LU分解法求线性方程组AX=B的解X
% [X,L,U]=LU_EQU(A,B)  LU分解法求线性方程组AX=B的解X,并返回分解后的上(下)三角矩阵
%
% 输入参数:
%     ---A:线性方程组的系数矩阵
%     ---B:线性方程组的右端项
% 输出参数:
%     ---X:线性方程组的解
%     ---L:分解后的下三角矩阵
%     ---U:分解后的上三角矩阵
%
% See also TriuEqu

[m,n]=size(A);
if m~=n || length(b)~=m
    error('线性方程组的系数矩阵和常数项维数不匹配.')
end
if isa([A,b(:)],'sym')
    U=sym(zeros(n));
    L=sym(eye(n));
else
    U=zeros(n);
    L=eye(n);
end
U(1,:)=A(1,:);
L(2:n,1)=A(2:n,1)/U(1,1);
for k=2:n
    U(k,k:n)=A(k,k:n)-L(k,1:k-1)*U(1:k-1,k:n);
    L(k+1:n,k)=A(k+1:n,k)-L(k+1:n,1:k-1)*U(1:k-1,k);
    L(k+1:n,k)=L(k+1:n,k)/U(k,k);
end
y=flipud(TriuEqu(rot90(L,2),flipud(b(:))));
x=TriuEqu(U,y);
web -broswer http://www.ilovematlab.cn/forum-221-1.html