Matlab:高斯消元函数

3
function x = Gauss_Elimination(A,b)

n = length(b);
x = zeros(n,1);

% Forward Elimination
for i = 1:n-1 

    for j = i+1:n

        mul = A(j,i)/A(i,i); % Multiplier

        for k = i+1:n

            A(j,k) = A(j,k) - mul*A(i,k);

        end

        b(j) = b(j) - mul*b(i);

    end

end

x(n) = b(n)/A(n,n); % Obtain solution for the last variable

% Back Substitution
for i = n-1:-1:1

    sum = b(i);

    for j = i+1:n

        sum = sum - A(i,j)*x(j);

    end

    x(i) = sum/A(i,i);

end

当我使用这个函数时,x=[NAN;NAN;NAN;NAN]。能有人告诉我原因吗?
当 A=[0 1 1 1;3 0 3 -4;1 1 1 2;2 3 1 3]; b=[0;7;6;6]; x=[4;-3;1;2] 时。
2个回答

1

尝试使用断点来查看每次迭代中变量的值。 问题出在变量“mul”上,你正在除以某事物/0->无限大。这就是为什么你会得到那些结果。如果你设置

A=[2 1 1 1;3 4 3 -4;1 1 1 2;2 3 1 3]; b=[0;7;6;6]

你将得到答案: ans =

-4.7273     1.7273     6.4545     1.2727

希望它能有所帮助。


谢谢,先生。您给了我很大的帮助。 - Jeremy_Tamu

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接