无法在LU分解中找到我的代码错误

时间:2016-03-06 21:57:29

标签: matlab

我编写了这段代码来确定给定矩阵的l和u,但是当我计算l * u时,它的最后一列中的某些数组与给定的矩阵不同,它已经弄乱了我的想法......我感谢您帮助我的代码工作。

clear
clc
a=[0 3 -4 2;2 6 4 -3;-1 -1 2 3;3 0 0 -5];
c=[26;9;7;-19];
n=length(a);
for k=1:n;
    pivot=k;
    big=abs(a(k,k));
    for i=(k+1):n;
        if a(i,k)>big;
            big=a(i,k);
            pivot=i;
        end
    end
if pivot~=k;
    a([pivot,k],:)=a([k,pivot],:);
end
end
for i=1:n;
    l(i,1)=a(i,1);
end
for i=1:n;
    u(i,i)=1;
end
for j=2:n;
    u(1,j)=a(1,j)/l(1,1);
end
for j=2:(n-1);
    for i=j:n;
        sum=a(i,j);
        for k=1:(j-1);
        sum=sum-l(i,k)*u(k,j);
        end
        l(i,j)=sum;
    end
    for k=(j+1):n;
        sum1=a(j,k);
        for i=1:(j-1);
        sum1=sum1-l(j,i)*a(i,k);
        end
        u(j,k)=sum1/l(j,j);
    end
end
for j=1:n;
    sum2=a(j,j);
    for k=1:(n-1);
        sum2=sum2-l(j,k)*a(k,j);
    end
    l(j,j)=sum2;
end

enter image description here

0 个答案:

没有答案