I can`t solwe gauss elimination method

1 view (last 30 days)
alex us
alex us on 6 Oct 2021
Edited: Jan on 6 Oct 2021
function [ ret ] = EliminacjaGaussaWSEI()
format short
clc
clear
[A,b,n]=macierz;
m= wprzod (A,b,n);
m= eliminacja (m,n);
x= odwrotne(m,n);
disp(x)
endfunction
function [ A,b,n] = macierz ()
A=[ -3 6 -1 -2; -3 3 -3 1; -1.5 4.5 -2.5 -0.5; 0 1.5 -0.5 -3.5];
n=4;
b=[10; 16; 13; 17];
endfunction
function [ a] = eliminacja (a,n)
for k = 1: n-1
for i = k+1 : n
m(i,k)= a(i,k)/a(k,k);
for j = k:n+1
a(i,j)= a(i,j)-(m(i,k)*a(k,j));
end
end
end
endfunction
function [ A] = wprzod (A,b,n)
for c = 1 : n
A(c,n+1)=b(c);
end
endfunction
function [ x ] = odwrotne (m,n)
x(n)= m(n, n+1)/m(n,n);
for i=n-1:-1:1
acum = 0;
for p = i+1:n
acum = acum + (m(i,p)*x(p));
end
x(i)= (m(i, n + 1) - acum)/m(i, i);
end
endfunction

Accepted Answer

Jan
Jan on 6 Oct 2021
Edited: Jan on 6 Oct 2021
I've simplified the code and converted it from Octave to Matlab:
A = [ -3 6 -1 -2; -3 3 -3 1; -1.5 4.5 -2.5 -0.5; 0 1.5 -0.5 -3.5];
n = 4;
b = [10; 16; 13; 17];
m = [A, b];
m = eliminacja(m, n);
x = odwrotne(m, n);
disp(x)
-2.2963 -2.2407 -6.8889 -4.8333
A \ b
ans = 4×1
-2.2963 -2.2407 -6.8889 -4.8333
function a = eliminacja(a,n)
for k = 1:n-1
for i = k+1:n
m(i,k) = a(i,k)/a(k,k);
for j = k:n+1
a(i,j) = a(i,j)-(m(i,k)*a(k,j));
end
end
end
end
function x = odwrotne (m,n)
x(n) = m(n, n+1) / m(n,n);
for i = n-1:-1:1
acum = 0;
for p = i+1:n
acum = acum + (m(i, p) * x(p));
end
x(i)= (m(i, n + 1) - acum)/m(i, i);
end
end
It runs fine and replies the same output as A\b. So what do you consider as a problem? Maybe the missing definition of the output "rec"? Then replace:
function [ ret ] = EliminacjaGaussaWSEI()
by
function x = EliminacjaGaussaWSEI()

More Answers (0)

Categories

Find more on Numerical Integration and Differential Equations in Help Center and File Exchange

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!