métodos numéricos. grado en ingeniería en informática tema...
TRANSCRIPT
ULPGCLogo
Métodos Numéricos.Grado en Ingeniería en Informática
Tema 4. Análisis Numérico Matricial I
Luis Alvarez León
Univ. de Las Palmas de G.C.
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 1 / 29
ULPGCLogo
Contenido
1 Introducción a los sistemas de ecuaciones
2 Resolución de un sistema triangular de ecuaciones
3 El método de Gauss para resolver sistemas de ecuaciones
4 El método de Cholesky para resolver sistemas de ecuaciones
5 Factorización LU de una matriz
6 Estimación del error numérico al resolver un sistema
7 Manejo de matrices y ficheros en C
8 Práctica 4. Implementación del método de Cholesky
9 Método de Crout para sistemas tridiagonales
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 2 / 29
ULPGCLogo
Contenido
1 Introducción a los sistemas de ecuaciones
2 Resolución de un sistema triangular de ecuaciones
3 El método de Gauss para resolver sistemas de ecuaciones
4 El método de Cholesky para resolver sistemas de ecuaciones
5 Factorización LU de una matriz
6 Estimación del error numérico al resolver un sistema
7 Manejo de matrices y ficheros en C
8 Práctica 4. Implementación del método de Cholesky
9 Método de Crout para sistemas tridiagonales
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 3 / 29
ULPGCLogo
Análisis Numérico Matricial IIntroducción
Un sistema lineal de ecuaciones viene dado por la igualdad
Au = b
donde A = (aij) es una matriz de NxN, b = (bi) es un vector de tamaño Nque determina los términos independientes, y u = (ui) es el vector soluciónbuscado.
Ejemplo ⎛⎝ −2 −2 06 18 123 11 7
⎞⎠⎛⎝ u1u2u3
⎞⎠ =
⎛⎝ 0248
⎞⎠⎛⎝ 6 18 12
0 4 40 0 −1
⎞⎠⎛⎝ u1u2u3
⎞⎠ =
⎛⎝ 248−8
⎞⎠Para que el sistema tenga una única solución debe cumplirse : ∣ A ∣∕= 0 ( ∣ A ∣es el determinante.)
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 4 / 29
ULPGCLogo
Análisis Numérico Matricial ICálculo del determinante de A
∣A∣ =1 2 34 5 67 8 9
= 15 68 9
− 24 67 9
+ 34 57 8
Algoritmo recursivo para calcular el determinante de una matriz A de dimensión N:
determinante(A,N)SI N > 1
construimos N matrices A1,A2, .......AN de dimensión N − 1∣A∣ = a1,1⋅ determinante(A1,N − 1) - a1,2⋅ determinante(A2,N − 1) + ..... a1,N ⋅
determinante(AN ,N − 1)ELSE
determinante=A(1,1)END
No de operaciones del algoritmo recursivo determinante(A,N) = N multiplicaciones, N−1sumas y N llamadas a determinantes de dimensión N − 1
Complejidad total del algoritmo recursivo determinante(A,N) = N! operaciones
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 5 / 29
ULPGCLogo
Análisis Numérico Matricial ICálculo del determinante de A
10! = 3 ⋅ 106 50! = 3 ⋅ 1064 100! = 9 ⋅ 10157
Uno de los super-ordenadores más rápidos que existen en la actualidades el BlueGene/L System desarrollado por IBM. Es capaz de realizardel orden de 1021operaciones en coma flotante por segundo. Este or-denador, para calcular un determinante de una matriz de dimensión100 tardaría del orden de 10129 años.
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 6 / 29
ULPGCLogo
Contenido
1 Introducción a los sistemas de ecuaciones
2 Resolución de un sistema triangular de ecuaciones
3 El método de Gauss para resolver sistemas de ecuaciones
4 El método de Cholesky para resolver sistemas de ecuaciones
5 Factorización LU de una matriz
6 Estimación del error numérico al resolver un sistema
7 Manejo de matrices y ficheros en C
8 Práctica 4. Implementación del método de Cholesky
9 Método de Crout para sistemas tridiagonales
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 7 / 29
ULPGCLogo
Análisis Numérico Matricial IResolución de un sistema triangular de ecuaciones
⎛⎜⎜⎜⎜⎝a1,1 a1,2 a1,3 . a1,N0 a2,2 a1,3 . a2,N0 0 . . .. . . aN−1,N−1 aN−1,N0 0 0 . aN,N
⎞⎟⎟⎟⎟⎠⎛⎜⎜⎜⎜⎝
u1u2.
uN−1uN
⎞⎟⎟⎟⎟⎠ =
⎛⎜⎜⎜⎜⎝b1b2.
bN−1bN
⎞⎟⎟⎟⎟⎠
Solución Número de OperacionesuN = bN
aN,N1 división
uN−1 =bN−1−aN−1,NuN
aN−1,N−11 división + 1 suma + 1 multiplicación
uk =bk−
∑Nl=k+1 ak,l ulak,k
k = N − 1, ..,1 1 división + (N-k) sumas + (N-k) multiplicacionesNúmero total de operaciones N divis. + (1+2+..+N-1) sumas y multiplic.
1 + 2 + .....+ N − 1 =N2(N − 1) = O(N2)
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 8 / 29
ULPGCLogo
Análisis Numérico Matricial IResolución de un sistema triangular de ecuaciones
⎛⎜⎜⎜⎜⎝a1,1 0 0 . 0a2,1 a2,2 0 . 0. . . . .
aN−1,1 . . aN−1,N−1 0aN,1 aN,2 aN,3 . aN,N
⎞⎟⎟⎟⎟⎠⎛⎜⎜⎜⎜⎝
u1u2u3.
uN
⎞⎟⎟⎟⎟⎠ =
⎛⎜⎜⎜⎜⎝b1b2b3.
bN
⎞⎟⎟⎟⎟⎠Solución:
u1 = b1a1,1
u2 =b2−a2,1u1
a2,2
uk =bk−
∑k−1l=1 ak,l ul
ak,kk = 2, ..,N
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 9 / 29
ULPGCLogo
Contenido
1 Introducción a los sistemas de ecuaciones
2 Resolución de un sistema triangular de ecuaciones
3 El método de Gauss para resolver sistemas de ecuaciones
4 El método de Cholesky para resolver sistemas de ecuaciones
5 Factorización LU de una matriz
6 Estimación del error numérico al resolver un sistema
7 Manejo de matrices y ficheros en C
8 Práctica 4. Implementación del método de Cholesky
9 Método de Crout para sistemas tridiagonales
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 10 / 29
ULPGCLogo
Análisis Numérico Matricial IMétodo de Gauss.Objetivo: Convertir el sistema en un sistema triangular
⎛⎝ −2 −2 06 18 123 11 7
⎞⎠⎛⎝ u1u2u3
⎞⎠ =
⎛⎝ 0248
⎞⎠La descomposición de la matriz A se divide en las siguientes fases:⎛⎝ −2 −2 0
6 18 123 11 7
⎞⎠⎛⎝ u1u2u3
⎞⎠ =
⎛⎝ 0248
⎞⎠ −−−−−→pivoteo
⎛⎝ 6 18 12−2 −2 03 11 7
⎞⎠⎛⎝ u1u2u3
⎞⎠ =
⎛⎝ 2408
⎞⎠⎛⎝ 6 18 12−2 −2 03 11 7
⎞⎠⎛⎝ u1u2u3
⎞⎠ =
⎛⎝ 2408
⎞⎠ −−−−−−−−−→ceros 1a col .
⎛⎝ 6 18 120 4 40 2 1
⎞⎠⎛⎝ u1u2u3
⎞⎠ =
⎛⎝ 248− 4
⎞⎠⎛⎝ 6 18 12
0 4 40 2 1
⎞⎠⎛⎝ u1u2u3
⎞⎠ =
⎛⎝ 248−4
⎞⎠ −−−−−−−−−→ceros 2a col .
⎛⎝ 6 18 120 4 40 0 − 1
⎞⎠⎛⎝ u1u2u3
⎞⎠ =
⎛⎝ 248− 8
⎞⎠
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 11 / 29
ULPGCLogo
Análisis Numérico Matricial IMétodo de Gauss. Recuento de operaciones
⎛⎜⎜⎜⎜⎝a1,1 a1,2 a1,3 . a1,N
a2,10 a2,2 a1,3 . a2,N.0 .0 . . ..0 . . aN−1,N−1 aN−1,N
aN,10 aN,20 . aN,N−10 aN,N
⎞⎟⎟⎟⎟⎠⎛⎜⎜⎜⎜⎝
u1u2u3.
uN
⎞⎟⎟⎟⎟⎠ =
⎛⎜⎜⎜⎜⎝b1b2b3.
bN
⎞⎟⎟⎟⎟⎠Recuento de Operaciones
Convertir en 0 el elemento a2,1 1 división + N multiplicaciones y sumasConvertir en cero a2,1,a3,1, ...aN,1 N-1 divisiones + N(N-1) multiplicaciones y sumasConvertir en cero a3,2,a4,2, ...aN,2 N-2 divisiones + (N-1)(N-2) multiplicaciones y sumasConvertir en cero aN,N−1 1 divisiones + 2 multiplicaciones y sumasTotal Operaciones : (1+2+..+N-1) divisiones
+ (2+6+...+N(N-1)) multiplicaciones y sumas
2 + 6 + ...+ N(N − 1) =N3 − N
3= O(N3)
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 12 / 29
ULPGCLogo
Contenido
1 Introducción a los sistemas de ecuaciones
2 Resolución de un sistema triangular de ecuaciones
3 El método de Gauss para resolver sistemas de ecuaciones
4 El método de Cholesky para resolver sistemas de ecuaciones
5 Factorización LU de una matriz
6 Estimación del error numérico al resolver un sistema
7 Manejo de matrices y ficheros en C
8 Práctica 4. Implementación del método de Cholesky
9 Método de Crout para sistemas tridiagonales
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 13 / 29
ULPGCLogo
Análisis Numérico Matricial IMétodo de Cholesky. Ejemplo descomposición de matriz
A =
⎛⎝ 1 1 41 5 64 6 26
⎞⎠ =
⎛⎝ b11 0 0b21 b22 0b31 b32 b33
⎞⎠⎛⎝ b11 b21 b310 b22 b320 0 b33
⎞⎠⎛⎝ 1 1 4
1 5 64 6 26
⎞⎠ =
⎛⎝ b211 b11b21 b11b31
b11b21 b221 + b2
22 b21b31 + b22b32b11b31 b21b31 + b22b32 b2
31 + b232 + b2
33
⎞⎠
b211 = 1 −→ b11 = 1 b11b21 = 1 −→ b21 = 1
b11= 1
b11b31 = 4 −→ b31 = 4b11
= 4 b221 + b2
22 = 5 −→ b22 = ±√(
5− b221
)=√
(4) = 2
b21b31 + b22b32=6 −→ b32 = 6−b21b31b22
= 6−42 = 1
b231 + b2
32 + b233 = 26 −→ b33 =
√(26− b2
31 − b232
)=√(
26− 16− 12)= 3
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 14 / 29
ULPGCLogo
Análisis Numérico Matricial IMétodo de Cholesky. Algoritmo general
El algoritmo para descomponer A = B ⋅ Bt es el siguiente
Para i = 0, ...,N − 1
bi,i =
√(ai,i −
∑i−1k=0 b2
i,k
)Para j = i + 1, ...,N − 1
bj,i =1
bi,i
(aj,i −
∑i−1k=0 bj,kbi,k
)Fin Para j
Fin Para i
Una vez calculada B, resolvemos el sistema Au = B ⋅ Btu = b descomponiéndoloen los siguientes sistemas triangulares :
Bz = b
Btu = z
Ambos sistemas se resuelvan rápidamente haciendo un remonte y un descenso.Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 15 / 29
ULPGCLogo
Contenido
1 Introducción a los sistemas de ecuaciones
2 Resolución de un sistema triangular de ecuaciones
3 El método de Gauss para resolver sistemas de ecuaciones
4 El método de Cholesky para resolver sistemas de ecuaciones
5 Factorización LU de una matriz
6 Estimación del error numérico al resolver un sistema
7 Manejo de matrices y ficheros en C
8 Práctica 4. Implementación del método de Cholesky
9 Método de Crout para sistemas tridiagonales
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 16 / 29
ULPGCLogo
Análisis Numérico Matricial IFactorización LU de una matriz.
La factorización LU es un método parecido al de Cholesky que sirvepara matrices no-simétricas. Busca una descompocisión de la forma :
A =
⎛⎝ 1 1 42 5 61 1 26
⎞⎠ =
⎛⎝ 1 0 0l21 1 0l31 l32 1
⎞⎠⎛⎝ u11 u21 u310 u22 u320 0 u33
⎞⎠
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 17 / 29
ULPGCLogo
Análisis Numérico Matricial IFactorización LU. Algoritmo general
El algoritmo para descomponer A = L ⋅ U es el siguiente
Inicializar a 0 todos los elementos de L y U.Para i = 0, ...,N − 1
li,i = 1ui,i = ai,i −
∑i−1k=0 li,kuk ,i
Para j = i + 1, ...,N − 1ui,j = ai,j −
∑i−1k=0 li,kuk ,j
lj,i = 1ui,i
(aj,i −
∑i−1k=0 lj,kuk ,i
)Fin Para j
Fin Para i
Una vez calculadas L,U, resolvemos el sistema Au = L⋅U ⋅u = b descomponiéndoloen los siguientes sistemas triangulares :
Lz = b
Uu = z
Ambos sistemas se resuelvan rápidamente haciendo un remonte y un descenso.
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 18 / 29
ULPGCLogo
Análisis Numérico Matricial IMétodo de Cholesly. Condiciones necesarias para poder aplicar el método
Las condiciones para poder aplicar el método de Cholesky son las siguientes :
La matriz A debe ser simétrica ai,j = aj,iLa matriz A debe ser definida positiva
x tAx > 0 para todo vector x ∕= 0todos los autovalores de A son positivosLos menores principales de la matriz son positivos
a1,1 a1,2 a1,3 . a1,Na2,1 a2,2 a2,3 . a2,Na3,1 a3,2 a3,3 . a3,N. . . . .
aN,1 aN,2 aN,3 . aN,N
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 19 / 29
ULPGCLogo
Contenido
1 Introducción a los sistemas de ecuaciones
2 Resolución de un sistema triangular de ecuaciones
3 El método de Gauss para resolver sistemas de ecuaciones
4 El método de Cholesky para resolver sistemas de ecuaciones
5 Factorización LU de una matriz
6 Estimación del error numérico al resolver un sistema
7 Manejo de matrices y ficheros en C
8 Práctica 4. Implementación del método de Cholesky
9 Método de Crout para sistemas tridiagonales
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 20 / 29
ULPGCLogo
Análisis Numérico Matricial IEstimación del error de un método para resolver sistemas.
Para estimar la fiabilidad de la solución numérica de un sistema de ecuaciones,haremos lo siguiente: dada una matriz A, un vector de términos independientesb y un vector solución u, calculado utilizando alguna técnica numérica, si lasolución es perfecta entonces Au − b = 0. Ahora bien, esto no suele suceder,porque los errores de redondeo y de cálculo producen que esta estimación nosea exacta. Para estimar el error cometido al resolver el sistema utilizaremos laexpresión siguiente, donde e es el vector e = Au − b :
ErrorSistema =1N
∑ ∣ei ∣∣bi ∣+ �
donde N es la dimensión del sistema y ErrorSistema representa el error relativomedio al resolver el sistema. En el denominador se añade � > 0 para evitarlas posibles divisiones por 0. Cuanto más pequeño sea ErrorSistema, mejoraproximada estará la solución del sistema.
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 21 / 29
ULPGCLogo
Contenido
1 Introducción a los sistemas de ecuaciones
2 Resolución de un sistema triangular de ecuaciones
3 El método de Gauss para resolver sistemas de ecuaciones
4 El método de Cholesky para resolver sistemas de ecuaciones
5 Factorización LU de una matriz
6 Estimación del error numérico al resolver un sistema
7 Manejo de matrices y ficheros en C
8 Práctica 4. Implementación del método de Cholesky
9 Método de Crout para sistemas tridiagonales
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 22 / 29
ULPGCLogo
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 23 / 29
ULPGCLogo
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 24 / 29
ULPGCLogo
Contenido
1 Introducción a los sistemas de ecuaciones
2 Resolución de un sistema triangular de ecuaciones
3 El método de Gauss para resolver sistemas de ecuaciones
4 El método de Cholesky para resolver sistemas de ecuaciones
5 Factorización LU de una matriz
6 Estimación del error numérico al resolver un sistema
7 Manejo de matrices y ficheros en C
8 Práctica 4. Implementación del método de Cholesky
9 Método de Crout para sistemas tridiagonales
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 25 / 29
ULPGCLogo
Análisis Numérico Matricial IPráctica 4. Método de Cholesky
Hay que analizar los resultados obtenidos cambiando la precisión de la aritmética. Hayque resolver los sistemas que figuran en los apuntes y los sistemas de mayor dimensiónque se generan utilizando el proyecto an_generacion_datos.dev⎛⎝ 1 1 4
1 5 64 6 26
⎞⎠⎛⎝ xyz
⎞⎠ =
⎛⎝ 61236
⎞⎠ ⎛⎝ 1 1 41 1 44 4 17
⎞⎠⎛⎝ xyz
⎞⎠ =
⎛⎝ 61236
⎞⎠⎛⎝ 1 1 4
1 5 64 6 17
⎞⎠⎛⎝ xyz
⎞⎠ =
⎛⎝ 61236
⎞⎠ ⎛⎝ 2 −1 0−1 2 −10 −1 −4
⎞⎠⎛⎝ xyz
⎞⎠ =
⎛⎝ 10−5
⎞⎠
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 26 / 29
ULPGCLogo
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 27 / 29
ULPGCLogo
Contenido
1 Introducción a los sistemas de ecuaciones
2 Resolución de un sistema triangular de ecuaciones
3 El método de Gauss para resolver sistemas de ecuaciones
4 El método de Cholesky para resolver sistemas de ecuaciones
5 Factorización LU de una matriz
6 Estimación del error numérico al resolver un sistema
7 Manejo de matrices y ficheros en C
8 Práctica 4. Implementación del método de Cholesky
9 Método de Crout para sistemas tridiagonales
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 28 / 29
ULPGCLogo
Análisis Numérico Matricial IMétodo de Crout para matrices tridiagonales
Si A es una matriz tridiagonal se puede descomponer de la forma siguiente:⎛⎜⎜⎝a0 b0 . 0c0 a1 . 00 . . bN−20 . cN−2 aN−1
⎞⎟⎟⎠ =
⎛⎜⎜⎝l0 0 . 0
m0 l1 . 00 . . 00 . mN−2 lN−1
⎞⎟⎟⎠⎛⎜⎜⎝
1 u0 . 00 1 . 00 . . uN−20 . 0 1
⎞⎟⎟⎠Los vectores mi , li, y ui se calculan utilizando el esquema:
l0 = a0u0 = b0/l0Para i = 1, ..,N − 2
mi−1 = ci−1 La complejidad del método de Crout es O(N1)li = ai −mi−1ui−1ui = bi/li
Fin ParamN−2 = cN−2lN−1 = aN−1 −mN−2uN−2
A partir de la descomposición se resuelven los 2 sistemas triangulares asocia-dos como en Cholesky mediante un descenso y un remonte
Luis Alvarez León () Métodos Numéricos Univ. de Las Palmas de G.C. 29 / 29