Resolución numérica de sistemas de ecuaciones lineales 2 ...
Resolución numérica de sistemas de ecuaciones lineales 2 ...
Resolución numérica de sistemas de ecuaciones lineales 2 ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Resolución numérica <strong>de</strong> <strong>sistemas</strong> <strong>de</strong> <strong>ecuaciones</strong><br />
<strong>lineales</strong><br />
2 Métodos directos<br />
2.1 Eliminación Gaussiana: factorización LU.<br />
2.2 Otras factorizaciones: factorización LDU, <strong>de</strong> Crout y <strong>de</strong><br />
Cholesky.<br />
2.3 Normas matriciales. Condicionamiento y estabilidad.<br />
Empecemos repasando el concepto <strong>de</strong> norma en R n .<br />
Definición 1 Llamaremos norma en R n a toda aplicación ‖·‖ : R n −→ R + verificando<br />
1. ‖x‖ 0, ∀x ∈ R n<br />
2. ‖x‖ =0⇐⇒ x =0<br />
3. ‖αx‖ = |α| ‖x‖ ∀α ∈ R, ∀x ∈ R n<br />
4. ‖x + y‖ ‖x‖ + ‖y‖, ∀x, y ∈ R n<br />
Como ejemplos importantes, a<strong>de</strong>más <strong>de</strong> la norma Euclí<strong>de</strong>a, tenemos<br />
( ∑<br />
• Norma Euclí<strong>de</strong>a: ‖x‖ 2 = √ n n∑<br />
x 2 i =<br />
i=1<br />
i=1<br />
• Norma infinito: ‖x‖ ∞ = max i |x i |<br />
x 2 i<br />
) 1/2<br />
• Norma uno: ‖x‖ 1 =<br />
n∑<br />
|x i |<br />
i=1<br />
Ahora, <strong>de</strong> forma análoga exten<strong>de</strong>mos la <strong>de</strong>finición para introducir el concepto <strong>de</strong> norma<br />
en el espacio vectorial <strong>de</strong> las matrices M n×m .
Definición 2 Llamaremos norma matricial en M n×m a toda aplicación ‖·‖ : M n×m −→<br />
R + verificando<br />
1. ‖A‖ 0, ∀A ∈M n×m<br />
2. ‖A‖ =0⇐⇒ A =0<br />
3. ‖αA‖ = |α| ‖A‖ ∀α ∈ R, ∀A ∈M n×m<br />
4. ‖A + B‖ ‖A‖ + ‖B‖, ∀A, B ∈M n×m<br />
5. ‖AB‖ ‖A‖‖B‖, ∀A, B ∈M n×m<br />
Notemos que con respecto a la <strong>de</strong>finición <strong>de</strong> norma en R n hemos añadido la última<br />
condición. Teniendo en cuenta que en la resolución <strong>de</strong> <strong>sistemas</strong> <strong>de</strong> <strong>ecuaciones</strong> <strong>lineales</strong><br />
y en otros problemas básicos una <strong>de</strong> las operaciones elementales es el producto <strong>de</strong> una<br />
matriz por un vector, operación que, cuando es posible realizarla <strong>de</strong>bido a las dimensiones<br />
<strong>de</strong> ambos factores, el resultado es un vector. Por tanto po<strong>de</strong>mos calcular su norma, la<br />
cual sería interesante compararla con la norma <strong>de</strong> los factores.<br />
Definición 3 Diremos que una norma vectorial ‖·‖ v en R n y una norma matricial ‖·‖ M<br />
en M n×m son compatibles si<br />
‖Ax‖ v ‖A‖ M ‖x‖ v , ∀x ∈ R n , ∀A ∈M n×m .<br />
Antes <strong>de</strong> dar algún ejemplo <strong>de</strong> normas matriciales <strong>de</strong>finiremos el concepto <strong>de</strong> radio espectral<br />
<strong>de</strong> una matriz cuadrada.<br />
Definición 4 Llamaremos radio espectral ρ(A) <strong>de</strong> una matriz cuadrada A ∈M n×n a<br />
ρ(A) = max<br />
1in {|λ 1|, |λ 2 |, . . . , |λ n |}<br />
siendo {λ 1 ,λ 2 , . . . , λ n } el conjunto <strong>de</strong> los valores propios <strong>de</strong> A.<br />
Vamos a resaltar tres normas matriciales compatibles con las normas vectoriales comentadas<br />
anteriormente.<br />
• Norma dos (norma espectral):<br />
‖A‖ 2 = ρ(A T A) 1/2 ,<br />
que es una norma compatible (e inducida) por la norma Euclí<strong>de</strong>a vectorial<br />
• Norma infinito:<br />
{ m<br />
}<br />
∑<br />
‖A‖ ∞ = max |a ij | ,<br />
1in<br />
que es una norma compatible (e inducida) por la norma infinito vectorial<br />
j=1
• Norma uno:<br />
}<br />
{ n∑<br />
‖A‖ 1 = max<br />
1jm<br />
i=1<br />
|a ij |<br />
,<br />
que es una norma compatible (e inducida) por la norma uno vectorial.<br />
Ejemplo 5 Sea la matriz<br />
entonces<br />
⎛<br />
A = ⎝<br />
1 2 3 4<br />
2 1 7 1<br />
−2 −1 −7 0<br />
⎞<br />
⎠<br />
‖A‖ 2 = (max{0, 0.0709, 14.9011, 124.0280}) 1/2 = √ 124.0280 = 11.1368,<br />
‖A‖ ∞ = max{1 + 2 + 3 + 4, 2 + 1 + 7 + 1, 2 + 1 + 7 + 0} = 11,<br />
‖A‖ 1 = max{1+2+2, 2 + 1 + 1, 3+7+7, 4 + 1 + 0} = 17.<br />
Una vez tenemos <strong>de</strong>finidos los conceptos <strong>de</strong> normas matriciales y vectoriales po<strong>de</strong>mos<br />
estudiar elementalmente diversos conceptos relacionados con la estabilidad <strong>de</strong> la resolución<br />
numérica <strong>de</strong> <strong>sistemas</strong> <strong>de</strong> <strong>ecuaciones</strong> <strong>lineales</strong>. Así, dado el sistema <strong>de</strong> <strong>ecuaciones</strong> <strong>lineales</strong><br />
escrito en forma matricial<br />
Ax= b, A ∈M n×n , x, b ∈ R n , (1)<br />
con A invertible <strong>de</strong> modo que el sistema posea una única solución dada por A −1 b. Ahora<br />
nos po<strong>de</strong>mos plantear qué es lo que suce<strong>de</strong> cuando modificamos ligeramente el segundo<br />
miembro <strong>de</strong> la ecuación, es <strong>de</strong>cir, el vector b. Así nuestro nuevo sistema será<br />
A ̂x = ̂b. (2)<br />
La pregunta que nos hacemos es: ¿se parecen las dos soluciones x y ̂x<br />
‖x − ̂x‖ = ‖A −1 b − A −1̂b‖ = ‖A −1 (b − ̂b)‖ ‖A −1 ‖‖b − ̂b‖.<br />
Notemos que en las operaciones anteriores hemos supuesto que las normas matriciales y<br />
vectoriales son compatibles. Nos interesa saber no sólo la distancia entre las dos soluciones,<br />
sino también la diferencia relativa para darnos una i<strong>de</strong>a <strong>de</strong> la magnitud <strong>de</strong> la diferencia<br />
entre ambas, es <strong>de</strong>cir ‖x − ̂x‖/‖x‖. Operando<br />
‖x − ̂x‖<br />
‖x‖<br />
1<br />
‖x‖ ‖A−1 ‖‖b − ̂b‖ = 1<br />
‖b − ̂b‖<br />
‖x‖ ‖A−1 ‖‖b‖<br />
‖b‖<br />
= 1<br />
‖b − ̂b‖<br />
‖x‖ ‖A−1 ‖‖Ax‖<br />
‖b‖<br />
1<br />
‖b − ̂b‖<br />
‖x‖ ‖A−1 ‖‖A‖<br />
‖b‖ .<br />
El resultado anterior nos dice que la distancia relativa entre ambas soluciones es menor<br />
que la distancia relativa entre ambos segundos miembros multiplicado por un factor<br />
κ(A) =‖A −1 ‖‖A‖
que se <strong>de</strong>nomina número <strong>de</strong> condición <strong>de</strong> la matriz A. Este número nos indica si el<br />
sistema se comporta bien con respecto a pequeñas perturbaciones <strong>de</strong> los datos <strong>de</strong>l sistema<br />
lineal. Si κ(A) es gran<strong>de</strong> el sistema lineal está mal condicionado y cualquier método <strong>de</strong><br />
numérico <strong>de</strong> resolución nos pue<strong>de</strong> dar muchos problemas y respuestas totalmente erróneas,<br />
por contra, si κ(A) es pequeño entonces el sistema está bien condicionado y no planteará<br />
problemas <strong>de</strong> estabilidad a la hora <strong>de</strong> resolverlo.<br />
Ejemplo 6 Sea el sistema lineal Ax = b con<br />
A =<br />
⎛<br />
⎜<br />
⎝<br />
10 7 8 7<br />
7 5 6 5<br />
8 6 10 9<br />
7 5 9 10<br />
⎞<br />
⎟<br />
⎠ ,<br />
⎛<br />
b = ⎜<br />
⎝<br />
32<br />
23<br />
33<br />
31<br />
⎞<br />
⎟<br />
⎠<br />
cuya solución exacta es x = (1, 1, 1, 1). Si ahora en lugar <strong>de</strong> b usamos el vector ̂b =<br />
(32.1, 22.9, 33.1, 30.9) T entonces la solución es ̂x = (9.2, −12.6, 4.5, −1.1). Notemos que<br />
la perturbación en b verifica ‖b − ̂b‖ 1 /‖b‖ 1 =0.0034 y ‖b − ̂b‖ ∞ /‖b‖ ∞ =8.4034 · 10 −4<br />
mientras que ‖x − ̂x‖ 1 /‖x‖ 1 =6.85 y ‖x − ̂x‖ ∞ /‖x‖ ∞ = 13.6. Es <strong>de</strong>cir, un pequeño<br />
cambio en el segundo miembro ha dado lugar a una solución completamente diferente.<br />
Análogamente, si perturbamos la matriz A <strong>de</strong>l sistema<br />
à =<br />
⎛<br />
⎜<br />
⎝<br />
el resultado será ˜x =(−81, 137, −34, 22).<br />
10 7 8.1 7.2<br />
7.08 5.04 6 5<br />
8 5.98 9.89 9<br />
6.99 4.99 9 9.98<br />
Si calculamos el número <strong>de</strong> condición para la matriz A <strong>de</strong>l sistema tendremos<br />
κ(A) 1 = κ(A) ∞ = 4488.<br />
⎞<br />
⎟<br />
⎠ ,<br />
2.4 Estrategias <strong>de</strong> pivotaje: pivote parcial y total.<br />
Durante el proceso <strong>de</strong> resolución <strong>de</strong> un sistema lineal mediante el método <strong>de</strong> Gauss po<strong>de</strong>mos<br />
encontrarnos con algún pivote nulo, entonces hemos <strong>de</strong> permutar la fila correspondiente<br />
con otra cuyo pivote no sea nulo. Esta operación, la <strong>de</strong> permutar filas es interesante<br />
realizarla no sólo cuando se anula algún pivote sino también cuando el pivote es sensiblemente<br />
inferior en tamaño a los elementos situados por <strong>de</strong>bajo en la misma columna.<br />
Ejemplo 7 Sea el sistema lineal dado por<br />
10 −6 x +y =2<br />
x +y =0<br />
}
cuya solución es (x, y) = (−2000000/999999, 2000000/999999) ≈ (−2.000002, 2.000002).<br />
Si ahora planteamos el método <strong>de</strong> Gauss realizando las operaciones con 4 dígitos <strong>de</strong> precisión<br />
tendremos<br />
( 10<br />
−6<br />
1 2<br />
1 1 0<br />
)<br />
( )<br />
F 2 +(−10 6 ) F 1 −→F 2 10<br />
−6<br />
1 2<br />
−−−−−−−−−−−−−−−→<br />
0 1− 10 6 −2 · 10 6 .<br />
Como realizamos las operaciones con 4 dígitos tendremos que 1 − 10 6 ≈−10 6 y así el<br />
sistema se convierte en<br />
10 −6 x +y =2<br />
−10 6 y = −2 · 10 6 }<br />
cuya solución es (x, y) = (0, 2).<br />
El punto crucial ha sido escoger el pivote a (0)<br />
11 = 10 −6 , el cual es muy inferior en valor<br />
absoluto al elemento que se encuentra por <strong>de</strong>bajo <strong>de</strong> él.<br />
Este problema se pue<strong>de</strong> ilustrar geométricamente. El sistema inicial se pue<strong>de</strong> ver como la<br />
búsqueda <strong>de</strong>l punto <strong>de</strong> intersección entre dos rectas<br />
r 1 ≡ 10 −6 x +y =2<br />
r 2 ≡ x +y =0<br />
cuya gráfica aparece a la izquierda en la figura 2.<br />
}<br />
5<br />
2.0001<br />
'<br />
r 2<br />
y<br />
0<br />
r 1<br />
r 2<br />
r 1<br />
y<br />
2<br />
'<br />
-5<br />
5 0 5<br />
x<br />
1.9999<br />
5 0 5<br />
x<br />
Figure 1: Izquierda: sistema lineal original visto como la intersección <strong>de</strong> dos rectas. Derecha:<br />
sistema lineal <strong>de</strong>spués <strong>de</strong> aplicar Gauss con 4 dígitos <strong>de</strong> precisión visto como la intersección <strong>de</strong><br />
dos rectas.<br />
En la misma figura representamos a la <strong>de</strong>recha el sistema lineal resultante <strong>de</strong> aplicar el<br />
método <strong>de</strong> Gauss con 4 dígitos <strong>de</strong> precisión.<br />
}<br />
r 1 ′ ≡ 10 −6 x +y =2<br />
r 2 ′ ≡ 10 6 y =2· 10 6<br />
Notemos que a pesar <strong>de</strong> que en el sistema original el punto <strong>de</strong> corte es evi<strong>de</strong>nte no suce<strong>de</strong><br />
lo mismo en el transformado, don<strong>de</strong> ambas rectas son casi paralelas y por tanto es muy<br />
difícil precisar dón<strong>de</strong> se encuentra la intersección <strong>de</strong> ambas rectas.
En cambio, si escogemos como pivote el elemento <strong>de</strong> mayor valor absoluto <strong>de</strong>ntro <strong>de</strong> la<br />
primera columna y permutamos las filas tendremos<br />
( 10<br />
−6<br />
1 2<br />
1 1 0<br />
)<br />
( )<br />
(<br />
F 1 −→F<br />
−−−−−−−−→<br />
2 1 1 0 F 2 +(−10 −6 ) F 1 −→F 2 1 1 0<br />
−−−−−−−−−−−−−−−→<br />
10 −6 1 2<br />
0 1− 10 −6 2<br />
)<br />
.<br />
Y realizando las operaciones con 4 dígitos tendremos que 1 − 10 −6 ≈ 1 y así el sistema se<br />
convierte en<br />
}<br />
r 1 ′′ ≡ x +y =0<br />
r 2 ′′ ≡ y =2<br />
cuya solución es (x, y) = (−2, 2) que sí que es la solución <strong>de</strong>l sistema original con 4 dígitos.<br />
Gráficamente las dos rectas <strong>de</strong>l nuevo sistema lineal vendrán dadas por la figura . En<br />
dicha figura se pue<strong>de</strong> observar como ambas rectas <strong>de</strong>terminan <strong>de</strong> forma clara el punto <strong>de</strong><br />
corte.<br />
5<br />
5<br />
r 2<br />
''<br />
r 2<br />
y<br />
0<br />
r 1<br />
y<br />
0<br />
''<br />
r 1<br />
-5<br />
5 0 5<br />
x<br />
-5<br />
5 0 5<br />
x<br />
Figure 2: Izquierda: sistema lineal original visto como la intersección <strong>de</strong> dos rectas. Derecha:<br />
sistema lineal <strong>de</strong>spués permutar las filas y <strong>de</strong> aplicar Gauss con 4 dígitos <strong>de</strong> precisión visto como<br />
la intersección <strong>de</strong> dos rectas.<br />
Del ejemplo anterior po<strong>de</strong>mos <strong>de</strong>ducir que hay que permutar las filas no sólo cuando se<br />
anula el pivote correspondiente a (k−1)<br />
kk<br />
, sino cuando existe algún elemento a (k−1)<br />
jk<br />
con j > k<br />
tal que |a (k−1)<br />
kk<br />
| < |a (k−1)<br />
jk<br />
|. Es <strong>de</strong>cir, lo que vamos a buscar es el elemento a (k−1)<br />
jk<br />
con<br />
j k con mayor valor absoluto y permutaremos dicha fila con la k-ésima. De este modo<br />
tendremos que los multiplicadores en el método <strong>de</strong> Gauss una vez realizada la permutación<br />
verifican<br />
|l ik | = |a(k−1) ik<br />
|<br />
1, ∀i, k.<br />
|a (k−1)<br />
kk<br />
|<br />
Esta técnica se <strong>de</strong>nomina pivote parcial. De forma matricial lo que hay que introducir es<br />
una matriz elemental <strong>de</strong> permutación
⎛<br />
P ij =<br />
⎜<br />
⎝<br />
1<br />
. . .<br />
1<br />
0 1<br />
1 0<br />
1<br />
⎞<br />
⎟<br />
⎠<br />
−→ fila i-ésima<br />
−→ fila j-ésima<br />
.. .<br />
1<br />
De esta forma aparecerán entre las matrices M (k) <strong>de</strong> los multiplicadores <strong>de</strong> la eliminación<br />
Gaussiana matrices <strong>de</strong> permutación<br />
M (n−1) . . . M (j) P js M (j−1) . . . M (i) P ir M (i−1) . . . M (1) A = U.<br />
Notemos que P −1<br />
ij<br />
= P ij , así<br />
A =(M (1) ) −1 . . . P ir (M (i) ) −1 ... (M (j−1) ) −1 P js (M (j) ) −1 . . . (M (n−1) ) −1 U = M U.<br />
Notemos que si ha habido permutaciones la matriz M no es una matriz triangular inferior.<br />
Para tener una <strong>de</strong>scomposición LU realizamos en primer lugar las permutaciones y a<br />
continuación la <strong>de</strong>scomposición LU <strong>de</strong> la matriz permutada. Es <strong>de</strong>cir,<br />
P ir . . . P js A = PA=(˜M (1) ) −1 (˜M (2) ) −1 . . . (˜M (n−1) ) −1 Ũ = L Ũ.<br />
don<strong>de</strong> las matrices ˜M (i) hay que calcularlas partiendo <strong>de</strong> la nueva matriz original PA(se<br />
obtienen mediante permutaciones <strong>de</strong> filas <strong>de</strong> las matrices M (i) ). La ventaja es que ahora<br />
no habrá que realizar permutaciones <strong>de</strong> filas y tendremos una <strong>de</strong>scomposición LU.<br />
Ejemplo 8 Sea la matriz<br />
⎛<br />
⎜<br />
⎝<br />
1 2 3 4<br />
4 5 2 8<br />
2 5 3 1<br />
2 2 2 2<br />
⎞<br />
⎟<br />
⎠ .
Si realizamos el proceso <strong>de</strong> la eliminación Gaussiana obtendremos<br />
⎛<br />
⎜<br />
⎝<br />
1 2 3 4<br />
4 5 2 8<br />
2 5 3 1<br />
2 2 2 2<br />
⎛<br />
F 2 ←→F<br />
−−−−−→<br />
3<br />
⎜<br />
⎝<br />
⎞ ⎛<br />
⎟<br />
⎠ −−−−−→ F 1←→F 2<br />
⎜<br />
⎝<br />
4 5 2 8<br />
0 2.5 2 −3<br />
0 0.75 2.5 2<br />
0 −0.5 1 −2<br />
⎜<br />
⎝<br />
⎛<br />
F 4 −(1.4/1.9) F 3 →F 4<br />
−−−−−−−−−−−−−−→<br />
4 5 2 8<br />
1 2 3 4<br />
2 5 3 1<br />
2 2 2 2<br />
⎞<br />
⎟<br />
⎠<br />
⎞<br />
⎟<br />
⎠<br />
F 2 +(−1/4) F 1 → F 2<br />
F 3 +(−2/4) F 1 → F 3<br />
F 4 +(−2/4) F 1 → F 4<br />
−−−−−−−−−−−−−−→<br />
F 3 − (0.75/2.5) F 2 → F 3<br />
F 4 − (−0.5/2.5) F 2 → F 4<br />
−−−−−−−−−−−−−−−−−→<br />
4 5 2 8<br />
0 2.5 2 −3<br />
0 0 1.9 2.9<br />
0 0 0 −4.7368<br />
Que puesto <strong>de</strong> forma matricial será<br />
siendo<br />
M (1) =<br />
M (3) =<br />
⎛<br />
⎜<br />
⎝<br />
⎛<br />
⎜<br />
⎝<br />
1 0 0 0<br />
−1/4 1 0 0<br />
−2/4 0 1 0<br />
−2/4 0 0 1<br />
⎞<br />
⎟<br />
⎠<br />
M (3) M (2) P 23 M (1) P 12 A = U<br />
⎞<br />
1 0 0 0<br />
0 1 0 0<br />
0 0 1 0<br />
0 0 −1.4/1.9 1<br />
⎟<br />
⎠ M (2) =<br />
⎞<br />
⎟<br />
⎠<br />
⎛<br />
⎜<br />
⎝<br />
⎛<br />
U = ⎜<br />
⎝<br />
⎛<br />
⎜<br />
⎝<br />
⎛<br />
⎜<br />
⎝<br />
4 5 2 8<br />
0 0.75 2.5 2<br />
0 2.5 2 −3<br />
0 −0.5 1 −2<br />
4 5 2 8<br />
0 2.5 2 −3<br />
0 0 1.9 2.9<br />
0 0 1.4 −2.6<br />
1 0 0 0<br />
0 1 0 0<br />
0 −0.75/2.5 1 0<br />
0 0.5/2.5 0 1<br />
⎞<br />
⎟<br />
⎠<br />
4 5 2 8<br />
0 2.5 2 −3<br />
0 0 1.9 2.9<br />
0 0 0 −4.7368<br />
Notemos que M (3) M (2) P 23 M (1) P 12 no es una matriz triangular inferior. En efecto<br />
⎛<br />
⎞<br />
0 1 0 0<br />
M (3) M (2) P 23 M (1) P 12 = ⎜ 0 −0.5 1 0<br />
⎟<br />
⎝ 1 −0.1 −0.3 0 ⎠ .<br />
−0.7368 −0.5263 0.4211 1<br />
En cambio, si realizamos la eliminación Gaussiana a la matriz P 23 P 12 A tendremos<br />
⎛<br />
⎞ ⎛<br />
⎞<br />
4 5 2 8 4 5 2 8<br />
P 23 P 12 A = ⎜ 2 5 3 1<br />
⎟<br />
⎝ 1 2 3 4 ⎠ −→ ⎜ 0 2.5 2 −3<br />
⎟<br />
⎝ 0 0.75 2.5 2 ⎠<br />
2 2 2 2 0 −0.5 1 −2<br />
⎛<br />
⎞ ⎛<br />
⎞<br />
4 5 2 8<br />
4 5 2 8<br />
−→ ⎜ 0 2.5 2 −3<br />
⎟<br />
⎝ 0 0 1.9 2.9 ⎠ −→ ⎜ 0 2.5 2 −3<br />
⎟<br />
⎝ 0 0 1.9 2.9 ⎠ = U<br />
0 0 1.4 −2.6 0 0 0 −4.7368<br />
⎞<br />
⎟<br />
⎠<br />
.<br />
⎞<br />
⎟<br />
⎠<br />
⎞<br />
⎟<br />
⎠<br />
.
A continuación <strong>de</strong>tallamos el algoritmo <strong>de</strong> la eliminación Gaussiana con pivote parcial:<br />
Eliminación Gaussiana con pivote parcial<br />
Para k =1, . . . , n − 1<br />
Encontrar j k tal que |a j k| = max kln {|a lk |}<br />
Si a jk =0entonces la matriz es singular<br />
FIN<br />
en caso contrario permutar fila k-ésima con la j-ésima<br />
a ks ←→ a js , s = k, . . . , n,<br />
b k ←→ b j .<br />
fin si<br />
Para i = k +1, . . . , n<br />
l ik = a ik /a kk<br />
Para r = k +1, . . . , n<br />
a ir = a ir − l ik a kr<br />
fin para<br />
b i = b i − l ik b k<br />
fin para<br />
fin para<br />
FIN