Vous êtes sur la page 1sur 17

Metódo iterativo: jacobi

 OBJETIVO MÉTODO

 Encontrar las aproximaciones de los valores de las


variables de un sistema de ecuaciones lineales, por
medio de la realización de varios cálculos, los cuales
se realizan por etapas, obteniendo así
aproximaciones por cada etapa.
GENERALIDADES
El método de Jacobi permite hallar las aproximaciones a una solución de
sistemas de ecuaciones lineales, utilizando los valores iniciales para la primera
aproximación, luego los de la primera para la segunda y así sucesivamente; en
este método el cálculo de cada variable es independiente por lo tanto
ninguna variable depende de la otra.
El procedimiento a seguir para la aplicación del método es el siguiente:
Se debe introducir unas aproximaciones iniciales, la matriz de coeficientes, el
vector de términos independientes, una tolerancia y un número total de
iteraciones.
Se toman las aproximaciones iniciales para hallar las nuevas aproximaciones,
teniendo en cuenta el fundamento del método.
En cada paso, es posible calcular el error, que es este caso está definido en
normas (las cuales son infinitas).
Para la finalización del programas se tiene en cuenta, si el programa sobrepasa
el numero de iteraciones, o si el error es menor del propuesto al principio; una
vez ocurra alguna de estas dos situaciones, la ultima iteración tendrá las
aproximaciones a la solución del sistema de ecuaciones estudiado.
fprintf('METODO ITERATIVO DE JACOBI\n\n\n')
%fprintf me permite ingresar comentarios de manera textual
que pueden
%orientar al usuario en el uso del programa
%input es un comando de solicitud de entrada de datos del
usuario.
a=input('Ingrese la matriz de coeficientes:\n ');
b=input('\nIngrese los términos independientes:\n ');
x=input('\nIngrese el vector con las aproximacimaciones
Iniciales:\n ');
iter=input('\nIngrese el número máximo de iteraciones:\n ');
tol=input('\nIngrese la tolerancia:\n ');
cond=norm(a)*norm(a^-1);%Se calcula el condicional de la matriz
de coeficientes
disp('condicional=')
disp(cond)
% la funcion disp nos permite imprimir una variable en el espacio
de trabajo
determinante=det(a);%se calcula el determinante de la matriz de
coeficientes
if determinante==0
disp('El determinante es cero, el problema no tiene solución
única')

return

end
n=length(b);%numero de elementos del vector b
d=diag(diag(a)); %obtencion de la matriz diagonal
l=d-tril(a); %obtencion de la matriz diagonal superior L
u=d-triu(a);%obtencion de la matriz diagonal inferior u
fprintf('\n SOLUCION:\n')
fprintf('\nLa matriz de transicion de jacobi:\n')
T=d^-1*(l+u); % matriz de transicion de jacobi
re=max(abs(eig(T))) %calculo del radio espectral

if re>1
disp('Radio Espectral mayor que 1')
disp('el método no converge')
return
end
fprintf('\nEl vector constante es::\n')
C=d^-1*b; % vector constante C, para el metodo
disp(C)
i=0;
err=tol+1;
z=[i,x(1),x(2),x(3),err]; %vector que me permite graficar la tabla

while err>tol & i<iter

xi=T*x+C;
%disp(xi)
err=norm(xi-x); %norma 2
%err=max(abs(xi-x)); %norma 1
%err=norm(xi-x)/norm(xi); %norma relativa
x=xi;
i=i+1;
z(i,1)=i;
z(i,2)=x(1);
z(i,3)=x(2);
z(i,4)=x(3);
z(i,5)=err;

End

fprintf('\nTABLA:\n\n n x1 x2 x3 Error\n\n ');

disp(z)%impresión de la tabla.
MÉTODO DE JACOBI y MÉTODO DE GAUSS-SEIDEL
Para el método de Jacobi, considere un sistema Ax=b
Sea A = D - E - F, donde D es la diagonal de A, -E la triangula inferior y -F la
triangular superior.
Así, la sucesión que se construye con este método iterativo será:
Ax = b
(D-E-F)x = b
Dx = (E+F)x + b
x(k) = D-1(E+F)x(k-1) + D-1b

El siguiente programa resuelve mediante el método de Jacobi un sistema


de ecuaciones Ax=b con un error menor que una tolerancia dada tol. Note
que el programa necesita un dato inicial x0. Además, el programa se
detiene si se alcanza un número máximo de iteraciones maxit sin que se
satisfaga el criterio de convergencia.
function [x,iter]=jac(A,b,x,tol,maxit)
N=diag(diag(A));
P=N-A; corr=1; errest=1; iter=0;
while abs(errest)>tol & iter<maxit
iter=iter+1;
x0=x;
corr0=corr;
x=N\(P*x0+b);
corr=norm(x-x0,inf);
normest=corr/corr0;
if normest>=1 & iter>=2
error('norma de la matriz de iteración > 1')
end
errest=normest/(1-normest)*corr;
end
iter
Ejemplo: Resuelva Ax(0)=b, con una aproximación inicial x(0)=[0 0 0]'

>> A=[5 -2 1;-1 -7 3;2 -1 8];


>> x=[0 0 0]';
>> b=[3 -2 1]';
>> tol=10^-6;
>> maxit=200;
>> jac(A,b,x,tol,maxit)

iter=
13

ans=

0.6763
0.1799
-0.0216
Para el MÉTODO DE GAUSS-SEIDEL, modificar N y P:
N=tril(A)
P=N-A
MÉTODO GAUSS SEIDEL

OBJETIVO MÉTODO

Encontrar las aproximaciones de los valores de las


variables de un sistema de ecuaciones lineales, por
medio de la realización de varios cálculos, los cuales se
realizan por etapas, obteniendo así aproximaciones
por cada etapa.
GENERALIDADES

El método de gauss Seidel permite hallar las aproximaciones a una solución de
sistemas de ecuaciones lineales, utilizando los valores calculados en cada uno de
los pasos, para hallar los nuevos valores, en pocas palabras, en este método un
cálculo siempre depende del anterior, dependiendo las variables de otras variables.

El procedimiento a seguir para la aplicación del método es el siguiente:

Se debe introducir unas aproximaciones iniciales, la matriz de coeficientes, el vector


de términos independientes, una tolerancia y un número total de iteraciones.
•Se toman las aproximaciones iniciales para hallar las nuevas aproximaciones,
teniendo en cuenta el fundamento del método.
•En cada paso, es posible calcular el error, que es este caso está definido en
normas (las cuales son infinitas).
•Para la finalización del programas se tiene en cuenta, si el programa sobrepasa el
numero de iteraciones, o si el error es menor del propuesto al principio; una vez
ocurra alguna de estas dos situaciones, la ultima iteración tendrá las
aproximaciones a la solución del sistema de ecuaciones estudiado.