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:
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.
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