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]。
有人告诉我原因???
答案 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版本