I can`t solwe gauss elimination method
1 view (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
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)
A \ b
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()
0 Comments
More Answers (0)
See Also
Categories
Find more on Numerical Integration and Differential Equations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!