Tema07.v0.2

August 9, 2017 | Author: Juan Pablo Tenorio Quiroz | Category: Numerical Analysis, System Of Linear Equations, Equations, Matrix (Mathematics), Gradient
Share Embed Donate


Short Description

Descripción: tema...

Description

Análisis Numérico: Métodos iterativos de resolución de sistemas de ecuaciones lineales

Métodos iterativos de resolución de sistemas de ecuaciones lineales Grupo de Dinámica de Flujos Ambientales Universidad de Granada

________________________________________________________________ 1 Manuel Díez Minguito

Análisis Numérico: Métodos iterativos de resolución de sistemas de ecuaciones lineales

Índice Índice ................................................................................................................................ 2 Lista de Tablas.................................................................................................................. 2 Lista de Algoritmos .......................................................................................................... 2 Método iterativo de Jacobi ............................................................................................... 5 Método de Gauss – Seidel ................................................................................................ 9 Métodos de relajación..................................................................................................... 14 Método del descenso más rápido.................................................................................... 21 Método del gradiente conjugado .................................................................................... 23 Bibliografía................................................................................................................. 26

Lista de Tablas Tabla 1. Comparativa métodos de Gauss – Seidel y SRS. ............................................. 16

Lista de Algoritmos Algoritmo 1. Método de Jacobi. ....................................................................................... 8 Algoritmo 2. Método de Gauss – Seidel......................................................................... 13 Algoritmo 3. Método de sobre-relajación sucesiva. ....................................................... 20 Algoritmo 4. Algoritmo formal para el método del descenso más rápido. .................... 22 Algoritmo 5. Método del descenso más rápido. ............................................................. 23 Algoritmo 6. Algoritmo formal para el método del gradiente conjugado. ..................... 24 Algoritmo 7. Método del gradiente conjugado.............................................................. 25

Iniciábamos el tema anterior con varios ejemplos de teoría de circuitos y difusión térmica. Volviendo a ese segundo ejemplo, la matriz resultante era

________________________________________________________________ 2 Manuel Díez Minguito

Análisis Numérico: Métodos iterativos de resolución de sistemas de ecuaciones lineales −4u1

+u2

+u4

u1

−4u2

+u 3

u2

−4u 3

u1 u2

= −50 +u5

= −50 +u6

−4u 4

+u5

+u 4

−4u5

+u6

+u5

−4u6

u3

= −150 +u7

u4 u5 u6

=0 +u8

=0 +u9

= −100

−4u7

+u8

= −50

+u7

−4u8

= −50

+u8

−4u9

(0.1)

= −150

A este tipo de matrices se las llama dispersas por el elevado número de entradas nulas que presenta. En estos casos, los métodos de resolución de sistemas lineales más eficientes suelen ser los llamados métodos iterativos, en contraposición con los métodos directos. Además, hay que decir que los métodos iterativos son mucho menos costosos computacionalmente que los directos, incluso para órdenes pequeños. Comparativamente, el número de operaciones que tiene lugar en los métodos directos es muy elevado, dando lugar a errores por redondeo. Asimismo, necesitan mucha menos memoria de almacenamiento1. Las técnicas iterativas de resolución de sistemas lineales de orden n × n de la forma Ax = b (0.2) donde x , b ∈ M n×1( ) , A ∈ M n ( ) y det(A) ≠ 0 , consisten en la construcción de una sucesión de vectores {x (0), …, x (k ), …} que converja a la solución del sistema. Esto es

lim x (k ) = x .

k →∞

(0.3)

Los métodos iterativos que vamos a considerar en este capítulo son aquellos que se construyen partiendo de un x (0) arbitrario y después generando los siguientes de la forma x (k +1) = F (x (k ) ) (0.4) siendo F : n → n . En nuestro caso, consideraremos únicamente funciones F de tipo lineal, es decir F (x ) = Tx + c , siendo c ∈ n y T ∈ M n ( ) . Por tanto, dado un vector inicial, la sucesión se genera calculando x (k ) = Tx (k −1) + c . (0.5)

