La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Métodos iterativos para sistemas de ecuaciones lineales

Presentaciones similares


Presentación del tema: "Métodos iterativos para sistemas de ecuaciones lineales"— Transcripción de la presentación:

1 Métodos iterativos para sistemas de ecuaciones lineales
1

2 Métodos iterativos para sistemas de ecuaciones lineales
Introducción Ecuación del Calor Método de Jacobi Método de Gauss-Seidel Método de Sobrerrelajación Problema del Condensador En este capítulo estudiaremos métodos iterativos para resolución de sistemas de ecuaciones lineales. De forma general, estos métodos están basados en el método del punto fijo y el proceso consiste en sustituir de modo iterado en una fórmula. 2

3 Métodos directos frente a métodos iterativos
Ax =b x = A\ b Tamaño moderado Modifican la estructura Error de redondeo ITERATIVOS x = Cx + d x(k+1) = Cx(k) + d Tamaño grande Conservan los ceros Error de truncamiento Los métodos iterativos frente a los directos, no nos aseguran una mejor aproximación, sin embargo son más eficientes cuando trabajamos con matrices de gran tamaño. En la resolución numérica de ecuaciones en derivadas parciales suelen aparecer sistemas de ecuaciones lineales con incluso incógnitas; en estos sistemas la matriz de coeficientes es dispersa; es decir, un alto porcentaje de los elementos de la matriz son iguales a 0. Si hay algún tipo de patrón en los elementos distintos de cero (por ejemplo los sistemas tridiagonales), entonces un método iterativo puede resultar muy eficaz. 3

4 Convergencia y número de operaciones
Coste (para matrices densas) Directos: n3 Iterativos: k.n2 Convergencia Criterio de parada: 4

5 Ecuación del Calor Sistema de ec. lin. Matriz asociada
La ecuación del calor resulta un buen ejemplo para los métodos iterativos, pues da lugar a un sistema tridiagonal. T0 T1 T Tn Tn+1 5

6 Matriz de la Ecuación del Calor con MATLAB
function A = mcalor1(n) v = ones(1,n-1); A = 2*eye(n) - diag(v,1) - diag(v,-1); Introducimos al matriz del calor como función de MatLab. 9

7 El método de Jacobi Sistema de ecuaciones lineales
De todos los métodos iterativos, el de Jacobi es el más fácil de aplicar y entender, sin embargo, no es muy eficiente en cuanto a la obtención de soluciones. Considérese el sistema (Ejemplo 1) que podemos escribir equivalentemente como: El método de Jacobi consiste en usar las fórmulas anteriores como iteración de punto fijo. 6

8 Ecuación de punto fijo 7

9 P0= (x1(0), x2 (0), …, xn (0)), … , Pk=(x1(k), x2(k), …, xn(k))
Iteración de Jacobi En cada paso de al iteración de Jacobi se obtiene un vector con n coordenadas P0= (x1(0), x2 (0), …, xn (0)), … , Pk=(x1(k), x2(k), …, xn(k)) donde la estimación inicial (x1(0), x2(0), …, xn(0)) se debe elegir. Cuando no se tienen pistas sobre la solución se suele tomar xi(0) = bi/aii En el ejemplo anterior, si tomamos P0=(x(0), y(0), z(0))=(1,2,2) En la primera iteración se obtiene P1 = (1.75, 3.375, 3.00) Generando al sucesión de iteraciones de Jacobi s e observa que converge a (2, 4, 3). 8

10 Expresión matricial Resolución con MATLAB
U = triu(A,1); L = tril(A,-1); d = diag(A); x = (b-(L+U)*x)./d Expresemos en forma matricial la fórmula de iteración de Jacobi, y realicemos un programa MatLab para el método de Jacobi. Para ello descomponemos la matriz A como suma de una matriz diagonal, una triangular inferior y una triangular superior. A = L+D+U (L+D+U)x = b Lx+Dx+Ux=b Dx = b-(L+U)x x = D-1(b-(L+U)x) Iteración de Jacobi: x(k+1)= D-1(b-(L+U)x(k)) 9

