Método de Gauss-Jordan
El método de Gauss-Jordan es una variación de la eliminación gaussiana. La principal diferencia consiste en que método de Gauss-Jordan cuando se elimina una incógnita no solo se elimina de las ecuaciones siguientes si no de todas las otras ecuaciones. De esta forma el paso de eliminación genera una matriz identidad en vez de una matriz triangular. Por consiguiente, no es necesario emplear la sustitución hacia atrás para obtener la solución.
Esquema gráfico del método de Gauss-Jordan.
Programa en Matlab %* ****************************************************** **
%** Metodo de Gauss Jordan
**
%** por pasos UdeG ** %** Electronica ** %** Ing. Jesus Norato Valencia %** Materia: Metodos Numericos
Maestria en
**
**
%** Maestro: M.C. J.Gilberto Mateos Suarez 5/Nov/99 ** %***************************************************** ***** clear; clc; fprintf('Dame la matriz aumentada\n\n'); f=input('Cuantas filas tiene la matriz: '); c=input('Cuantas columnas tiene la matriz: ');
%***************************************************** ****** %** En los siguentes for anidados se da entrada a los ** %** datos de la matriz aumentada, los cuales son dados **
%** primero la columna 1, despues la 2 y asi sucesivamente** %***************************************************** ******
for k=1:c for j=1:f fprintf('fila : %x\n',j) fprintf('columna : %x',k) r=input('Numero de esta fila y columna: '); a(j,k)=r; j=j+1; end k=k+1; end a pause
%***************************************************** **** %** En seguida se normalizan los pivotes y se h acen cero** %** todos los numeros por debajo de ellos **
%***************************************************** ****
for k=1:c-1 a(k,:)=a(k,:)/a(k,k); for j=k+1:f a(j,:)=a(j,:)-a(k,:)*a(j,k); j=j+1; a pause end k=k+1; a pause end
%***************************************************** * %** En la siguiente seccion se hacen cero los numeros** %** que estan por encima de la diagonal principal ** %***************************************************** *
for k=f:-1:2 for j=k-1:-1:1 a(j,:)=a(j,:)-a(k,:)*a(j,k); j=j-1; a pause end k=k-1; a pause end fprintf('resultado\n');
6.2.4 Método de Gauss-Seidel La iteración de Gauss-Seidel se define al tomar Q como la parte triangular inferior de A incluyendo los elementos de la diagonal:
Si, como en el caso anterior, definimos la matriz R= A-Q
y la ecuación (63) se puede escribir en la forma: k
k -1)
Qx( ) = - Rx(
Un elemento cualquiera, i, del vector Qx
(k )
+b
vendrá dado por la ecuación:
Si tenemos en cuenta la peculiar forma de las matrices Q y R, resulta que todos los sumandos para los que j > i en la parte izquierda son nulos, mientras que en la parte derecha son nulos todos los sumandos para los que
. Podemos escribir entonces:
=
=
(k )
de donde despejando xi , obtenemos:
Obsérvese que en el método de Gauss-Seidel los valores actualizados de xi sustituyen de inmediato a los valores anteriores, mientras que en el método de Jacobi todas las componentes nuevas del vector se calculan antes de llevar a cabo la sustitución. Por contra, en el método de Gauss-Seidel los cálculos deben
llevarse a cabo por orden, ya que el nuevo valor xi depende de los valores actualizados de x1, x2, ..., xi-1. En la figura (15) se incluye un algoritmo para la iteración de Gauss-Seidel.
Figure: Algoritmo para la iteración de Gauss-Seidel.