miércoles, 15 de octubre de 2014

METODOS DE JACOBI Y GAUSS-JORDAN

INTRODUCCIÓN


Los métodos de Jácobi y Gauss – Jordán son los equivalentes en la solución de sistemas de ecuaciones lineales al método de aproximaciones sucesivas en la solución de ecuaciones algebraicas y trascendentes.

Consiste básicamente en obtener una ecuación de recurrencia (matricial en este caso) y proponer un vector solución inicial; posteriormente, se deberá realizar las iteraciones necesarias hasta que la diferencia entre dos vectores consecutivos cumpla con una tolerancia predefinida.


MÉTODO DE JACOBI:

Sea el sistema de ecuaciones lineales AX=b, donde A es la matriz de coeficientes, X es el vector de incógnitas y b el vector de términos independientes.
En la ecuación 1 se puede sustituir a la matriz A por la suma de dos matrices:
En donde la matriz D es una matriz cuyos elementos son cero excepto los elementos

de la diagonal que corresponden a los elementos de la matriz A y R que es una matriz con ceros en la diagonal y sus restantes elementos coindicen con los respectivos de A.



Sustituyendo la ecuación 2 en la ecuación 1:



Despejando el término

Premultiplicado por la matriz D-1

Resulta:

La ecuación 6 no aporta una solución por sí misma, si se observa desde la óptica del algebra matricial. Sin embargo, si se aplica desde una forma recursiva:
Para k=0, 1, 2,……, n y donde X (K) representa un vector solución inicial y X (k+1) representa una aproximación posterior a la inicial X (k). Se puede constatar claramente que la ecuación 7 es totalmente representativa de un método de aproximaciones sucesivas.
Esta ecuación 7 requiere de un breve análisis para su aplicación práctica. En principio, la matriz D, detallada en 4 solo posee elementos diferentes de cero (que corresponden a los de A) en su diagonal principal. Es fácilmente comprobable que la matriz inversa D-1  también posee únicamente valores diferentes de cero en su diagonal principal y que estos valores corresponden a los recíprocos  de sus valores en la matriz A, es decir, será 1/aii .  Por otra parte, el resto de los elementos de cada renglón de la matriz A se encuentran en la matriz R y son restados del vector de términos independientes.
En contexto, la ecuación 7 equivale, a partir del sistema de ecuaciones lineales, a despejar a la incógnita ubicada en la diagonal principal de cada una de las ecuaciones que conforman el sistema, de las siguientes formas:



El método de Jácobi propone que el vector inicial X0  sea igual a cero. A partir de esta propuesta, el vector siguiente X1= bi/aii, es decir, el elemento independiente entre el coeficiente de la diagonal principal para cada ecuación.


Este vector X (1) se sustituye en las ecuaciones 8 obteniendo el siguiente vector X (2). El proceso se realiza consecutivamente hasta que la norma entre dos vectores consecutivos es menor que cierta tolerancia preestablecida.
La norma 0 se calcula como:





Criterio de convergencia

El método de Jácobi e susceptible de los efectos del pivoteo. En consecuencia, su criterio de convergencia lo conforman los criterios de la diagonal, mismo que posee dos condiciones:
1.        Condición necesaria: es condición necesaria que el elemento ubicado en la diagonal principal de cada ecuación sea mayor en el valor absoluto que el resto de los elementos de la misma ecuación.




1.        Condición suficiente: el elemento ubicado en la diagonal principal de cada ecuación sea mayor en valor absoluto que la suma del resto de los elementos de la misma ecuación.
CODIGO MATLAB JACOBI:

clear all
clc
fprintf('Resolución del sistema Ax = b por \n');
fprintf('Jácobi \n\n')
n=input('Ingrese el orden del sistema = ');
fprintf('\n');
fprintf('Matriz coeficientes del sistema \n\n')

for i=1:n
   for j=1:n
      fprintf('coeficiente A(%d,%d) = ', i,j ) % Definición de la matriz A
      A(i,j)=input(' ');
   end
end

fprintf('\nVector términos independientes \n\n')

for i=1:n
      fprintf('término b(%d) = ', i ) % Definición del vector b
      b(i)=input(' ');
end

b=b';

fprintf('\nVector aproximación inicial\n\n')

for i=1:n
   fprintf('xo(%d) = ', i ) % Definición de la aproximación inicial
   xo(i)=input(' ');
