Matlab:高斯消除函数

时间:2014-09-16 21:31:50

标签: matlab

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

当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]

然而,当我利用这个功能时,x = [NAN; NAN; NAN; NAN]。

有人告诉我原因???

2 个答案:

答案 0 :(得分: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

希望它有所帮助。

答案 1 :(得分:0)

您可以在此处下载此代码

https://github.com/pavdpr/matlab-latex/blob/master/RRE.m

它进行高斯消除,然后将其写入LaTex。你可以将写作剥离到Latex,然后看一下预先形成消除的代码。

如果你想要它的相同代码的python版本

https://github.com/Maggick-/RRE2LaTeX/blob/master/RRE.py

相关问题