Tema 7 - Sistemas de Ecuaciones Lineales 2
July 29, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Tema 7 - Sistemas de Ecuaciones Lineales 2...
Description
SISTEMAS DE ECUACIONES LINEALES II
- 115
7. SISTEMAS DE ECUACIONES LINEALES II 7.1. MÉTODO DE DE ELIMINACIÓN ELIMI NACIÓN DE GAUSS JORDÁN ELIMIN ACIÓN DE El método de eliminación de Gauss – Jordán, es muy parecido al método de eliminación de Gauss, sólo que en este caso la matriz de los coeficientes es transformada en una matriz identidad (o unidad). Así si aplicamos el método de eliminación de Gauss-Jordán al siguiente sistema:
a 11 x1 a 21 x 1 a 31 x 1 a 41 x 1
+ + + +
a 12 x 2 a 22 x 2 a 32 x 2 a 42 x 2
+ + + +
a13 x 3 a 23 x 3 a33 x 3 a 43 x 3
+ + + +
a 14 x 4 a 24 x 4 a 34 x 4 a 44 x 4
= = = =
c1 c2 c3 c4
(7.1)
Se transforma en:
x 1
+
0
+
0
+
0
=
0
+
x2
+
0
+
0
=
0
+
0
+
x3
+
0
=
0
+
0
+
0
+
x4
=
c ' 1 c ' 2
(7.2)
c ' 3 c ' 4
Donde, como se puede observar, las soluciones del sistema se encuentran en la columna de las constantes. En forma matricial, la aplicación del método de Gauss-Jordán da lugar a la siguiente transformación:
[
a11 a 12 a 13 a14 a 15 a 21 a 22 a 23 a 24 a 25 a31 a 32 a 33 a34 a 35 a 41 a 42 a 43 a 44 a 45
][ →
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
a ' 15 a ' 25 a ' 35 a ' 45
]
(7.3)
Las operaciones que se efectúan para llevar la matriz aumentada a la matriz identidad son prácticamente las mismas que en el método de Gauss, excepto que ahora la eliminación de las columnas se la realiza no sólo en la parte inferior de la diagonal, diagonal, sino también en la parte superior de la mis ma. Por lo tanto, para la reducción de las filas se emplea la misma ecuación que en el método de Gauss:
a p =
a p
(7.4)
a pp
Y para la reducción de columnas se cambia el límite inferior a 1:
{
a i= ai – a p⋅aip i =1 → n i ≠ p
(7.5)
Como en el método de Gauss, antes de efectuar la reducción de filas y columnas se debe realizar un pivotaje parcial o total para reducir los errores de redondeo y evitar divisiones entre cero. Para comprender mejor el método de Gauss Jordán, se resolverá manualmente el siguiente sistema de ecuaciones: 2
+ 1
x x1 2 x 1
+ −
8
+
x
2
=
14
3
6 x 2 −
x2
2
+
x x3 2 x 3
=
13
=
5
(7.6)
- 116 -
Hernán Peñaranda V.
La matriz aumentada es: >> a=[2,8,2,14;1,6,-1,13;2,-1,2,5]; El número de filas “n” es 3, el número de columnas “m” es 4 y el pivote “p” comienza en 1: >> n=3; m=4; p=1; Entonces se reduce la fila “p” (1), aplicando la ecuación (7.4 (7. 4): >> a(p,:)=a(p,:)/a(p,p) ans = 1 4 1 7 1 6 -1 13 2 -1 2 5 Y se reduce la columna “p” (1), aplicando la ecuación (7.5 (7.5): >> for i=1:n if (i ~= p) a(i,:)=a(i,:)-a(p,:).*a(i,p); end; end; a ans = 1 4 1 7 0 2 -2 6 0 -9 0 -9 Con ello se ha reducido la primera fila y la primera columna, ahora se incrementa el valor del pivote “p” y se repite el proceso: >> p++; >> a(p,:)=a(p,:)/a(p,p) ans = 1 4 1 7 0 1 -1 3 0 -9 0 -9 >> for i=1:n if (i ~= p) a(i,:)=a(i,:)-a(p,:).*a(i,p); end; end; a ans = 1 0 5 -5 0 1 -1 3 0 0 -9 18 Finalmente se incrementa el valor de “p” y se repite una vez más el proceso: >> p++; >> a(p,:)=a(p,:)/a(p,p) ans = 1 0 5 -5 0 1 -1 3 0 0 1 -2 >> for i=1:n if (i ~= p) a(i,:)=a(i,:)-a(p,:).*a(i,p); end; end; a ans = 1 0 0 5 0 1 0 1 0 0 1 -2 Con ello termina el proceso y las soluciones se encuentra en la columna de las constantes: >> ans(:,4) ans = 5 1 -2
SISTEMAS DE ECUACIONES LINEALES II
7.1.1.
- 117
Ejercicios
Dados los siguientes sistemas de ecuaciones: 3 x 1 −
x 1
+
x2 2 x 2
+
2 x 3 =
12
+
3 x3 =
11
2 x 1 − 2 x 2 −
x3
=
2
2 x 1 2 x 1
− +
+ +
5 x 3 3 x 3
= =
13 20
3 x 1
− x2 +
3x 3
=
10
2 x 2 3 x 2
(7.7)
(7.8)
1.
Encuentr Encuentre e la las s sol soluciones uciones del s sistema istema (7. (7.7 7) aplicando manualmen manualmente te el método de eliminación de Gauss Jordán.
2.
Encuentr Encuentre e la las s sol soluciones uciones del s sistema istema (7. (7.8 8) aplicando manualmen manualmente te el método de eliminación de Gauss Jordán.
7.1.2. Método de Eliminación Eliminación de con pivotaje pivot aje parcial par cial de Gauss Jordán con de pivotaje parcial El algoritmo del método es el siguiente: gaussj:
Método de eliminació ón n de Gauss Jordán con pivotaje parcial.
recibir a
a: Matriz aumentada aument ada..
n,m = Nº de filas y columnas columnas en a p= 1
[p a=[2,8,2,14;1,6,-1,13;2,-1,2,5]; >> gaussj(a) r = 5 1 -2 Que son los mismos resultados obtenidos en el ejemplo manual.
7.1.3. Método de eliminación eliminación de pivo taje total tot al de Gauss con pivotaje de pivotaje total Igual que en el método de Gauss, la diferencia principal con relación al pivotaje parcial es la necesidad de ordenar los resultados. El algoritmo se presenta en la siguient siguiente e página y el código respectivo es el siguiente: function r=gaussjpt(b) a=0; a=b(:,:); [n,m]=size(a); v=1:n; for p=1:n if p> a=[2,8,2,14;1,6,-1,13;2,-1,2,5]; >> gaussjpt(a) r = 5 1 -2 Que son los mismos resultados obtenidos en el ejemplo manual.
SISTEMAS DE ECUACIONES LINEALES II
- 119
gaussjpt: Método de eli eliminación minación de Gauss Jordán con pivotaje total. recibir a
a: Matriz Matr iz aumentada aumentada..
n,m = Nº de filas y columnas en a v = [1,2,..,n] p=1
[p> gaussj(a) r = 7.2033 2.8571 0.81868 3.2143 1.7143 0.21429 2.456 1.5714 -8.2418E-2 >> gaussjpt(a) r = 7.2033 2.8571 0.81868 3.2143 1.7143 0.21429 2.456 1.5714 -8.2418E-2 Es posible calcular también la matriz inversa añadiendo añadiendo a la matriz a invertir la matriz unidad. Por ejemplo, para calcular la inversa de la matriz de coeficientes del sistema (7.6 (7.6), tanto con “gaussj” como con “gaussjpt” se escribe: >> a=[2,8,2;1,6,-1;2,-1,2];a(:,4:6)=eye(3); >> gaussj(a) r = -0.30556 0.5 0.55556 0.11111 0 0.36111 -0.5 >> gaussjpt(a) r = -0.30556 0.5 0.11111 0 0.36111 -0.5
-0.11111 -0.11111
0.55556 -0.11111 -0.11111
Resultados que pueden ser corroborados con “inv”: >> a=[2,8,2;1,6,-1;2,-1,2]; inv(a) ans = -0.30556 0.5 0.55556 0.11111 0 -0.11111 0.36111 -0.5 -0.11111
7.1.4.
Ejercicios
Dados las siguientes sistemas de ecuaciones lineales:
SISTEMAS DE ECUACIONES LINEALES II
+
x 1 4 x 1 6 x 1 12 x 1 30 x 1 + 2 x 1 +
x 1 3 x 1
x2 5 x 2 10 x 2 30 x 2
+ + +
x2 25 x 2
- 121
+ + + +
x3 6 x 3 15 x 3 60 x 3
2 x 3 +
+
+
x3
+
x4 7 x 4 21 x 4 105 x 4
+ + +
6 x 4 +
−
x4
+
+
2 x 2 + 33 x 3 +
+
5 x 2 + 7 x 3 − 45 x 4 +
4 x 1 + 3 x 2 + 2 x 3 +
5 x 4 −
x 1 2 x 1 x 1
+
x2 x2
−
=
0
=
10
=
10
x3
3 x 6 =
12
2 x 5 −
5 x 6 =
24
x5 4 x 5
2 x 6 =
17
+
y2
−
y3
y3
3 z 1 + 2 z 2 −
z 1 2 z 1 z 1
+
z 2 z 2
37
4 x 6 =
23
3 x 5 + 36 x 6 =
24
0
x4 3 x 4
=
1
=
0
(7.11)
+ 2 y 4 = −2
2 3
+ 3 y 4 =
z 3
2
+ 2 z 4 =
2
z 3
+
z 4 3 z 4
(7.12)
4
+ 2 z 4 =
+ 2 z 3 − −
x6
=
+ 2 x 4 =
+ 4 z 2 + +
+
+ 4 y 2 + + 2 y 4 = + y 2 + 2 y 3 − y 4 = +
0
+
(7.10)
5 x 5 −
+ 2 x 4 =
+ 2 x3 −
3 y 1 + 2 y 2 −
y 1 2 y 1 y 1
x3
+ 4 x 2 + +
−1
3 x 4 + 40 x 5 −
5 x 1 + 6 x 2 − 3 x 3 − 4 x 4 + 3 x 1 + 2 x 2 −
=
=
1
=
0
3.
Encu Encuentr entre e las soluci soluciones ones del sist sistema ema Gauss Jordán con pivotaje parcial.
(7.10 (7.10) )
emp emple leand ando o
el
méto método do
de
4.
Encu Encuentr entre e las soluci soluciones ones del sist sistema ema Gauss Jordán con pivotaje total.
(7.11 (7.11) )
emp emple leand ando o
el
méto método do
de
5.
Encu Encuentr entre e las soluci soluciones ones del sist sistema ema Gauss Jordán con pivotaje parcial.
(7.12 (7.12) )
emp emple leand ando o
el
méto método do
de
6.
Encu Encuentr entre e la inve inversa rsa de la matriz de coefi coeficie cientes ntes del sis sistem tema a (7. (7.11 11) ) empleando el método de Gauss Jordán con pivotaje total, luego, con la inversa calculada, encuentre las soluciones del sistema.
7.
Encu Encuentr entre e la inve inversa rsa de la matriz de coefi coeficie cientes ntes del sis sistem tema a (7. (7.12 12) ) empleando empleand o el método de Gauss Jordán con pivotaje parcial, luego luego, , con la inversa calculada, encuentre las soluciones del sistema.
7.2. MÉTODO DE DE CROUT El método de Crout, al igual que los métodos de Doolitle y Cholesky forman parte de los denominados métodos de factorización o descomposición. El fundamento de estos métodos es el siguiente: Dada la matriz A:
- 122 -
Hernán Peñaranda V.
A=
[
a 11 a 21 a 31 a 41
a 12 a 22 a 32 a 42
a 13 a 23 a 33 a 43
a14 a24 a34 a 44
]
(7.13)
Se puede demostrar que la misma puede ser expresada como el producto de dos matrices triangulares, una inferior “L” y otra superior “U”:
a 11 a 12 a 13 a14 a 21 a 22 a 23 a24
A=
a 31 a 32 a 33 a34 a 41 a 42 a 43 a 44
=
l 11 0 l 21 l 22
0
0
0
0
[
×
l 31 l 32 l 33 0 l 41 l 42 l 43 l 44
1 0
u12 u13 u14 1 u23 u24
0
0
1
0
0
0
u34 1
]
= L ×U
(7.14)
A este proceso, el de calcular los elementos de las matrices triangulares “L” y “U” para una matriz cuadrada “A”, se conoce como descomposición LU o factorización factoriz ación LU y es el proce proceso so en el que se basan los méto métodos dos de Crout, Doolitle y Cholesky. El proceso de descomposición no es único, las posibles combinaciones de “L” y “U” son infinitas. En general, sin embargo, son tres las formas de descompo desc omposici sición ón más empleadas empleadas en la prác práctica tica: : La des descomp composic osición ión de Crout, que corresponde a lae descomposición mostrada en ncipal el ejemplo, decir aquella en la cual cual los elementos lementos de la diag diagonal onal pri principal en “U”es son u unos. nos. La descomposición de Doolittle, en la cual los elementos de la diagonal principal en “L” son unos, es decir:
A=
[
a 11 a 12 a 13 a14 a 21 a 22 a 23 a24 a 31 a 32 a 33 a34 a 41 a 42 a 43 a 44
Y la descomposición de decir:
][ =
1
0
0
0
l 21
1
0
0
l 31 l 32 1 l 41 l 42 l 43
1
][ ×
0
0
0
0
u33 u34 0 u44
]
= L ×U (7.15)
Cholesky, en la cual U es la transpuesta de L, es
l 11
a 11 a 12 a 13 a14
0
0
l 11 l 21 l 31 l 34
0
][
][
[
0
u 11 u 12 u13 u14 0 u 22 u 23 u24
0 × A= a 21 a 22 a 23 a24 = l 21 l 22 0 l 31 l 32 l 33 0 a 31 a 32 a 33 a34 l 41 l 42 l 43 l 44 a 41 a 42 a 43 a 44
0 0 0
]
l 22 l 32 l 34 = L ×U 0 l 33 l 43 0 0 l 44
(7.16)
Si la matriz A, es la matriz de los coeficientes de un sistema de ecuaciones lineales, como el siguiente:
a 11 x1 a 21 x 1
+
a 31 x 1 a 41 x 1
+
+
+
a 12 x 2 a 22 x 2 a 32 x 2 a 42 x 2
+ + + +
a13 x 3 a 23 x 3 a33 x 3 a 43 x 3
+ + + +
a 14 x 4 a 24 x 4
=
a 34 x 4 a 44 x 4
=
=
=
b1 b2
(7.17)
b3 b4
Una vez realizada la factorización, las soluciones pueden ser calculadas, empleando las matrices triangulares obtenidas:
A⋅ x = L⋅U ⋅ x =b Multiplicando ambos lados de la ecuación por L -1, se obtiene:
(7.18)
SISTEMAS DE ECUACIONES LINEALES II
- 123
−1
−1
(7.19)
L ⋅ L⋅U ⋅ x = I ⋅U ⋅ x =U ⋅ x = L ⋅b= c De donde se obtienen las igualdades:
U ⋅ x = c L
(7.20)
−1
(7.21)
⋅b = c
Primero se calculan los valores de “c” y para ello se multiplican ambos lados de la ecuación (7.21 (7.21) ) por L: −1
(7.22)
L⋅ L ⋅b = I ⋅b= b= L⋅c
En consecuencia el valor de “c” puede ser calculado resolviendo el sistema de ecuaciones lineales:
L⋅c =b
(7.23)
Este sistema puede ser resuelto porque es un sistema triangular inferior, en el cual las soluciones se encuentran por sustitución hacia adelante. Por ejemplo para el sistema (7.17 (7.17) ) el sistema triangular superior que se forma (asumiendo la descomposición de Crout) es:
l 1111 c 1 l 21 c1
+
l 22 c2
l 31 c1 l 41 c1
+ +
l 32 c2 l 42 c2
=
b1 b2
= =
b3 b4
=
+ +
l 33 c3 l 43 c 3
+
l 44 c 4
(7.24)
Como se puede ver, c 1 se calcula con la primera ecuación, c 2 con la segunda y así sucesivamente. En general, para un sistema con “n” ecuaciones los valores de “c” se calculan con: i −1
bi −∑ l ik ⋅c k c i=
k =1
l iiii
(7.25)
{ i =1 → n
Esta ecuación ser generalizada para el caso en el que “b” es una matriz en lugar de un vector (que es lo que ocurre cuando se resuelven simultáneasimultáneamente sistemas de ecuaciones lineales o se calcula la inversa): i− 1
c ij =
bij – ∑ l ik ik ⋅c kj k =1
l iiii
{
(7.26)
i =1 → n j =1 → m
Donde “m” es el número de columnas de la matriz “b” y “n” es el número de filas del sistema de ecuaciones. Una vez calculado el vector “c”, se encuentran las soluciones resolviendo el sistema de ecuaciones lineales (7.20 (7.20). ). En este caso se trata de un sistema triangular superior y en consecuencia puede ser resuelto por sustitución hacia atrás (igual que en el método de Gauss). Por ejemplo para el sistema (7.17 (7.17) ) el sistema triangular superior que se forma (asumiendo la descomposición de Crout) es:
x 1
+
u 12 x 2 x 2
+ +
u 13 x 3 u 23 x3 x 3
+ + +
u 14 x 4 u 24 x 4
=
u 34 x 4 x 4
=
=
=
c1 c2 c3 c4
(7.27)
- 124 -
Hernán Peñaranda V.
Por lo tanto x4 se calcula con la última ecuación, x 3 con la penúltima y así sucesivamente. sucesivamente. En general, para un sistema con “n” ecuaciones los valores de “x” se calculan con: n
c i – ∑ u ik ⋅ x k k = i + 1
x i=
uii
(7.28)
{i =n → 1
Para el caso general en el que “c” sea una matriz, en lugar de un vector, se tiene: n
c ij – ∑ uik ⋅ x kj k = i+ 1
x ij =
uii
{
i =n → 1 j =1 → m
(7.29)
Donde “m” es el número de columnas de la matriz “c” y “n” es el número de filas. La fact factori orizaci zación ón (o descomp descomposic osición) ión) mat matrici ricial al es part particul icularme armente nte útil cuando en un problema dado sólo cambian las constantes del sistema. Cuando ello ocurre se calculan las matrices “L” y “U” una sola vez y luego, cada vez que las constantes cambian, las soluciones se obtienen aplicando las ecuaciones (7.26 (7.26) ) y (7.29 (7.29) ) (sin necesidad de recalcular “L” y “U”). Las ecuaciones que permiten calcular calcular las matrices “L” y “U” en la descomposición de Crout, pueden ser deducidas tomando en cuenta que la multiplicación de las filas de la matriz “L” por la primera columna de la matriz “U” es igual a la primera columna de la matriz “A”; que la multiplicación de la primera fila de la matriz “L” por las columnas 2 a “n” de la matriz “U” es igual a los elementos 2 a “n” de la primera fila de la matriz “A”; que la multiplicación de las filas de la matriz “L” por la segunda columna de “U” es igual a la segunda columna de “A”; que la multiplicación de la segunda fila de la matriz “L” por las columnas 3 a “n” de la matriz “U” es igual a los elementos 3 a “n” de “A” y así sucesivamente. De esa manera se deducen las siguientes expresiones: p− 1
l ip=a ip – ∑ l ik ⋅u kp {i = p → n k =1
u pp=1
p− 1
p= 1 → n
(7.30)
a pj – ∑ l pk ⋅u kj u pj =
k = 1
l pp
{ j = p +1 → n
Si no se almacenan los unos de la matriz “U”, las matrices “L” y “U” pueden ser almacenadas en una sola matriz, así las dos matrices de la ecuación (7.14 (7. 14), ), pueden ser almacenadas como:
l 11 u 12 u 13 u 14 l 21 l 22 u 23 u 24
(7.31)
l 31 l 32 l 33 u 34 l 41 l 42 l 43 l 44
[
]
Donde Dond e se sabe que la matr matriz iz triang triangular ular “U” tiene unos en su dia diagona gonal l principal. Así se ahorra memoria y, más importante aún, se simplifican los
SISTEMAS DE ECUACIONES LINEALES II
- 125
cálculos. Si estos elemento se almacenan en la matriz “A”, las ecuaciones (7.30 (7. 30) ) se transforman en: p− 1
a ip=a ip – ∑ aik ⋅a kp { i= p → n k = 1 p− 1
a pj – ∑ a pk ⋅a kj
p=1 → n
(7.32)
k = 1
a pj =
a pp
{ j = p +1 → n
Las ecuaciones (7.26 (7.26) ) y (7.29 (7.29), ), con las cuales se calculan las soluciones del sistema, deben ser reescritas para tomar en cuenta este cambio, pero si además las soluciones se almacenan en la matriz de constant constantes es “b” y se toma en cuenta que los elementos de la diagonal principal en “U” son unos, se transforman en: i −1
b ij – ∑ a ik ⋅b kj bij =
k = 1
aii
n
bij = bij – ∑ a ik ⋅bkj k =i +1
{ {
i =1 → n j =1 → m i =n → 1 j =1 → m
(7.33)
(7.34)
A esta forma se denomina esquema compacto y es la forma más empleada en la práctica. Para comprender mejor el proceso aplicaremos manualmente el mismo a la matriz de coeficientes del sistema (7.6 (7. 6). Primero se crea la matriz “a” y se inicializan las variables “n”, “p”: >> a=[2,8,2;1,6,-1;2,-1,2]; n=3; p=1; Ahora se calculan los elementos de la primera columna (de “l”): >> for i=p:n s=0; for k=1:p-1 s+=a(i,k).*a(k,p); end a(i,p)=a(i,p)-s; end a ans = 2 8 2 1 6 -1 2
-1
2
Entonces se calculan los elementos de la primera fila (de “u”): >> for j=p+1:n s=0; for k=1:p-1 s+=a(p,k).*a(k,j); end a(p,j)=(a(p,j)s)/a(p,p); end a ans = 2 4 1 1 6 -1 2 -1 2 Para calcular la segunda columna (de “l”) y la segunda fila (de “u”) se incrementa el valor de “p” (a 2) y se repite el proceso: >> p++; >> for i=p:n s=0; for k=1:p-1 s+=a(i,k).*a(k,p); end a(i,p)=a(i,p)-s; end a ans 2 = 4 1 2
1 -1
- 126 -
Hernán Peñaranda V.
2 -9 2 >> for j=p+1:n s=0; for k=1:p-1 s+=a(p,k).*a(k,j); end a(p,j)=(a(p,j)s)/a(p,p); end a ans = 2 4 1 1 2 -1 2 -9 2 Finalmente se incrementa el valor de “p” (a 3) y se calcula la última columna (de “l”): >> p++; >> for i=p:n s=0; for k=1:p-1 s+=a(i,k).*a(k,p); end a(i,p)=a(i,p)-s; end a ans = 2 4 1 1 2 -1 2 -9 -9 De esa manera se obtienen las matrices triangulares “l” (los elementos de la diagonal principal e inferiores) y “u” (los elementos encima de la diagonal principal). Ahora se calcula las soluciones aplicando primero la ecuación (7.33 (7. 33) ) (con j=1 pues en este caso “b” es un vector columna): >> b=[14;13;5]; >> for i=1:n s=0;j=1; for k=1:i-1 s+=a(i,k).*b(k,j); end b(i,j)=(b(i,j)s)/a(i,i); end b ans = 7 3 -2 Y luego la ecuación (7.34 (7.34): ): >> for i=n:-1:1 s=0; for k=i+1:n s+=a(i,k).*b(k,j); end b(i,j)=b(i,j)-s; end b ans = 5 1 -2 Que son las soluciones del sistema (7.6 (7.6).
7.2.1.
Ejercicios
8.
Encuentr Encuentre e la las s sol soluciones uciones del s sistema istema (7. (7.7 7) aplicando manualmen manualmente te el método de factorización de Crout.
9.
Encuentr Encuentre e la las s sol soluciones uciones del s sistema istema (7. (7.8 8) aplicando manualmen manualmente te el método de factorización de Crout.
7.2.2.
Pivotaje parcial en los métodos de factorización
Al igual que en los métodos de Gauss y Gauss Jordán en los métodos de factorización se debe evitar que el elemento pivote sea cero y con ese fin es necesario realizar un pivotaje parcial. Enios estos sin embargo, se es debe mantener un enar registro registr de riz los de intercamb cambios de métodos, fila filas s real realizad izados, os, pues nec necesar esario io ord ordenar la o mat matriz las constantes constant es (“b”) en función a dichos intercamb intercambios. ios. Alternativam Alternativamente ente se puede trabajar con la matriz aumentada, no obstante, con ello se pierde la
SISTEMAS DE ECUACIONES LINEALES II
- 127
principal ventaja de estos métodos: la de permitir calcula principal calcular r nuevas soluciones, en sistemas que sólo difieren en las constantes, empleando las matrices “l” y “u” ya calculadas (o la matriz compacta en nuestro caso). Para hacer el seguimiento de los intercambios efectuados, se empleará en este caso una matriz de permutaciones permutaciones “o”, que inicial inicialmente mente será igual a la matriz unidad y cada vez que se intercambien intercambien dos filas en la matriz “A”, se intercambiarán las mismas filas en la matriz de permutaciones “O”, entonces, los intercambios de filas hechos en la matriz “A” podrán ser replicados en la matriz “b” simplemente multiplicándola por la matriz “o”. El algoritmo del pivotaje parcial en los métodos de factorización es el siguiente: pivparlu: pivparl u: Piv Pivotaje otaje parci parcial al en lo os s métodos de factorización. recibir a, n, p, o k= p
a: Matriz aumentada. n: Número de filas. p: Pivote. o: Matriz de posiciones.
i = p+1 p+1
[i|akp|] k= i
i = i+1
[akp=0 =0]] [kp]
Matriz homogénea homogéne a.
j = 1 generar error [jabs(a(k,p)) k=i; end end if a(k,p)==0 error("Matriz Homogénea\n"); end if k ~= p for j=1:n
- 128 -
Hernán Peñaranda V.
aux=a(p,j); a(p,j)=a(k,j); a(k,j)=aux; aux=o(p,j); o(p,j)=o(k,j); o(k,j)=aux; end end end Haciendo correr el programa con la matriz: >> a=[0,2,1;1,0,0;3,0,1] a = 0 1 3
2 0 0
1 0 1
Donde se deben intercambiar las filas 1 y 3, se obtiene: >> o=eye(3); >> pivparlu(a,3,1,o) >> a,o a = 3 0 1 1 0 0 0 2 1 o = 0 0 1 0 1 0 1
0
0
Que corresponde al intercambio esperado, el mismo que se refleja también la matriz “o”. Si se aplica el pivotaje parcial a la matriz resultante, siendo el pivote 2, se obtiene: >> pivparlu(a,3,2,o) >> a,o a = 3 0 1 0 2 1 1 0 0 o = 0 0 1 1 0 0 0 1 0 Que una vez más corresponde a los intercambios de filas esperados (filas 2 y 3) y el respectivo intercambio en la matriz de permutaciones (“o”). Simplemente para demostrar que la matriz de permutaciones “o” permite reproducir los intercambios de filas realizados, se multiplica la matriz de permutaciones por la matriz original: >> o*[0,2,1;1,0,0;3,0,1] ans = 3 0 1 0 2 1 1 0 0 Obteniéndose la matriz resultante de los intercambios.
7.2.3.
Factorización LU
El algoritmo para factorizar (descomponer) una matriz por el método de Crout, que básicamente automatiza los pasos seguidos en el ejemplo manual, es el siguiente:
SISTEMAS DE ECUACIONES LINEALES II
- 129
croutlu: Factorización LU por el método de Crout. recibir a
a: Matriz aumentada.
n = Nº de filas en a o = matriz unida unidad d con n filas filas desde p=1 hasta n [p a=[2,8,2;1,6,-1;2,-1,2]; >> lu=croutlu(a) lu = 2 4 1 1 0 0 1 2 -1 0 1 0 2 -9 -9 0 0 1 Las 3 últimas columnas corresponden a la matriz de permutaciones “o”.
7.2.4.
Cálculo de las soluciones
Una vez que se tienen las matrices triangulares inferior, superior y la matriz de permutaciones (en una matriz aumentada en nuestro caso), se pueden calc calcular ular los res resulta ultados dos apli aplicand cando o los proc procesos esos de sust sustituc itución ión haci hacia a adelante y hacia atrás (ecuaciones (7.33 (7. 33) ) y (7. (7.34 34)). )). El algoritmo es: croutsol: Cálculo de las soluciones soluciones con el método de Crout. recibir a, b n = Nº de filas en a m = Nº de columnas en b b = aall,n+1->2n *b desde i=1 hasta n desde j=1 hasta m s= 0 desde k=1 hasta i-1 k=k+1 j=j+1 j=j+ 1
s = s+aik*bkj bij = (bij-s)/aii
i=i+1 desde i=n hasta 1 desde j=1 hasta m s= 0 desde k=i+1 hasta n k=k+1 j=j+1 j=j+ 1
s = s+aik*bkj bij = bij-s
i=i-1 devolver b
a: Matriz l-u aumentada c con on la matriz de permutaciones. b: Matriz Matriz de const constant antes. es.
SISTEMAS DE ECUACIONES LINEALES II
- 131
Siendo el código respectivo: function b=croutsol(a,c) b=0; b=c(:,:); n=size(a)(1); m=size(b)(2); b=a(:,n+1:2*n)*b; for i=1:n for j=1:m s=0; for k=1:i-1 s+=a(i,k).*b(k,j); end b(i,j)=(b(i,j)-s)/a(i,i); end end for i=n:-1:1 for j=1:m s=0; for k=i+1:n s+=a(i,k).*b(k,j); end b(i,j)=b(i,j)-s; end end end Haciendo correr el programa con los resultados de “croutlu” se obtiene: >> b=[14;13;5]; >> croutsol(lu,b) b = 5 1 -2 Que son las soluciones correctas del sistema de ecuaciones (7.6 (7. 6).
7.2.5.
Ejercicios
10. Encu Encuentr entre e Crout.
las
solu solucion ciones es
del
sist sistema ema
(7. (7.10 10) )
emp emple leand ando o
el
méto método do
de
11. Encu Encuentr entre e Crout.
las
solu solucion ciones es
del
sist sistema ema
(7. (7.11 11) )
emp emple leand ando o
el
méto método do
de
12. Encu Encuentr entre e Crout.
las
solu solucion ciones es
del
sist sistema ema
(7. (7.12 12) )
emp emple leand ando o
el
méto método do
de
13. Encuentre la inversa de la matriz de coeficientes del sistema (7.12 (7.12) ) empleando el método de Crout, luego, con la inversa calculada, encuentre las soluciones del sistema.
7.3. MÉTODO DE DE DOOLITTLE DOOLI TTLE DOOLIT TLE Como ya se dijo, cuando en la factorización L-U, la matriz triangular inferior queda con unos en la diagonal principal, el proceso se conoce como el método de Doolittle (ecuación (7.15 (7. 15)). )). Las ecuaciones para el cálculo de las matrices “L” y “U” son: p −1
u pj= a pj – ∑ l pk ⋅u kj { j = p → n k = 1
l pp pp= 1
p =1 → n
p− 1
l ip=
l ik ⋅u kp a ip – k ∑ k =1 u pp
{i= p +1 → n
(7.35)
- 132 -
Hernán Peñaranda V.
Y se deducen de manera similar al método de Crout, sólo que ahora los elementos de la matriz origi elementos original nal “A” se calculan en el orden: fila 1, columna 1, fila 2, columna 2, fila 3, columna 3 y así sucesivamente. Sin embargo, y al igual que en el método de Crout, no es necesario guardar los ceros ni los unos de las matrices, por lo que las dos matrices (“L” y “U”) pueden ser guardadas en una:
Si es esta ta mat matri riz z transforman en:
se
guar guarda da
u 11 l 21 l 31 l 41
en
la
[
u 12 u 22 l 32 l 42
u 13 u 23 u 33 l 43
u14 u 24 u34 u 44
matri matriz z
]
(7.36)
“A”, “A”,
las las
ecuac ecuacio iones nes (7. (7.35 35) ) se
p− 1
a pj =a pj – ∑ a pk ⋅a kj { j = p → n k = 1 p−1
p =1 → n
a ip – ∑ aik ⋅a kp a ip=
k =1
a pp
(7.37)
{ i= p +1 → n
Las ecuaciones para el cálculo de las soluciones, tomando en cuenta que ahora “l” tiene la diagonal con unos y guardando las soluciones en la matriz de constantes “b”, son: i−1
bij = bij – ∑ aik ⋅bkj k =1
{
i =1 → n j =1 → m
(7.38)
n
b ij – ∑ a ik ⋅b kj bij =
k = i+ 1
a ii
{
i =n → 1 j =1 → m
(7.39)
Para comprender mejor el proceso aplicaremos manualmente el método de Doolittle al sistema (7.6 (7.6). Primero se crea la matriz “a” y se inicializan las variables “n” y “p”: >> a=[2,8,2;1,6,-1;2,-1,2]; n=length(a); p=1; Ahora Ahor a se apli aplican can las ecuaci ecuacione ones s (7. (7.37 37) ) para calcular la primera fila y columna de “u” y “l”: >> for j=p:n s=0; for k=1:p-1 s+=a(p,k).*a(k,j); end a(p,j)=a(p,j)-s; end a ans = 2 8 2 1 6 -1 2 -1 2 >> for i=p+1:n s=0; for k=1:p-1 s+=a(i,k).*a(k,p); end a(i,p)=(a(i,p)s)/a(p,p); end; a ans = 2 8 2 0.5 1
6 -1
-1 2
Ahora se procede con la segunda fila y columna de “u” y “l”:
SISTEMAS DE ECUACIONES LINEALES II
- 133
>> p++; >> for j=p:n s=0; for k=1:p-1 s+=a(p,k).*a(k,j); end a(p,j)=a(p,j)-s; end a ans = 2 8 2 0.5 2 -2 1 -1 2 >> for i=p+1:n s=0; for k=1:p-1 s+=a(i,k).*a(k,p); end a(i,p)=(a(i,p)s)/a(p,p); end; a ans = 2 8 2 0.5 2 -2 1 -4.5 2 Finalmente se calcula la última fila de “u”: >> p++; >> for j=p:n s=0; for k=1:p-1 s+=a(p,k).*a(k,j); end a(p,j)=a(p,j)-s; end a ans = 2 8 2 0.5 2 -2 1 -4.5 -9 Ahora se calculan las soluciones con las ecuaciones (7.38 (7. 38) ) y (7. (7.39 39): ): >> b=[14;13;5]; j=1; >> for i=1:n s=0; for k=1:i-1 s+=a(i,k).*b(k,j); end b(i,j)=b(i,j)-s; end b ans = 14 6 18 >> for i=n:-1:1 s=0; for k=i+1:n s+=a(i,k).*b(k,j); end b(i,j)=(b(i,j)s)/a(i,i); end b ans = 5 1 -2 Que son las soluciones correctas del sistema.
7.3.1.
Ejercicios
14. Encuentr Encuentre e las soluciones del sistema (7. (7.7 7) aplicando manualmen manualmente te el método de factorización de Doolittle. 15. Encuentr Encuentre e las soluciones del sistema (7. (7.8 8) aplicando manualmen manualmente te el método de factorización de Doolittle.
7.3.2.
Fatorización LU
El algoritmo para calcular las matrices “L” y “U” por el método de Doolittle, el cual, con excepción del pivotaje pivotaje parcial parcial, , básicamente automatiza el proceso seguido en el ejemplo manual, se presenta en la siguient siguiente e página y el código respectivo es: function a=doolittlelu(b) a=0; a=b(:,:); n=size(a)(1); o=eye(n); for p=1:n if p a=[2,8,2;1,6,-1;2,-1,2]; >> r=doolittlelu(a) r =
SISTEMAS DE ECUACIONES LINEALES II
2 0.5 1
8 2 -4.5
2 -2 -9
1 0 0
- 135
0 1 0
0 0 1
Que son los mismos resultados obtenidos en el ejemplo manual. Jasymca cuenta también con una función “lu”, que lleva a cabo la descomposición por el método de Doolittle. Con esta función se obtiene: >> [l,u,o]=lu(a) l = 1 0 0.5 -0.22222 1 1 u = 2 8 2 0 -9 0 0 0 -2 o = 1 0 0 0 0 1 0 1 0
0 1 0
Que a diferencia del programa elaborad devuelve los resultados en tres matrices y se basa en un pivotaje total en lugar de uno parcial.
7.3.3.
Cálculo de las soluciones
Con las matrices triangulares inferior, superior y la matriz de permutaciones (en una matriz aumentada en nuestro caso), se pueden calcular las soluciones solucion es del sistema aplicand aplicando o los proceso procesos s de sustitu sustitución ción hacia adelante y hacia atrás (ecuaciones (7.38 (7. 38) ) y (7.39 (7.39)). )). El algoritmo se presenta en la siguiente página y el código respectivo es: function b=doolittlesol(a,c) b=0; b=c(:,:); n=size(a)(1); m=size(b)(2); b=a(:,n+1:2*n)*b; for i=1:n for j=1:m s=0; for k=1:i-1 s+=a(i,k).*b(k,j); end b(i,j)=b(i,j)-s; end end for i=n:-1:1 for j=1:m s=0; for k=i+1:n s+=a(i,k).*b(k,j); end b(i,j)=(b(i,j)-s)/a(i,i); end end end Haciendo correr el programa con los resultados de “doolittlelu” se obtienen las soluciones encontradas en el ejemplo manual: >> b=[14;13;5]; >> doolittlesol(r,b) b = 5 1 -2
- 136 -
Hernán Peñaranda V.
doolittlesol: Cálculo de las soluc soluciones iones con el método doolittle. recibir a, b n = Nº de filas en a
a: Matriz l-u aumentada c con on la matriz de permutaciones. b: Matriz Matriz de const constant antes. es.
m = Nº de columnas en b b = aall,n+1->2n *b desde i=1 hasta n desde j=1 hasta m s= 0 desde k=1 hasta i-1 k=k+1
s = s+aik*bkj bij = bij-s
j=j+1 j=j+ 1 i=i+1
desde i=n hasta 1 desde j=1 hasta m s= 0 desde k=i+1 hasta n k=k+1 j=j+1 j=j+ 1
s = s+aik*bkj bij = (bij-s)/aii
i=i-1 devolver b
7.3.4.
Ejercicios
16. Encuentre las soluciones del sistema (7.10 (7.10) ) empleando el método de Doolittle. 17. Encuentre las soluciones del sistema (7.11 (7.11) ) empleando el método de Doolittle. 18. Encuentre las soluciones del sistema (7.12 (7.12) ) empleando el método de Doolittle. 19. Encuentre la inversa de la matriz de coeficientes del sistema (7.12 (7.12) ) empleando el método de Doolittle, luego, con la inversa calculada, encuentre las soluciones del sistema.
SISTEMAS DE ECUACIONES LINEALES II
- 137
DE CHOLESKY CHOLE SKY 7.4. MÉTODO DE CHOLES KY Como ya puede ser (ecuación método de
se vio, cuando la matriz es simétrica, la descomposición “L” “U” simplificada y al proceso se conoce como el método de Cholesky (7.16)). (7.16 )). Puesto que la matriz a factorizar debe ser simétrica, simétrica, el Cholesky no admite pivotaje.
A pesar de estas limitaciones, la forma de Cholesky resulta de utilidad práctica, pues los sistemas con matrices simétricas aparecen en la resolución de varios problemas prácticos en el campo de la ingeniería. Las ecuaciones que permiten calcular los valores de “L” (y en consecuencia los de “U”), se deducen obteniendo los términos de la matriz triangular triangular inferior de la matriz original “A”, columna por columna y son:
√
p− 1
l pp= a pp – ∑ l pk
2
k =1 p− 1
p =1 → n
a ip – ∑ l ik ⋅l pk =l pi {i = p+1 → n
k =1
l ip =
(7.40)
l pp
Como se puede ver, el cálculo de los elementos de la diagonal principal involucra el cálculo de la raíz cuadrada, por lo que además dicho valor debe ser positivo. Al igual que en los métodos de Crout y Doolittle, en el método de Cholesky no se requieren almacenar almacenar los ceros y dado que en este caso la matriz transpuesta y la original tienen los mismos elementos en la diagonal principal, los resultados de la factorización se pueden almacenar en una matriz:
[
l 11 l 21 l 31 l 41 l 21 l 22 l 32 l 42 l 31 l 32 l 33 l 43 l 41 l 42 l 43 l 44
]
(7.41)
Si la matriz donde se guardan estos valores es la matriz “A”, las ecuaciones (7.40 (7.40) ) pueden ser reescritas como:
√
p− 1
a pp= a pp – ∑ a pk
2
k = 1
p =1 → n
p− 1
a ip – ∑ aik ⋅a pk a ip=
(7.42)
= a pi {i = p+1 → n
k = 1
a pp
Una vez factorizada la matriz de los coeficientes los resultados pueden ser calculados con las ecuacio ecuaciones nes (7. (7.33 33) ) y (7. (7.39 39). ). Para comprend comprender er mejor el proceso se resolverá el siguiente sistema de ecuaciones con este método: 4 x 1 +
x 1
+
2 x 1 +
x2 7 x 2
+
2 x 3 =
5
+
3 x 3 =
8
3 x 2 +
9 x 3 =
3
(7.43)
Primero se crea la matriz de coeficientes y se inicializan “p” y “n”:
- 138 -
Hernán Peñaranda V.
>> a=[4,1,2;1,7,3;2,3,9]; n=size(a)(1); p=1; Ahora se calcula el primer elemento de la diagona diagonal l principal y la primera columna (y por consiguiente la fila 1): >> s=0; for k=1:p-1 s+=a(p,k)^2; end a(p,p)=sqrt(a(p,p)-s); ans = 2 1 2 1 7 3
a
3 i=p+1:n 9 >>2for s=0; for k=1:p-1 s+=a(i,k).*a(p,k); end a(i,p)=(a(i,p)s)/a(p,p); a(p,i)=a(i,p); end a ans = 2 0.5 1 0.5 7 3 1 3 9 Luego se incrementa “p” y se repite el proceso para la segunda columna y fila: >> p++; >> s=0; for k=1:p-1 s+=a(p,k)^2; end a(p,p)=sqrt(a(p,p)-s); a ans = 2 0.5 1 0.5 2.5981 3 1 3 9 >> for i=p+1:n s=0; for k=1:p-1 s+=a(i,k).*a(p,k); end a(i,p)=(a(i,p)s)/a(p,p); a(p,i)=a(i,p); end a ans = 2 0.5 1 0.5 2.5981 0.96225 1 0.96225 9 Finalmente se calcula el último valor de la diagonal principal: >> p++; >> s=0; for k=1:p-1 ans = 2 0.5 0.5 2.5981 1 0.96225
s+=a(p,k)^2; end a(p,p)=sqrt(a(p,p)-s);
a
1 0.96225 2.6597
Una vez factorizada la matriz de coeficientes se calculan las soluciones con las ecuaciones (7.33 (7.33) ) y (7.39 (7.39): ): >> b=[5;8;3]; j=1; >> for i=1:n s=0; for k=1:i-1 s+=a(i,k).*b(k,j); end b(i,j)=(b(i,j)s)/a(i,i); end b ans = 2.5 2.5981 -0.75196 >> for i=n:-1:1 s=0; for k=i+1:n s+=a(i,k).*b(k,j); end b(i,j)=(b(i,j)s)/a(i,i); end b ans = 1.1152 1.1047 -0.28272 Resultados que pueden ser corroborados con “linsolve”: >> a=[4,1,2;1,7,3;2,3,9]; b=[5;8;3];
SISTEMAS DE ECUACIONES LINEALES II
- 139
>> linsolve(a,b) ans = 1.1152 1.1047 -0.28272
7.4.1.
Ejercicios
Dado el siguiente sistema de ecuaciones lineales 10 x 1
+
x 1 2 x 1
+ +
x2 10 x 2 x2
+
2 x 3
=
44
+
x3 10 x 3
=
51
=
61
+
(7.44)
20. Encuentr Encuentre e las solucion soluciones es de este sistema aplicando manual manualmente mente el método de Cholesky.
7.4.2.
Factorización LU
El algoritmo que automatiza la factorización por el método de Cholesky es: choleskylu cholesk ylu : F Factorización actorización LU por el método Cholesky. recibir a n = Nº de filas en a desde p=1 hasta n s= 0 desde k=1 hasta p-1 k=k+1
s = s+apk*apk app = (a (app -s)1/2 desde i=p+1 hasta n s= 0 desde k=1 hasta p-1
k=k+1 i=i+1
s = s+aik*apk api = aip = (aip -s)/app
p=p+1 devolver a
Siendo el código respectivo: function a=choleskylu(b) a=0; a=b(:,:); n=size(a)(1); for p=1:n
a: Matriz aumentada.
- 140 -
Hernán Peñaranda V.
s=0; for k=1:p-1 s+=a(p,k).*a(p,k); end a(p,p)=sqrt(a(p,p)-s); for i=p+1:n s=0; for k=1:p-1 s+=a(i,k).*a(p,k); end a(i,p)=(a(i,p)-s)/a(p,p); a(p,i)=a(i,p); end end end Haciendo correr el programa con la matriz del ejemplo manual se obtiene: >> a=[4,1,2;1,7,3;2,3,9]; >> r=choleskylu(a) r = 2 0.5 1 0.5 2.5981 0.96225 1 0.96225 2.6597 Que son los resultados correctos.
7.4.3.
Cálculo de las soluciones
El algoritmo para el cálculo de las soluciones por el método de Cholesky se presenta en la siguiente página y el código respectivo es: function b=choleskysol(a,c) b=0; b=c(:,:); n=size(a)(1); m=size(b)(2); for i=1:n for j=1:m s=0; for k=1:i-1 s+=a(i,k).*b(k,j); end b(i,j)=(b(i,j)-s)/a(i,i); end end for i=n:-1:1 for j=1:m s=0; for k=i+1:n s+=a(i,k).*b(k,j); end b(i,j)=(b(i,j)-s)/a(i,i); end end end Haciendo correr el programa con los resultados de “choleskylu” se obtiene: >> b=[5;8;3]; >> choleskysol(r,b) b = 1.1152 1.1047 -0.28272
7.4.4.
Ejercicios
Dados los siguientes sistemas de ecuaciones:
x 1 2 x 1
+
2 x 2
+
3 x 3
=
21
+
9 x 2
+
3 x 3
=
12
3 x 1
+
3 x 2
+
12 x 3
=
15
(7.45)
SISTEMAS DE ECUACIONES LINEALES II
- 141
choleskysol cholesk ysol : Cálculo de las soluciones uciones con el método doolittle. a: Matriz l-u aumentada c con on la matriz de permutaciones. b: Matriz Matriz de con cons stantes. tantes.
recibir a, b n = Nº de filas en a m = Nº de columnas en b desde i=1 hasta n desde j=1 hasta m s= 0 desde k=1 hasta i-1 k=k+1 j=j+1 j=j+ 1
s = s+aik*bkj bij = (bij-s)/aii
i=i+1 desde i=n hasta 1 desde j=1 hasta m s= 0 desde k=i+1 hasta n k=k+1 j=j+1 j=j+ 1
s = s+aik*bkj bij = (bij-s)/aii
i=i-1 devolver b
7 x 1
+
x 1 2 x 1 − x1
+ + +
x2 9 x 2 3 x 2 2 x 2
− x4
+
2 x 3
+
3 x 3
+
+
12 x 3
+
3 x 3
=
3
2 x 4
=
2
+
3 x 4
=
7
+
11 x 4
=
5
(7.46)
21. Encuentre las soluciones del sistema (7.45 (7.45) ) empleando el método de Cholesky. 22. Encuentre las soluciones del sistema (7.46 (7.46) ) empleando el método de Cholesky.
- 142 -
Hernán Peñaranda V.
View more...
Comments