La función es la siguiente.
function x = gauss(A,b)
% Sistema A*x=b resuelto por Gauss
n = length(b);
x = zeros(n,1);
for j = 1:n-1 % fase de eliminación
for i = j+1:n
if A(i,j) != 0
lambda = A(i,j)/A(j,j);
A(i,j+1:n) = A(i,j+1:n) - lambda*A(j,j+1:n);
b(i)= b(i) - lambda*b(j);
end
end
end
for i = n:-1:1 %sustitución hacia atrás
x(i) = (b(i) - A(i,i+1:n)*x(i+1:n))/A(i,i);
end
end
Vamos a usar como ejemplo las siguientes matrices \(A\) y \(b\).
A=[1 -3 0;4 -2 2;-1 -4 4]
b=[-5;6;3]
\[ \left ( \begin{array}{rrr} 1 & -3 & 0 \\ 4 & -2 & 2 \\ -1 & -4 & 4 \end{array} \right ) \left ( \begin{array}{r} x \\ y \\ z \end{array} \right ) = \left ( \begin{array}{r} -5 \\ 6 \\ 3 \end{array} \right ) \]
Luego copiamos y pegamos en Octave la función anterior.
Finalmente ejecutamos la función, poniendo:
gauss(A,b)
Octave responde mostrando la solución del sistema que es:
\[x=1\] \[y=2\] \[z=3\]
Otro método
Determinemos el rango de la matriz \(A\).Vamos a construir la matriz ampliada del sistema de ecuaciones anterior. Llamémosla matriz \(G\).
G=[1 -3 0 -5;4 -2 2 6;-1 -4 4 3]
Para ver que se trata de un sistema compatible determinado con solución única vamos a calcular el rango de la matriz \(A\) y el rango de la ampliada que aquí hemos llamado matriz \(G\).
Vamos a efectuar una reducción por Gauss hasta llegar a una matriz triangular superior y triangular inferior, donde la última columna contenga la solución al sistema de ecuaciones.
La reducción gausiana se realiza con el comando siguiente.
- rref(G)
Observamos que la última columna nos da la solución del sistema de ecuaciones:
\[x=1\] \[y=2\] \[z=3\]
No hay comentarios:
Publicar un comentario