1

Los métodos directos de resolución de sistemas de ecuaciones lineales son, por lo general, computacionalmente costosos, especialmente cuando se incrementa el orden del sistema; sin mencionar los problemas por errores de redondeo. En estos casos (v.gr. en EDPs), métodos iterativos de resolución de sistemas de ecuaciones lineales suelen resultar más efectivos que los directos. Otra situación en la que aquéllos se muestran más eficientes que estos es cuando la matriz asociada al sistema presenta numerosas entradas nulas (véase ejemplos del Tema4).

________________________________________________________________ 3 Manuel Díez Minguito

Análisis Numérico: Métodos iterativos de resolución de sistemas de ecuaciones lineales Lo que viene a decir (0.5) es que x es un punto fijo del mapa iterativo x = Tx + c cuya solución formal es x = (I − T )−1c . Ejemplo [Burden y Faires, 1985]

Comenzamos con un ejemplo. Sea el sistema lineal siguiente 10x 1 −x 2 +2x 3 =6 −x 1

+11x 2

−x 3

+3x 4 = 25

2x 1

−x 2

10x 3

−x 4 = −11

3x 2

−x 3

+8x 4 = 15 .

(0.6)

La idea es convertir este sistema de la forma (0.2) a la forma x = Tx + c . Para ello se despeja de cada ecuación i la componente x i . En este ejemplo, ⎛ 0 1/10 −1/ 5 0 ⎞⎟ ⎜⎜ ⎟⎟ ⎜⎜ 1/11 ⎟⎟ 0 1/11 3 /11 − ⎜⎜ ⎟⎟ (0.7) T =⎜ ⎟ ⎜⎜−1/ 5 1/10 0 1/10 ⎟⎟⎟ ⎜⎜ ⎟⎟ ⎜ 0 ⎠⎟⎟ −3 / 8 1/ 8 ⎝⎜ 0 y ⎛ 3 / 5 ⎞⎟ ⎜⎜ ⎟ ⎜⎜ 25 /11 ⎟⎟ ⎟⎟ ⎜ ⎟ c = ⎜⎜ ⎜⎜−11/10⎟⎟⎟ ⎟⎟ ⎜⎜ ⎜⎜ 15 / 8 ⎟⎟⎟ ⎝ ⎠

(0.8)

T

Suponiendo que el vector inicial es x (0) = (0, 0, 0, 0) los siguientes se generan de la forma siguiente (0) ⎛ (1) ⎞ 1/10 −1/ 5 0 ⎟⎞ ⎜⎛x 1 ⎟⎟⎞ ⎜⎛ 3 / 5 ⎞⎟ ⎜⎜x 1 ⎟⎟ ⎜⎛ 0 ⎟⎟ ⎜⎜ ⎟⎟ ⎜ ⎟ ⎜⎜ (1) ⎟⎟ ⎜⎜ ⎜⎜ 25 /11 ⎟⎟ (0) ⎟ ⎜ ⎟ ⎟ ⎜ − x x 1/11 0 1/11 3 /11 ⎜⎜ 2 ⎟⎟ ⎜ ⎟⎜ ⎟⎟ ⎟⎟ ⎜⎜ 2 ⎟⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ = ⎜⎜ (0.9) + ⎜ ⎟ ⎟ ⎜ ⎜⎜x 3(1) ⎟⎟ ⎜⎜−1/ 5 1/10 0 1/10 ⎟⎟⎟ ⎜⎜x 3(0) ⎟⎟ ⎜⎜−11/10⎟⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟⎟ ⎜⎜ ⎟ ⎟ ⎜x (0) ⎟ ⎜⎜ 15 / 8 ⎟⎟⎟ ⎜x (1) ⎟⎟ ⎜⎜ 0 − 3 / 8 1/ 8 0 ⎟ ⎠ ⎠ ⎜⎝ 4 ⎟⎠ ⎝ ⎜⎝ 4 ⎟⎠ ⎝ Mediante iteraciones sucesivas. Nótese que es importante elegir un vector inicial próximo a la solución. Eso hará que la convergencia sea más rápida. ¿Dónde detener el proceso iterativo? El criterio se establece en función del error relativo x (k +1) − x (k ) e= entre dos pasos iterativos, estos es, si, por ejemplo, e ≤ 10−3 se (k +1) x considera que el proceso ha convergido. En este caso la solución del sistema es T x ∞ = (1,2, −1,1) y se alcanza el criterio de convergencia en la iteración 102. (

2

)