end

xo=xo';

e=input('\nIngrese el valor de la tolerancia = '); % Definición de la tolerancia
fprintf('\n');

for i=1:n
   c(i)=b(i)/A(i,i); % Cálculo del vector c
   for j=1:n
      if i==j T(i,j)=0; , else T(i,j)=-A(i,j)/A(i,i);, end % Cálculo de la matriz T
   end
end

c=c';

Er=A*xo-b;

while norm(Er,inf)>=e
  
   x=T*xo+c;
   xo=x;
   Er=A*xo-b;  
end

disp(x)

METODO DE ELIMINACION COMPLETA DE GAUSS-JORDAN

Este método consiste en obtener sistemas equivalentes a partir del sistema original dado, utilizando las operaciones elementales sobre los renglones de la matriz ampliada del sistema, que son:

1.        Intercambiar un renglón por otro; esto equivale a reordenar las ecuaciones del sistema.
2.        Multiplicar todos los elementos de un renglón por un escalar diferente de cero; operación que es equivalente a multiplicar una ecuación por una constante.
3.        Sumar los elementos correspondientes de dos renglones, que es equivalente a sumar término a término las ecuaciones del sistema.

El método de Gauss-Jordan consiste en sistematizar la obtención de sistemas equivalentes hasta obtener uno en el cual la matriz del sistema se convierta en la matriz identidad I; a partir de este último se podrá observar la solución directamente.
Los pasos a seguir para la obtención de sistemas equivalentes con el método de Gauss-Jordan son:

. Seleccionar un elemento diferente de cero como pivote; éste debe ser algún elemento de la matriz de coeficientes.

. Convertir en uno el elemento pivote mediante operaciones elementales.

. Convertir en cero todos los elementos de la columna donde se encuentra el elemento pivote.

. Seleccionar un nuevo pivote, el cual no debe estar ni en el renglón ni en la columna donde se encontraba(n) el(los) pivote(s) anterior(es).

. Repetir los pasos anteriores hasta obtener una matriz de coeficientes formada solamente con unos y ceros, en caso necesario intercambiar renglones para obtener la matriz identidad. En el sistema de ecuaciones correspondiente a esta última matriz se observará la solución.

ERRORES EN EL METODO GAUSS-JORDAN

El método de Gauss- Jordan es un método directo, por lo tanto su solución debería ser exacta; sin embargo no lo es, debido a los errores de redondeo que se presentan en el desarrollo del mismo.

Ejemplo:

1.        Tomemos el siguiente sistema de 3 ecuaciones con 3 incognitas


Presentamos el sistema de ecuaciones por medio de una matriz aumentada
Solución:

CODIGO MATLAB GAUSS-JORDAN

 function [x,iter]=newton(x0,f,df)
% Algoritmo Newton-Raphson
N = 100; eps = 1.e-5; %Defino max. Numero. iteraciones y error
maxval = 10000.0; % Defino valor para divergencia
x=x0;
while (N>0)
    xn = x-f(x)/df(x);%Funcin de Newton
    if abs(f(xn))<eps
       x=xn;iter=100-N;
       return;
    end;
    if abs(f(x))>maxval
       disp(['# de Iteraciones = ',num2str(iter)]);
       error('La Solucion Diverge');
       break;
    end;
    N = N - 1;
    x = xn;
end;
error('No Converge');
return;
% Fin de la Funcion

CONCLUSIONES


·         Se concluye cuan pesada es una diagonal, no se establece una relación numérica que nos diga la relación que debe guardar el elemento aii sobre el resto de los coeficientes aij  de su ecuación. En todo caso, entre más evidente sea el dominio de los elementos sobre la diagonal principal, más rápida será la convergencia de la solución.
·         El método de Gauss-Jordan es uno de los más  exactos para encontrar la solución de un sistema de ecuaciones algebraicas lineales.

BIBLIOGRAFIA:

Metodos numéricos_ Rafael Iriarte V. Balderrama.


















1 comentario:

  1. Hola. Gracias por tu aporte, me parece bien que postearas la teoría básica, sin embargo me gustaría que mejoraras la exposición, dado que el ejemplo aplicado, no es muy claro, y el algoritmo de MATLAB no es el de Gauss Jordan.Recuerda que te avise para que lo mejoraras.Hasta pronto

    ResponderEliminar