Pr‡ctica 5: MŽtodos Iterativos

Los mŽtodos iterativos de los cuales hablaremos en esta pr‡ctica se encargan de resolver sistemas de ecuaciones lineales de la forma

*

donde  es una matriz real  conocida,  un vector (columna) conocido con  componentes  y  el vector (columna) que buscamos, con  componentes . En tŽrminos de cantidades escalares se rescribe:

Si la matriz  es invertible entonces posee una œnica soluci—n  y no hay m‡s que decir. Sin embargo, en muchas aplicaciones es preciso resolver sistemas de forma efectiva. De hecho es una tarea muy usada en computaci—n. Como consecuencia existir‡n muchos mŽtodos para resolver este tipo de sistemas como el mŽtodo de Gauss, el de Jacobi, el de Gauss-Seidel,...

Los mŽtodos que vamos a estudiar e implementar en el lenguaje de programaci—n Fortran ser‡n el mŽtodo de Jacobi y el mŽtodo de Gauss-Seidel. Estos mŽtodos producen una secuencia de aproximaciones sucesivas que bajo condiciones especificadas convergen a un vector soluci—n.

MŽtodo de Jacobi

El mŽtodo de Jacobi consistir‡ en calcular las soluciones de modo:

As’, la forma compacta del mŽtodo iterativo de Jacobi ser‡:

para .

MŽtodo de Gauss-Seidel

El mŽtodo de Gauss-Seidel consiste en sustituir el par‡metro  del primer sumatorio por el par‡metro  en el mŽtodo de Jacobi. Este par‡metro ser‡ el que estamos calculando actualmente. As’, nos quedar‡:

para .

Este mŽtodo de Gauss-Seidel converger‡ m‡s rapidamente que el mŽtodo de Jacobi a causa del cambio realizado.

En esta pr‡ctica implementaremos los algoritmos necesarios para resolver sistemas lineales mediante los mŽtodos iterativos de Jacobi y de Gauss-Seidel. Como condiciones de parada del bucle introduciremos un m‡ximo de iteraciones (para funciones que son asint—ticas, con las cuales no acabar’amos nunca) y una condici—n de tolerancia para detenerlo cuando la aproximaci—n sea lo buena que deseemos. Esta condici—n ser‡:

 

tomando como  el valor 0.00005.

Inicialmente consideraremos .

El problema a aproximar numŽricamente el siguiente sistema de ecuaciones lineales:

del cual conocemos la soluci—n real:

Introduciendo estos datos en el programa realizado en Fortran hemos obtenido los siguientes resultados:

Con el mŽtodo de Jacobi:

1.00000002626461

1.99999997725430

-0.999999998701855

0.999999991632631

Podemos comprobar que se aproxima mucho a la soluci—n real del problema, produciendo un error de orden elevado, a partir del octavo decimal, es decir, tiene siete cifras decimales exactas, lo cual nos indica que el error tendr‡ un orden 8.

Con el mŽtodo de Gauss-Seidel:

1.00000000023955

1.99999999979347

-0.999999999988614

0.999999999923973

Con el mŽtodo de Gauss-Seidel observamos que nos aproxima mucho m‡s el resultado. As’, tendremos diez cifras decimales exactas, por lo tanto ser‡ un sistema con error de orden 11.



Alojamiento con 500GB de espacio y 5000GB de ancho de banda por 4 euros al mes
Cómo contratar servicios de hosting con Dreamhost
Descuento, promocode para dreamhost de $50