Metodo de Jacobi y Gauss-Seidel

download Metodo de Jacobi y Gauss-Seidel

of 4

Transcript of Metodo de Jacobi y Gauss-Seidel

Mtodos iterativos para sistemas lineales: su implementacincon MatlabM Pilar de las Heras, Jos Luis FernndezDept. de Matemticas y ComputacinArea Matemtica AplicadaUniversidad de Burgos09006 Burgose-mail: [email protected] [email protected]. ResumenEn la mayora de los estudios de Informtica se incluyeuna asignatura de Ampliacin de Matemticas, bien enel 2 cuatrimestre de 1, bien en 2 curso.En sus estudios de Informtica de Gestin, laUniversidad de Burgos, incluye una asignatura en 2curso, llamada Laboratorio Computacional, que tiene 6crditos, 3 tericos y 3 prcticos. Esta asignatura esimpartida por el rea de Matemtica Aplicada delDepartamento de Matemticas y Computacin.En ella, es interesante incluir un tema sobre los mtodosnumricos del lgebra lineal.Este trabajo se presenta con el objetivo de ser unaposible prctica para impartir los crditos prcticos departe de este tema.Concretamentelapartedellgebranumricaalaquenosreferimossonlosmtodositerativospararesolversistemaslineales:mtodoiterativodeJacobiymtodoiterativodeGauss-Seidel.Ademsseexponendosteoremasparaestudiarlaconvergenciadeambosmtodos.2. Crditos prcticos. Metodologa.El alumnoLos crditos prcticos se imparten de la siguiente forma:los alumnos programan los algoritmos explicados enclase, en nuestro caso, usando Matlab.Las razones de impartir as los crditos prcticos sonvarias; citemos algunas.1. - Nuestros alumnos son de 2 curso y han tenido en 1una asignatura troncal de 9 crditos llamadaFundamentos de Programacin. Implementar losalgoritmos numricos con Matlab les servir para quetengan oportunidad de practicar sus habilidades en lacomputacin cientfica.2. - Su formacin como programadores debe incluir elconocimiento y manejo de algunos de los msimportantes programas de clculo simblico hoyutilizados. Un ejemplo es el paquete Matlab.El profesorSi es el alumno el que programa Qu papel lecorresponde al profesor? Entre las muchas formas quepuede haber de ayudar al alumno, hemos escogido dospara exponer a continuacin.1 forma: Dejar, desde el principio de la clase, que elalumno programe. El profesor resuelve dudasindividuales a medida que vayan surgiendo. A estaforma le llamaremos Mtodo 1.2 forma: Podemos hacer una clase mas guiada con elobjetivo de que a la hora de programar con Matlab, elalumno no tenga dificultades. A este mtodo lellamaremos Mtodo 2 Mtodo propuesto porque es elque vamos a exponer con detalle y despus es el quedesarrollaremospara el tema que nos ocupa: mtodositerativos para sistemas lineales.Esquema del mtodo propuestoSe divide en 6 pasos. Explicamos cada uno de ellos.1. - El profesor presenta los comandos bsicos que tieneMatlab de lgebra lineal necesarios para implementar losmtodos iterativos.Nota.- La primera clase es siempre una introduccin alprograma Matlab, pero la experiencia nos dice que noesta de ms, al comienzo de cada prctica volver acomentar algunas instrucciones, aunque eso s, slo lasque posiblemente sean necesarias en la prctica que nosocupa.2. - El profesor plantea sencillos ejercicios que requieranla utilizacin de dichos comandos.El alumno resuelve estos ejercicios utilizando susconocimientos del lgebra lineal. Dicha resolucin leservir para afianzar la comprensin de los comandosexpuestos en 1 y su posterior utilizacin al programar.3.- El profesor hace un pequeo resumen de los mtodositerativos de Jacobi y Gauss-Seidel y de resultadosafines a ellos. Slo ser un resumen, porque laexplicacin detallada se ha visto con antelacin en laclase de teora.4. - Se deja tiempo al alumno para que implemente losalgoritmos con Matlab. El profesor resuelve dudasindividuales cuando surjan.5. - Los alumnos verifican los programas, por ejemplocon los problemas hechos por el profesor en elapartado3.6. - Se comparan los distintos programas y se mejoranen lo posible: Sencillez, programacin estructurada,complejidad computacional, etc.Comparacin de ambos mtodosPuntos fuertes Puntos dbilesMetodo 1 Mas abierto a lainiciativa del alumno(uso de la ayuda deMatlab)Tiempoinsuficiente paraterminar laprcticaMetodopropuestoOrdenado en nivel dedificultad.Todos las alumnostrabajan desde elprincipioNo se adaptabien a todas lasprcticas.En general, hemos observado que el mtodo propuestoha sido aceptado por la mayora de los alumnos, queestn mas animados a trabajar.Para el profesor requiere mas trabajo. Esta prcticapretende ser una ayuda para todos aquellos profesoresque quieran probar este mtodo.3. Descripcin detallada del mtodo propuestopara la prctica: mtodos iterativos parasistemas lineales1.- Comandos bsicoslength(x)longitud del vector xmax(x)componente mxima de xsize(A) dimensin de la matriz Aeig(A) valores propios de Adiag(A) extrae las entradas diagonales de Aabs(x) valor absoluto de x mdulo de un nmero complejo xA(i,j)extrae la entrada (i,j) de la matriz AA(:,j)extrae la columna j-sima de AA(i,:)extrae la fila i-sima de AA(3:5,:)extrae las filas 3 a 5 de A (se puede generalizar)A(:, 1:3) extrae las columnas 1 a 3 de A (se puedegeneralizar)2 .- EjerciciosIntroducir la matriz 123 211 301 A -Calcular su dimensin.-Mostrar la entrada (2,1).-Mostrar la 2 fila-Mostrar la 3 columna-Restar a la 2 fila la 1 fila-Qu resultado obtienes al hacer diag (A)?-Y al hacer diag(diag(A))?-Calcular los valores propios de A.Introducir el vector x = (1,2,3,6,8,9,47)- Calcular su longitud-Entresacar las 4 primeras componentes-Entresacar las 3 ltimas componentes-Calcular su mxima componente.3.- Mtodos iterativos para sistemas lineales. ResumenLosmtodositerativospararesolverelsistemalineal1112111 12 nnnnnnn aaaxb aaaxb KKKKKKMM K se utilizan slo para grandessistemasdispersosyestructurados,dondelastcnicasiterativassoneficacestantoentrminosdealmacenamientoencomputadoracomodetiempodeclculos.Lastcnicasiterativasinvolucranunprocesoqueconvierteelsistema Axb enunsistemaequivalentedelaforma xTxc +paraalgunamatrizTyunvector c.Separtedeunvector () 0x ,primeraaproximacinalasolucinx y se genera la sucesin (){}1mmxx, calculando()()1mm xTxc +demaneraquedichasucesinconverja a x.Vamos a exponer brevemente el mtodo de Jacobi, elmtodo de Gauss-Seidel y dos teoremas deconvergencia, as como algn ejemplo.Mtodo de Jacobi para resolver el sistemab x A Escribimos A como diferencia de dos matrices A=N-Pdonde 11, ()(,) nn NdiagAaa KKy nuestro sistemaanterior se convierte en NxPxB +.Ahora, partiendo de un iterante inicial () 0x , podemosdefinir ()mx como ()()1mm NxPxB +,es decir()()11() mm xNPxB +