Diremos que un método iterativo converge si converge para cualquier vector inicial.

________________________________________________________________ 4 Manuel Díez Minguito

Análisis Numérico: Métodos iterativos de resolución de sistemas de ecuaciones lineales

Método iterativo de Jacobi El método visto en el ejemplo anterior se denomina método de Jacobi. Como hemos visto, la idea es resolver cada ecuación para su respectiva componente, suponiendo que el coeficiente de la misma aii ≠ 0 . En tal caso, n ⎛ a x ⎞ b x i = ∑ ⎜⎜ ij j ⎟⎟⎟ + i (0.10) ⎟ aii ⎜ j =1 ⎝ aii ⎠ j ≠i

para 1 ≤ i ≤ n . Los vectores en cada iteración se generan de la forma siguiente n ⎛ −aij x (jk −1) ⎞⎟ bi (k ) ⎜ ⎟⎟ + ⎜ xi = ∑ ⎜ . ⎟⎠ aii ⎜ aii j =1 ⎝

(0.11)

j ≠i

Para este método, la matriz A del sistema (0.2) suede dividirse en suma de matriz diagonal D , triangular superior U y triangular inferior L , esto es, A = D − L −U 3. De tal forma que de (0.2) se llega a Dx = (L + U )x + b (0.12) o, puesto que hemos supuesto que aii ≠ 0 para todo i , tenemos x = D −1(L + U )x + D −1b .

(0.13)

Escrito de esta forma (ecuación (0.13)) es el método iterativo de Jacobi. No obstante, la expresión (0.13) suele dejarse para tratamientos teóricos, mientras que (0.11) es la que directamente se emplea en computación. Algoritmo [Burden y Faires, 1985]: Método de Jacobi Input n, aij , bi , X 0i , M ,TOL Ouput 0, X 0i k ←1 While k ≤ M k ←1 For i = 1 to n ⎛ ⎞⎟ ⎜⎜ n ⎟⎟ ⎜⎜b − ⎟ a X 0 ⎟ j⎟ ⎜⎜ i ∑ ij ⎟⎟ j =1 ⎜⎜ j ≠i ⎝ ⎠⎟ xi ← aii End If x − X 0 < TOL Then Output k, x i Output Solución determinada con éxito 3

El signo es arbitrario: sólo cambia el signo de los coeficientes de las matrices triangulares.

________________________________________________________________ 5 Manuel Díez Minguito

Análisis Numérico: Métodos iterativos de resolución de sistemas de ecuaciones lineales Exit End

X0 ← x End Output Número máximo de iteraciones superado Output No se he encontrado una solución Exit Los escalares M y TOL representan, respectivamente, el número máximo de iteraciones y la tolerancia admitida. Si está garantizada la convergencia a la solución real, se recomienda tomar como criterio que el error relativo sea menor o igual que TOL . En otro caso, añadir al criterio anterior un número máximo de iteraciones M . Una pequeña modificación que mejora al algoritmo es determinar todas las divisiones antes de entrar en el proceso iterativo.Una forma de interpretar esto es que el sistema original (0.2) sea sustituido por D −1Ax = D −1b donde D = (aii ) es matriz diagonal. % JACOBI ITERATIVE ALGORITHM 7.1 % % To solve Ax = b given an initial approximation x(0). % % INPUT: the number of equations and unknowns n; the entries % A(I,J), 1
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF