-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gauss_Jordan.m
49 lines (40 loc) · 903 Bytes
/
Gauss_Jordan.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
% Implementação do Método de Newthon-Raphson
% Autor: William Henrique (william.martins@ee.ufcg.edu.br)
%
% @[in] X, matrix de coeficientes
% @[in] y, vetor de soluções
%
% @[out] ry, entradas do sistema
%%
function ry = Gauss_Jordan(X, y)
[p, q] = size(X)
[n, m] = size(y)
% verifica se as dimensões são válidas
if p != n || p != q
return;
endif
for k=1:p % alterna entre as linhas de pivoteamento
pivo = X(k, k);
if pivo == 0 % evita divisões por zero
if k >= p
break
else
k = k + 1;
endif
endif
l = X(k, :);
for i=1:p % itera as linhas da matrix
m = X(i, k) / pivo;
if k != i
X(i, :) = X(i, :) - m*l;
y(i) = y(i) - m*y(k);
endif
endfor
endfor
for n=1:p % transforma a matrix dos coeficiente em uma matrix diagonal unitária
pivo = X(n, n);
X(n, n) = X(n, n) / pivo;
y(n) = y(n) / pivo;
endfor
ry = y;
endfunction;