metodo jacobiano
TRANSCRIPT
Métodos iterativos para sistemas de
ecuaciones lineales
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
Métodos directos frente a métodos iterativos
DIRECTOSDIRECTOS
❚ Ax =b
❚ x = A\ b
❚ Tamaño moderado
❚ Modifican la
estructura
❚ Error de redondeo
ITERATIVOSITERATIVOS
❚ x = Cx + d
❚ x(k+1) = Cx(k) + d
❚ Tamaño grande
❚ Conservan los ceros
❚ Error de truncamiento
Convergencia y número de operaciones
❚ Coste (para matrices densas) Directos: n3 Iterativos: k.n2
❚ Convergencia
❚ Criterio de parada:
x x tol; p 1,2,...,inf(k+1) (k)
p− < =
Ax b tol; p 1,2,...,inf(k)
p− < =
Ecuación del Calor
❚ Sistema de ec. lin. ❚ Matriz asociada
T (T T ) / 2
T (T T ) / 2
T (T T ) / 2
T (T T ) / 2
1 0 2
2 1 3
3 2 4
n n-1 n+1
= += += +
= +
2 - 1
- 1 2 - 1
- 1 2
- 1
- 1 2
T0 T1 T2 . . . Tn Tn+1
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);
El método de Jacobi
❚ Sistema de ecuaciones lineales
a x
a x
a x
a x
a x a x a x
a x a x a x
a x a x a x
a x a x a x
b
b
b
b
11 1
21 1
31 1
n1 n
12 2 13 3 1n n
22 2 23 3 2n n
32 2 33 3 3n n
n2 2 n3 3 nn n
1
2
3
n
+++
+
+ ++ ++ +
+ +
===
=
Ecuación de punto fijo
x (b
x (b
x (b
x (b
a x a x a x ) / a
a x a x a x ) / a
a x a x a x ) / a
a x a x a x ) / a
1 1
1 2
2 3
n n
12 2 13 3 1n n 11
21 1 23 3 2n n 22
31 1 32 2 3n n 33
n1 1 n2 2 n,n 1 n 1 nn
= −= −= −
= −
− −− −− −
− −
− −
Iteración de Jacobi
x (b
x (b
x (b
x (b
a x a x a x ) / a
a x a x a x ) / a
a x a x a x ) / a
a x a x a x ) / a
1(k+1)
1
2(k+1)
2
3(k+1)
3
n(k+1)
n
12 2(k)
13 3(k)
1n n(k)
11
21 1(k)
23 3(k)
2n n(k)
22
31 1(k)
32 2(k)
3n n(k)
33
n1 1(k)
n2 2(k)
n,n 1 n 1(k)
nn
= −
= −
= −
= −
− −
− −
− −
− −
− −
Expresión matricialResolución con MATLAB
✁U = triu(A,1); L = tril(A,-1);✁d = diag(A);
✁x = (b-(L+U)*x)./d
A L D U
x D (b (L U)x )(k 1) 1 (k)
= + +
= − ++ −
Condición suficiente de convergencia
❚ Matriz estrictamente diagonalmente estrictamente diagonalmente dominantedominante: para i=1,2,...,n
❚ Si A es estrictamente diagonalmente estrictamente diagonalmente dominantedominante, los iterados de Jacobi convergen a la solución del sistema partiendo de cualquier estimación inicial.
|a | |a | |a | |a | |a |ii i1 i,i 1 i,i 1 in> + + + + +− +
Iteración de Gauss-Seidel
x (b
x (b
x (b
x (b
a x a x a x ) / a
a x a x a x ) / a
a x a x a x ) / a
a x a x a x ) / a
1(k+1)
1
2(k+1)
2
3(k+1)
3
n(k+1)
n
12 2(k)
13 3(k)
1n n(k)
11
21 1(k+1)
23 3(k)
2n n(k)
22
31 1(k+1)
32 2(k+1)
3n n(k)
33
n1 1(k+1)
n2 2(k+1)
n,n 1 n 1(k+1)
nn
= −
= −
= −
= −
− −
− −
− −
− −
− −
Expresión matricialResolución con MATLAB
A L D U
(L D)x b Ux
x (L D) (b Ux )
(k 1) (k)
(k 1) 1 (k)
= + +
+ = −
= + −
+
+ −
✁d = diag(A); D = diag(d);
✁U = triu(A,1); L = tril(A,-1);
✁x = (L + D)\(b - U*x)
Método de sobrerrelajación
Gauss Seidel:
x x z
Sobrerrelajacion:
x x wz ; 0 < w < 2
z x x
x (1 w)x wx
i(k+1)
i(k)
i
i(k+1)
i(k)
i
i i(k+1)
i(k)
i(k+1)
i(k)
i(k+1)
−
= +
= +
= −
= − +
xik
zi xik+1
ik+1x
Paso de sobrerrelajación
x (1 )x (b
x (1 )x (b
x (1 )x (b
x (1 )x (b
a x a x a x ) / a
a x a x a x ) / a
a x a x a x ) / a
1(k+1)
1(k)
1
2(k+1)
2(k)
2
3(k+1)
3(k)
3
n(k+1)
n(k)
n
12 2(k)
13 3(k)
1n n(k)
11
21 1(k+1)
23 3(k)
2n n(k)
22
31 1(k+1)
32 2(k+1)
3n n(k)
33
= − + −
= − + −
= − + −
= − + −
− −
− −
− −
ω ω
ω ω
ω ω
ω ω
a x a x a x ) / an1 1(k+1)
n2 2(k+1)
n,n 1 n 1(k+1)
nn− −
− −
Expresión matricialResolución con MATLAB
✁D = diag(diag(A));
✁c = ω*b; C = (1-ω)*D - ω*U✁x = (ωL + D)\(c + C*x)
( L D)x (1 )Dx (b Ux(k+1) (k)ω ω ω+ = − + − (k) )
( L D)x b ((1 )D U)x(k+1) (k)ω ω ω ω+ = + − −
A L D U= + +
Condición suficiente de convergencia
❚ Matriz simétrica definida positivasimétrica definida positiva:
AT = A, xTAx > 0
❚ Si A es simétrica definida positivasimé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.
Ecuación del Calor en un rectángulo
❚ VC = (VN + VS + VE + VW)/4
C
N
EW
S
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; endw = ones(1,p-n);
A = 4*eye(p) ...
- diag(v,1) - diag(v,-1) ...
- diag(w,n) - diag(w,-n);
Resumen
❚ Los métodos iterativos se aplican a matrices grandesgrandes y dispersasdispersas.
❚ El coste por iteración es O(nO(n22)) o menor si se aprovecha la dispersidad
❚ Se espera que converjan en menos de nn pasos.
❚ La matriz ha de cumplir ciertas condiciones para que el método converja.