Anda di halaman 1dari 18

MTODOS ITERATIVOS PARA

LA RESOLUCIN DE
SISTEMAS LINEALES
SOFTWARE DE SIMULACIN
MICHELLE PERALBO
LUIS PILATASIG
INTRODUCCIN

La resolucin de sistemas de ecuaciones lineales tambin


puede hacerse con frmulas iterativas que permitan
acercarse a la respuesta mediante aproximaciones
sucesivas.
Los mtodos iterativos son tiles para resolver problemas
que involucran un nmero grande de variables (a veces del
orden de millones), donde los mtodos directos tendran
un coste prohibitivo incluso con la potencia del mejor
computador disponible.
Observaciones:

La resolucin iterativa no es aplicable a todos los


problemas pero resulta muy til para ciertos tipos, por
ejemplo, si el nmero de incgnitas es muy grande y la
matriz de los coeficientes dispersa.
La precisin de la solucin obtenida por un mtodo
iterativo depender del nmero (k) de iteraciones y de la
convergencia del mtodo.
Todos los mtodos iterativos requieren una estimacin
inicial que designamos por x(0) para comenzar la iteracin.
MTODO DE JACOBI

Enanlisis numricoelmtodo de Jacobies


unmtodo iterativo, usado para resolversistemas de
ecuaciones lineales del tipo Ax=b.
El mtodo de Jacobi consiste en usar frmulas como
iteracin depunto fijo.
MTODO DE JACOBI

La base del mtodo consiste en construir unasucesin


convergentedefinidaiterativamente.
El lmite de esta sucesin es precisamente la solucin del sistema.
A efectos prcticos si el algoritmo se detiene despus de un nmero finito de
pasos se llega a una aproximacin al valor dexde la solucin del sistema.
La sucesin se construye descomponiendo lamatrizdel sistema A n la forma
siguiente:

Donde D, es una matriz diagonal y R es la suma de una matriz triangular inferior L


y una matriz triangular superior U, luego R=L+U. Partiendo de Ax=b podemos
describir dicha ecuacin como:
MTODO DE JACOBI
Luego:

Si aii 0 para cadai. Por la regla iterativa, la definicin del Mtodo de


Jacobipuede ser expresado de la forma:

Donde k es el contador de iteracin. Finalmente tenemos:


Ejemplo
METODO ITERATIVO DE JACOBI
clc
clear
format

fprintf(' METODO ITERATIVO DE JACOBI\n\n\n')

a=input('Ingrese la matriz de coeficientes:\n ');


b=input('\nIngrese los trminos independientes:\n ');
x=input('\nIngrese el vector con las aproximacimaciones Iniciales:\n ');
iter=input('\nIngrese el nmero mximo 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 coeficiente
if determinante==0
disp('El determinante es cero, el problema no tiene solucin 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
disp(T)
re=max(abs(eig(T))) %calculo del radio espectral

if re>1
disp('Radio Espectral mayor que 1')
disp('el mtodo 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)%impresion de la tabla.
MTODO DE GAUSS-SEIDEL

Similar al mtodo de Jacobi


Aunque este mtodo puede aplicarse a cualquier sistema de
ecuaciones lineales que produzca una matriz (cuadrada,
naturalmente pues para que exista solucin nica, el sistema
debe tener tantas ecuaciones como incgnitas) de coeficientes
con los elementos de su diagonal no-nulos, la convergencia del
mtodo solo se garantiza si lamatriz es diagonalmente
dominanteo si es simtrica y, a la vez,definida positiva.
MTODO DE GAUSS-SEIDEL

Buscamos la solucin a un sistema de ecuaciones lineales, en notacin


matricial:

El mtodo de iteracin Gauss-Seidel se computa, para la iteracin (k+1)


Donde:

donde los coeficientes de la matriz N se definen como


La frmula de iteracin del mtodo:

La diferencia entre este mtodo y el de Jacobi es que, en este


ltimo, las mejoras a las aproximaciones no se utilizan hasta
completar las iteraciones.
Ejemplo:
METODO ITERATIVO DE GAUSS SEIDEL
clc
clear
format long %maxima capacidad de la maquina

a=input('Ingrese la matriz de coeficientes:\n ');


b=input('\nIngrese los trminos independientes:\n ');
x=input('\nIngrese el vector con las aproximacimaciones Iniciales:\n ');
iter=input('\nIngrese el nmero mximo de iteraciones:\n ');
tol=input('\nIngrese la tolerancia:\n ');

k=norm(a)*norm(a^-1);%Se calcula el condicional de la matriz de coeficientes


disp('condicional=')
disp(k)
% la funcion disp nos permite imprimir una variable en el espacio de trabajo
determinante=det(a);%se calcula el determinante de la matriz de coeficiente
if determinante==0
disp('El determinante es cero, el problema no tiene solucin nica')
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 gauss seidel:\n')
T=((d-l)^-1)*u; % matriz de transicion de gauss
disp(T)
re=max(abs(eig(T))) %calculo del radio espectral
if re>1
disp('Radio Espectral mayor que 1')
disp('el mtodo no converge')
return
end
fprintf('\nEl vector constante es::\n')
C=((d-l)^-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)
i=i+1;
err=norm(xi-x); %norma 2
%err=max(abs(xi-x)); %norma 1
%err=norm(xi-x)/norm(xi); %norma relativa

x=xi;
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\nn x1 x2 x3 Error\n\n ')
disp(z) %impresion de la tabla.

Anda mungkin juga menyukai