11 Condición suficiente de convergencia
Matriz estrictamente diagonalmente dominante: para i=1,2,...,n Si A es estrictamente diagonalmente dominante, los iterados de Jacobi convergen a la solución del sistema partiendo de cualquier estimación inicial. Muchas veces el método de iteración de Jacobi no funciona. Veamos un ejemplo de ello reordenando las ecuaciones del ejemplo anterior. (Ejemplo 2) Ahora la fórmula de iteración es y se observa que al sucesión de Jacobi diverge. Obsérvese que la matriz del sistema no es estrictamente diagonal dominante. 10

12 Iteración de Gauss-Seidel
El método de Gauss-Seidel es una modificación del método de Jacobi que acelera la convergencia de éste. Obsérvese que el método de Jacobi genera una sucesión para cada incógnita {x1(k)}, … , {xn(k)}. Puesto que xi(k+1) es probablemente mejor aproximación que xi(k) , en vez de usar xi(k) en el cálculo de xi+1(k+1) usamos xi(k+1) . Aplíquese esta estrategia al ejemplo 1 y comprubese al velocidad de convergencia. El método de Gauss-Seidel recorta sustancialmente el número de iteraciones a realizar para obtener una cierta precisión en la solución. Evidentemente los criterios de convergencia son similares a los de Jacobi. 11

13 Expresión matricial Resolución con MATLAB
d = diag(A); D = diag(d); U = triu(A,1); L = tril(A,-1); x = (L + D)\(b - U*x) Expresemos en forma matricial la fórmula de iteración de Gauss-Seidel, y realicemos un programa MatLab para el método de Gauss-Seidel. Para ello descomponemos la matriz A como suma de una matriz diagonal, una triangular inferior y una triangular superior. A = L+D+U (L+D+U)x = b Lx+Dx+Ux=b (D+L)x = b-Ux x = (D+L)-1(b-Ux) Iteración de Jacobi: x(k+1)= (D+L)-1(b-Ux(k)) 12

14 Método de sobrerrelajación
ik+1 xik zi xik+1 El método de sobrerrelajación reduce el número de iteraciones en los cálculos de soluciones de sistemas lineales por el método de Gauss-Seidel. Se basa en obtener en cada iteración un promedio ponderado (solamente para los elementos del vector anteriores a la posición de cálculo) de la solución del método de Jacobi y de la solución del método de Gauss-Seidel. 13

15 Paso de sobrerrelajación
14

16 Expresión matricial Resolución con MATLAB
D = diag(diag(A)); c = w*b; C = (1-w)*D - w*U x = (wL + D)\(c + C*x) Expresemos en forma matricial la fórmula de iteración de sobrerrelajación, y realicemos un programa MatLab para el método de sobrerrelajación. Para ello descomponemos la matriz A como suma de una matriz diagonal, una triangular inferior y una triangular superior igual que en los anteriores. A = L+D+U w(L+D+U)x = wb con 0<w<2 (wL+D)x=wb+((1-w)D-wU)x) Iteración de Jacobi: x(k+1)= (wL+D)-1(wb+((1-w)D-wU) x(k)) 15

17 Condición suficiente de convergencia
Matriz simétrica definida positiva: AT = A, xTAx > 0 Si A es simétrica definida positiva y 0<w<2, los iterados de SR convergen a la única solución del sistema, partiendo de cualquier estimación inicial. 16

18 Ecuación del Calor en un rectángulo
W E S VC = (VN + VS + VE + VW)/4 17

19 Generación de la matriz con MATLAB
function A = mcalor2(m,n) p = m*n; v = ones(1,p-1); for k=n:n:p-1, v(k) = 0; end w = ones(1,p-n); A = 4*eye(p) ... - diag(v,1) - diag(v,-1) diag(w,n) - diag(w,-n); 9

20 Resumen Los métodos iterativos se aplican a matrices grandes y dispersas. El coste por iteración es O(n2) o menor si se aprovecha la dispersidad Se espera que converjan en menos de n pasos. La matriz ha de cumplir ciertas condiciones para que el método converja. 9


Descargar ppt "Métodos iterativos para sistemas de ecuaciones lineales"

Presentaciones similares


Anuncios Google