1,2,... mEsto se puede escribir ()()()()()m - 1m - 1m - 1m - 1 ii11ii-1i-1ii+1i+1inn miiibax--ax-ax--ax x= a-1,, in K (1)Ejemplo:Consideramos el sistema de ecuaciones47 4821 2515 xyz xyz xyz + + ++Empezando por ()()()000 1,2,2 xyz ,calculamos lossiguientes iterantes usando (1)()()()00 17722 1.75 44 yz x++ ()()()00 12142142 3.375 88 xz y++++ ()()()00 1152 7425 5xy z+ +y assucesivamente.Al cabo de 19 iteraciones ()19 2.00000 x,()19 4.00000 y, ()19 3.00000 zMtodo de Gauss-SeidelEs el mtodo de Jacobi con la modificacin de que lasvariables son utilizadas tan pronto como sean calculadasLa implementacin del mtodo ser la siguiente:()()11mm miiijjijj jiji ii xbaxax a> 1, in KEjemplo: Resolver el sistema anterior por el mtodo deGauss-Seidely mismo iterante inicial.()()()00 17722 1.75 44 yz x++ ()()()10 1214214(1.75)2 3.75 88 xz y++++ ()()()11 1152152(1.75)3.75 2.95 55 xy z++ y as sucesivamente.Tras 10 iteraciones ()10 2.00000 x, ()10 4.00000 y,()10 3.00000 zNotas.1) Para que los mtodos estn bien definidos esnecesario que N sea inversible, es decir que la diagonalde A no tenga ningn elemento nulo.2) Criterio de parada:Dado que el iterante que usamos es un vector usamoscomo criterio de parada: ()()1max mm ii ixxtolerancia +3) Se puede probar que si reordenamos el sistema delejemplo, cambiando fila 1 por fila 3 ,con el mismoiterante inicial, los mtodos divergen.Se hace necesario disponer de algn criterio quedetermine si los mtodos iterativos convergen.Teorema 1: Si A es diagonalmente dominante, es decir,iiij ji aa ?>

1, in K, entonces los mtodosconvergen para cualquier iterante inicial.Teorema 2:Sea el sistema AxB . Si 1MNP es lamatriz de iteracin del mtodo iterativo y ()0xes eliterante inicial, la sucesin(){}1mmxx converge a lasolucin del sistema si y slo()1M donde{}()max, MesvalorpropiodeM Concluidos los pasos 1,2 y 3, en los pasos 4 y 5trabaja el alumno.Se le pide:a)Implementar el mtodo de Jacobi.b)Implementar el mtodo de Gauss-Seidel.c)Hacer un pequeo programa para verificar elteorema 2 de condicin necesaria y suficiente deconvergencia.Para concluir el paso 6 a continuacin se exponen losprogramas.function y=gausei(A,B,x,tol)% resolucin de sistemas lineales por%Gauss-Seidel% A matriz del sistema% B trmino independiente% x iterante inicial% tol tolerancia [m,n]=size(A); if m~=n 'matriz no cuadrada' return endfor i=1:mif A(i,i)==0'elementos diagonales nulos'returnendend y=x;% iteracinfor k=1:100 y(1)=(B(1)-A(1,2:n)*x(2:n))/A(1,1); for i=2:n-1y(i)=(B(i)-A(i,1:i-1)*y(1:i-1)-A(i,i+1:n)*x(i+1:n))/A(i,i);endy(n)=(B(n)-A(n,1:n-1)*y(1:n- 1))/A(n,n);if max(abs(y-x))