Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Metodos Iterativos para SEL Con Matlab PDF
Metodos Iterativos para SEL Con Matlab PDF
con Matlab
1. Resumen
2. - Su formación como programadores debe incluir el
conocimiento y manejo de algunos de los más
En la mayoría de los estudios de Informática se incluye importantes programas de cálculo simbólico hoy
una asignatura de Ampliación de Matemáticas, bien en utilizados. Un ejemplo es el paquete Matlab.
el 2º cuatrimestre de 1º, bien en 2º curso.
En sus estudios de Informática de Gestión, la El profesor
Universidad de Burgos, incluye una asignatura en 2º
curso, llamada Laboratorio Computacional, que tiene 6 Si es el alumno el que programa ¿Qué papel le
créditos, 3 teóricos y 3 prácticos. Esta asignatura es corresponde al profesor? Entre las muchas formas que
impartida por el área de Matemática Aplicada del puede haber de ayudar al alumno, hemos escogido dos
Departamento de Matemáticas y Computación. para exponer a continuación.
En ella, es interesante incluir un tema sobre los métodos 1ª forma: Dejar, desde el principio de la clase, que el
numéricos del álgebra lineal. alumno programe. El profesor resuelve dudas
Este trabajo se presenta con el objetivo de ser una individuales a medida que vayan surgiendo. A esta
posible práctica para impartir los créditos prácticos de forma le llamaremos Método 1.
parte de este tema. 2ª forma: Podemos hacer una clase mas guiada con el
Concretamente la parte del álgebra numérica a la que objetivo de que a la hora de programar con Matlab, el
nos referimos son los métodos iterativos para resolver alumno no tenga dificultades. A este método le
sistemas lineales: método iterativo de Jacobi y método llamaremos Método 2 ó Método propuesto porque es el
iterativo de Gauss-Seidel. Además se exponen dos que vamos a exponer con detalle y después es el que
teoremas para estudiar la convergencia de ambos desarrollaremos para el tema que nos ocupa: métodos
métodos. iterativos para sistemas lineales.
()00−+−
x+
===
siguientes
17yz
44
1.75
722 iterantes usando (1) iterante inicial, la sucesión converge a la
()1M
<
ρ
()00+++
y+
12===
xz
88
3.375
142142 {}MesvalorpropiodeM
solución del sistema si y sólo
=
ρλλ
()max,
donde
5x11()00y−
z+
==−+=
7425
52
Concluidos los pasos 1º,2º y 3º, en los pasos 4º y 5º
y así trabaja el alumno.
Se le pide:
sucesivamente. x=
()19
2.00000 a) Implementar el método de Jacobi.
()1Al
y= cabo de 19 iteraciones
4.00000
9 z=
()19
3.00000 , b) Implementar el método de Gauss-Seidel.
c) Hacer un pequeño programa para verificar el
,
teorema 2 de condición necesaria y suficiente de
convergencia.
Método de Gauss-Seidel
Es el método de Jacobi con la modificación de que las Para concluir el paso 6º a continuación se exponen los
variables son utilizadas tan pronto como sean calculadas programas.
=
i()1
a1La
xbaxax
ii−<m
jiji >m−−
↵ implementación del método será la siguiente:
√
iijjijj
=
K
in
1,
function y=gausei(A,B,x,tol)
% resolución de sistemas lineales por
Ejemplo: Resolver el sistema anterior por el método de %Gauss-Seidel
Gauss-Seidel y mismo iterante inicial. % A matriz del sistema
70−+−
x+
1()0===
yz
44
1.75 722 % B término independiente
% x iterante inicial
% tol tolerancia
()0+++
y+
12===
xz
88
3.75
14214(1.75)2 [m,n]=size(A);
if m~=n
()1−+−
z+
11===
xy
55
2.95
52152(1.75)3.75 'matriz no cuadrada'
return
end
for i=1:m
x=
y así sucesivamente.2.00000
()10 y=
()10
4.00000 if A(i,i)==0
Tras 10 iteraciones , , 'elementos diagonales nulos'
z=
()10
3.00000
return
end
end
Notas.1) Para que los métodos estén bien definidos es y=x;
necesario que N sea inversible, es decir que la diagonal % iteración
de A no tenga ningún elemento nulo. for k=1:100
2) Criterio de parada: y(1)=(B(1)-A(1,2:n)*x(2:n))/A(1,1);
Dado que el iterante que usamos es un vector usamos for i=2:n-1
comoiii()1− <axcriterio de parada:
xmxtolerancia
+mm y(i)=(B(i)-A(i,1:i-1)*y(1:i-1)-
A(i,i+1:n)*x(i+1:n))/A(i,i);
end function y=teorema( )
y(n)=(B(n)-A(n,1:n-1)*y(1:n- %Verificación del teorema de
1))/A(n,n); %convergencia para el método de Jacobi
if max(abs(y-x))<tol A=input('introduce la matriz de
'nº de iteraciones',k coeficientes:');
return disp(A);
end [n,m]=size(A);
x=y; for i=1:n
end for j=1:n
'100 iteraciones no han sido suficientes' if i==j
M(i,j)=0
function y=jacobi(A,B,x,tol) else M(i,j)=-A(i,j)/A(i,i);
% resolución de sistemas lineales por end
%Jacobi end
% A matriz del sistema end
% B término independiente v=eig(M);
% x iterante inicial n=length(v);
% tol tolerancia for i=1:n
[m,n]=size(A); l(i)=abs(v(i));
for i=1:m end
if A(i,i)==0 radio=max(l);
'elementos diagonales nulos' if radio<1,
return disp('el método converge')
end else
end disp('el método diverge')
% iteración end
N=diag(diag(A));
P=N-A;
N=N^(-1); 4- Referencias
for i=1:100
x1=N*(P*x+B); [1] John H. Mathews, Kurtis D. Fink, Métodos
if max(abs(x1-x))<tol Numéricos con Matlab. Prentice Hall 2.000
y=x1;
'nº de iteraciones',i [2] Bernard Kolman, Algebra Lineal con aplicaciones y
return Matlab. Prentice Hall 1.999
end
x=x1; [3] Richard L. Burden, J. Douglas Faires, Análisis
end Numérico. Grupo Editorial Iberoamérica 1.993
'100 iteraciones no han sido
suficientes'
y=x1;