求Matlab 用杜利特尔分解方法解方程组的程序(附注释)

求Matlab 用杜利特尔分解方法解方程组的程序(附注释) 十万火急 ,膜拜各位高手

function [l,u,x,y]=doolittle(a,b)
n=length(a);     %计算A矩阵的维数
for i=1:n        %判断A矩阵的顺序主子式是否为非零
    w=det(a(1:i,1:i));
    if(w==0)
        error('Matrix must be positive!');
        return;
    end
end
u(1,1:n)=a(1,1:n);     %计算u的第一行元素
l(2:n,1)=a(2:n,1)/u(1,1);  %计算l的第一列元素
for i=1:n              %计算l的对角元素
    l(i,i)=1;
end
for k=2:n
    for j=k:n 
        sum=0;
        for s=1:(k-1)
            sum=sum+l(k,s)*u(s,j);
        end
        u(k,j)=a(k,j)-sum;    %计算u的其余元素
    end
    for i=(k+1):n
        sum=0;
        for s=1:(k-1)
            sum=sum+l(i,s)*u(s,k);
        end
        l(i,k)=(a(i,k)-sum)/u(k,k);    %计算l的其余元素
    end
end
y(1,1)=b(1);      %计算y的第一个元素
for i=2:n
    sumy=0;
    for j=1:i-1
        sumy=sumy+l(i,j)*y(j,1);
    end
    y(i,1)=b(i)-sumy;     %计算y的其余元素
end
x(n,1)=y(n,1)/u(n,n);     %计算x的最后一个元素
for i=(n-1):(-1):1
    sumx=0;
    for j=i+1:n
        sumx=sumx+u(i,j)*x(j,1);
    end
    x(i,1)=(y(i,1)-sumx)/u(i,i);    %计算x的其余元素
end

温馨提示:答案为网友推荐,仅供参考