Matlab: Gaussian elimination function

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

      

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

However, when I use this function, x = [NAN; NAN; NAN; NAN].

Has anyone told me the reason ???

+3


source to share


2 answers


Try using breakpoints to see the value of the variables at each iteration. The problem is with the variable "mul", you are dividing something / 0-> infinitely. This is why you are getting these results. If you installed

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

you get the answer: ans =



-4.7273 1.7273 6.4545 1.2727

Hope this helps.

+1


source


You can download this code here

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

It does a gaussian exception and then writes it to LaTex. you can cut the entry into latex and just look at the code that preforms the elimination.



And python version of the same code if you want it

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

0


source







All Articles