Vous êtes sur la page 1sur 20

FACULTAD DE INFORMTICA

EMI 1




Prctica 5:

Aritmtica matricial.
Descomposicin LU














F. INFORMTICA
2
Prctica 4. EMI

Aritmtica matricial. Descomposicin LU



NDICE:

1. Aritmtica matricial

2. Matrices elementales

3. Clculo de inversas

4. Descomposicin LU de una matriz cuadrada







3







En esta prctica revisamos en primer lugar cmo efectuar con MATLAB las
operaciones bsicas con matrices, detallando slo aquellas que necesitamos para realizar
esta prctica.

A continuacin nos detendremos en el estudio de las matrices elementales. En la
primera prctica ya describimos como efectuar las operaciones elementales en una
matriz. Este proceso lo aplicaremos en esta prctica para generar las matrices
elementales de cualquier tipo y orden, y de este modo, interpretar matricialmente los
distintos pasos del proceso de eliminacin de Gauss.

Finalizamos la prctica exponiendo la forma de calcular inversas con MATLAB
as como la descomposicin LU de cualquier matriz cuadrada. Detallaremos alguna de
las aplicaciones que hace el programa de esta descomposicin y analizaremos los
problemas que surgen cuando se trabaja con decimales no exactos.


1. ARITMTICA MATRICIAL

En la prctica anterior ya indicamos como se introducan las matrices en Matlab
y tambin la forma de manipular en su interior una vez introducidas. A continuacin
exponemos los operadores matemticos bsicos as como algunas funciones internas
del programa que utilizaremos en la prctica:

- traspuesta: la traspuesta de A se obtiene introduciendo A, donde es el carcter
apstrofo.
- suma y resta: se efecta con + y - , respectivamente, siempre que las matrices sean
del mismo tamao.
- producto: se efecta con *, siempre que el nmero de columnas de la primera
coincida con el numero de filas de la segunda.
- producto por un escalar: se efecta con *, para cualquier matriz y cualquier escalar.
- potenciacin: se efecta con ^ , siempre que la matriz sea cuadrada. Ej: A
n
= A^n.

Nota La precedencia de estos operadores es la estndar. Si se quiere variar, se har uso
de parntesis.

- rank(A): nos proporciona el rango de una matriz cualquiera
- eye(n): nos proporciona la matriz identidad de orden n
- det(A): nos proporciona el determinante de una matriz cuadrada A.
- solve(ecuacin): halla las soluciones de una ecuacin.
- zeros(n,m): proporciona la matriz nula de tamao n x m
.
4

ACTIVIDAD 1
Sean las matrices

3
0
2
;
1 4 8
0 3 0
0 1 2 -
B ;
5 1 3
4 1 3
3 1 2
C A .

i)Obtener la matriz (A
t
+B)C-(BA)
t
C-C/3
ii)Probar que: AB BA
(A+B)(A-B) A
2
-B
2

(AB)
t
=B
t
A
t
A
t
B
t

(A+A
T
)
T
= A+A
T


ACTIVIDAD 2

Siendo A y B las matrices de la actividad anterior, resolver el sistema matricial:

2X + Y = A
2X -3Y = B


ACTIVIDAD 3

Encontrar las matrices X e Y que verifiquen:

7 0
0 4
3 1
2 2
3
4 8
3 8
0 2
6 1
2 Y X Y X


En la prctica anterior vimos que las matrices simblicas se introducan con la
expresin simblica sym('[ ]') veremos en la siguiente actividad como actuan los
comandos rank y det sobre estas matrices.

ACTIVIDAD 4

Introducir las matrices
1 1 3 4
1 1
1 1
,
1 0
0 1
3 0
0 3
,
1 0
0 1
5 6
2 2
,
0 0
0 0
5 3
2 1
a b
b
a
M C B A
.
Calcular
(i) 3(-2A+3B)-(1/2)(C-2A)+5B-2(A-4C), C
t
, BA
t
,A
t
A, 7B,A B
t

5
(ii) el rango de A, B , C y M.
(iii) la escalonada reducida de las cuatro matrices (rref) y comprobar que el nmero de
unos principales coincide en cada caso con los datos obtenidos en (ii).
(iv) det(M) y comparar el resultado con el rango obtenido en (ii).

1.1 Operaciones por bloques
El concepto de matriz por bloques es particularmente til cuando hemos de trabajar con
matrices que son muy grandes, pero que se se pueden escribir de manera cmoda si
identificamos submatrices o bloques dentro de ellas. Esta divisin por bloques permite
simplificar tanto el estudio matricial como el clculo.
La operacin de sumar por bloques sigue las mismas reglas que la suma de
matrices: los bloques deben ser del mismo tamao.

Ejemplo 1:

Vamos a dividir por bloques las matrices A y B. Despus efectuaremos el producto
posible, BA:

0 0 0 4 2
0 0 0 7 1
4 9 - 7 1 0
2 - 4 1 1 2
6 - 5 4 3 1
B
4 5 3 2 0 0 0
7 4 1 3 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
0 0 0 0 0 0 1
A


En A identificamos dos submatrices nulas y una identidad.En B una submatriz nula.De
manera que una posible divisin por bloques es

4 5 3 2 0 0 0
7 4 1 3 | 0 0 0
0 0 0 0 1 0 0
0 0 0 0 | 0 1 0
0 0 0 0 | 0 0 1
A
0 0 | 0 4 2
0 0 0 7 1
4 9 - | 7 1 0
2 - 4 1 1 2
6 - 5 | 4 3 1
B


osea



C (0)
(0) I
A
) 0 ( F
E D
B
2,3
3,4 3
2 , 2

Las matrices A y B las podemos teclear en MATLAB , introduciendo previamente las
submatrices D,E,F y C como:

>>

6




>> E=[5 -6;4 -2;-9 4]

E =

5 -6
4 -2
-9 4

>> C =[3 -1 4 7;2 3 -5 4]

C =

3 -1 4 7
2 3 -5 4

>> D=[1 3 4;2 1 1;0 1 7]

D =

1 3 4
2 1 1
0 1 7

F=[-1 7 0;2 4 0]

F =

-1 7 0
2 4 0

>> B=[D E;F zeros(2,2)]

B =

1 3 4 5 -6
2 1 1 4 -2
0 1 7 -9 4
-1 7 0 0 0
2 4 0 0 0



>> A=[eye(3) zeros(3,4);zeros(2,3) C]


7






A =



1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 3 -1 4 7
0 0 0 2 3 -5 4


y por tanto


(0) F
EC D


C (0) F(0) (0) (0) FI
EC D(0) E(0) DI
C (0)
(0) I

(0) F
E D
BA
2,4
2,2 3,4 2,3 2,2 3
3,4 2,3 3
2,3
3,4 3
2,2

es decir:

> BA=[D E*C;F zeros(2,4)]

BA =

Columns 1 through 4

1 3 4 3
2 1 1 8
0 1 7 -19
-1 7 0 0
2 4 0 0

Columns 5 through 7

-23 50 11
-10 26 20
21 -56 -47
0 0 0
0 0 0




8


ACTIVIDAD 5

Consideremos las siguientes matrices A y B


0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
3 0 0 0 0
5 0 0 5
7 5 0 0
0 0 1 0
0 4 3 2
0 3 0 0 0
0 0 3 0 0
0 0 0 3 0
0 0 0 0 3
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 8 0 0 0
0 0 3 0 0
0 0 0 0 0
0 0 0 0 0
2 0 0 0
0 2 0 0
0 0 2 0
0 0 0 2
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
B A


Calcular A+B utilizando una divisin por bloques.





2. MATRICES ELEMENTALES

Recordemos que matrices elementales hay de tres tipos y que las denotbamos
como E
ij
, E
i
(a) , E
ij
(a), donde:

E
ij
es la matriz que resulta al efectuar en la identidad la operacin elemental de cambio
de fila i por fila j.

E
i
(a) es la matriz que resulta al efectuar en la identidad la operacin elemental de
multiplicar la fila i por el escalar no nulo a.

E
ij
(a) es la matriz que resulta al efectuar en la identidad la operacin elemental de sumar
a la fila i la fila j multiplicada por el escalar a.



2.1. Cmo generar matrices elementales

En la prctica anterior ya describimos como se efectan con MATLAB las
operaciones elementales en una matriz. Por consiguiente, una vez generada la identidad
de un determinado orden n (eye(n)), es posible generar todas las matrices elementales de
dicho orden. A continuacin describimos, mediante ejemplos, cul es el procedimiento.

9
Ejemplo 2 Vamos a generar la matriz elemental E de orden 6 que corresponde a la
operacin elemental cambiar fila 1 por fila 2, es decir, segn nuestra notacin E
12
.
Para ello generamos, en primer lugar, la matriz:

I=eye(6)

al pulsar enter aparece la identidad de orden 6:

I =

1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1


Ahora, dado que la operacin elemental efectuada en una matriz nos la devuelve con el
mismo nombre, para no perder I, tecleamos en primer lugar

E=I

y efectuamos la operacin en E, es decir, tecleamos

E([1 2],:)=E([2 1],:)

al pulsar enter aparece en pantalla la matriz

E =

0 1 0 0 0 0
1 0 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1

que es la que buscbamos.

Ejemplo 3 Vamos a generar la matriz elemental G de orden 6 que corresponde a la
operacin elemental 8(fila5), es decir, segn nuestra notacin E
5
(8). Igual que antes,
tecleamos

G=I

y efectuamos la operacin en G, es decir,

G(5,:)=8*G(5,:)

10
al pulsar enter aparece en pantalla la matriz

G =

1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 8 0
0 0 0 0 0 1

que es la que buscbamos.

Ejemplo 4 Vamos a generar la matriz elemental F de orden 6 que corresponde a la
operacin elemental fila4 - (1/2)fila3, es decir, segn nuestra notacin E
43
(-1/2). Igual
que antes, tecleamos

F=I

y efectuamos la operacin en F, es decir,

F(4,:)=F(4,:)-(1/2)*F(3,:)

al pulsar enter aparece en pantalla la matriz


F =

1.0000 0 0 0 0 0
0 1.0000 0 0 0 0
0 0 1.0000 0 0 0
0 0 -0.5000 1.0000 0 0
0 0 0 0 1.0000 0
0 0 0 0 0 1.0000

que es la que buscbamos.




ACTIVIDAD 6

Generar con MATLAB las matrices elementales de orden 8, E
36
, E
4
(-1/4), E
71
(-6). y
almacenarlas como E1, E2 y E3, respectivamente. Describir el proceso que se ha
seguido.
11

2.2. Interpretacin matricial de los algoritmos de eliminacin

Recordemos que si la matriz B es el resultado de efectuar una operacin
elemental en la matriz A, entonces B=EA, siendo E la matriz elemental que corresponde
a dicha operacin elemental. As pues, cada paso que efectuamos para escalonar una
matriz se interpreta como un producto de matrices. Este hecho nos permite guardar en
una matriz las operaciones que se efectan para obtener cualquier forma escalonada de
una matriz.

Ejemplo 5 Dada la matriz

A
0 4 6 1 2
4 7 2 4 3
2 3 4 9 5
1 7 1 4 0
3 0 9 6 1
8 9 0 2 0


vamos a efectuar en A la operacin elemental permutar las filas 1 y 6 y en la matriz
resultante efectuaremos la operacin fila 2- (1/2)fila 1 y la matriz que resulta la
almacenaremos como B. Tambin vamos a obtener la matriz T de paso, es decir, la que
verifica que TA=B.

Para efectuar en A las operaciones elementales que se nos indican y guardarnos,
adems, las operaciones efectuadas, podemos proceder as:

1) Hacemos las operaciones elementales en A, es decir, tecleamos

B=A

B([1 6],:)=B([6 1],:)

B(2,:)=B(2,:)-(1/2)*B(1,:)

La matriz B que aparece finalmente en pantalla es

B =

8.0000 9.0000 0 2.0000 0
0 2.5000 -2.0000 3.0000 3.0000
2.0000 3.0000 4.0000 -9.0000 5.0000
-1.0000 7.0000 -1.0000 4.0000 0
-3.0000 0 9.0000 -6.0000 1.0000
0 -4.0000 6.0000 -1.0000 2.0000
12

(Obsrvese que el cambio B=A se hace para no perder la A inicial).

2) Calculamos ahora la matriz T que verifica que TA=B. Para ello tecleamos

I=eye(6)

T=I

T([1 6],:)=T([6 1],:)

T(2,:)=T(2,:)-(1/2)*T(1,:)

La matriz T que finalmente aparece en pantalla es

T =

0 0 0 0 0 1.0000
0 1.0000 0 0 0 -0.5000
0 0 1.0000 0 0 0
0 0 0 1.0000 0 0
0 0 0 0 1.0000 0
1.0000 0 0 0 0 0

Comprobar que efectivamente TA=B.

Observar que T = E F, siendo E=E
21
(-1/2) y F=E
16
, luego el ejercicio se poda
haber hecho tambin generando, en primer lugar, las matrices elementales E y F, es
decir, tecleando
I=eye(6); F=I; F([1 6],:)=F([6 1],:)

E=I; E(2,:)=E(2,:)-(1/2)*E(1,:)

y despus tecleando

B=E*F*A

Comprueba que efectivamente sale la misma matriz B.

ACTIVIDAD 7
Introduce una matriz cualquiera de 8 filas y 10 columnas.
Premultiplcala por las matrices E1, E2 y E3. Observa los resultados obtenidos

ACTIVIDAD 8
a) En la matriz D efectuar las operaciones elementales que figuran a continuacin y
almacenar la matriz obtenida como F.
1) permutar las filas 3 y 6,
2) multiplicar la fila 4 por -1/4,
3) restar a la fila 7 la fila 1 multiplicada por 6.
13


2 1 0 0 1 7
4 1 4 1 8 5
0 1 8 8 5 2
1 19 11 9 8 3
3 2 9 0 0 3
4 3 3 1 1 1
10 9 0 0 0 0
9 2 6 5 3 1
= D

b) Obtener la matriz T que verifica que TD=F
c) Obtener la matriz S tal que SD=E, siendo


1 19 11 9 8 3
4 1 4 1 8 5
81 17 62 37 32 11
3 / 2 3 / 1 0 0 3 / 1 3 / 7
3 2 9 0 0 3
4 3 3 1 1 1
10 9 0 0 0 0
36 8 24 20 12 4
= E

ACTIVIDAD 9

Introduce la matriz:
1 0 0 1 1
0 0 0 0 0
0 0 0 1 1
1 0 2 0 0
0 0 3 2 1
A

i) Calcula y define las matrices elementales que transforman A a su forma escalonada
reducida
ii) Utiliza el comando rref para comprobar el resultado obtenido.
iii) Es A invertible?

3. CLCULO DE INVERSAS

Para calcular la inversa de una matriz cuadrada A teclearemos inv(A). Si la
matriz es regular (invertible) nos proporciona la inversa y si no lo es, nos devuelve una
matriz que tiene en todas las posiciones la expresin Inf. No obstante, hay matrices no
invertibles para las que MATLAB s que nos proporciona una matriz inversa con un
mensaje explicativo. La justificacin de este hecho la comentaremos en la siguiente
14
seccin. Para estos casos, podemos pedirle el rango a la matriz o bien calcular el
producto de la matriz por la inversa que nos ha proporcionado MATLAB y observar que,
o no tiene rango mximo, o bien que el mencionado producto no es la identidad.


Ejemplo 6 Vamos a aplicar el comando inv a la matrices


2 2 2
1 1 1
1 1 1

4 5 - 0
9 0 0
1 - 5 2
B A




inv(A)

ans =

0.5000 -0.1667 0.5000
0 0.0889 -0.2000
0 0.1111 0


inv(B)

Warning: Matrix is singular to working precision.




ans =

Inf Inf Inf
Inf Inf Inf
Inf Inf Inf



ACTIVIDAD 10
Prueba si las siguientes matrices son o no invertibles utiliza los comandos rref y inv
y observa si los resultados coinciden

11 8 6 4 2
24 12 1 2 2
12 6 0 1 1
9 8 8 5 2
5 4 3 2 1
,
2 0 0 0 0
1 4 1 1 1
1 1 3 0 1
4 6 4 2 0
5 7 1 2 1
,
2 0 0 0 0
1 1 1 1 1
2 4 0 0 2
2 1 2 1 0
5 4 3 2 1
Y Z X


15


ACTIVIDAD 11

Para cada par de matrices X e Y del apartado anterior tales que XY sea invertible
calcular:
(i) inv(XY)-inv(X)inv(Y)
(ii) inv(XY)-inv(Y)inv(X)


En el caso de matrices simblicas para discutir su invertibilidad utilizaremos la funcin
det.

Ejemplo 7

Vamos a calcular la inversa de la matriz simblica

1 0 a - 4
1 1 - a -
1 a 1
M
Definiremos la matriz

>> M=sym('[1,a,1;-a,-1,1;4-a,0,1]')


M =

[ 1, a, 1]
[ -a, -1, 1]
[ 4-a, 0, 1]

Calcularemos su determinante
det(M)

ans =

3+3*a

y solucionaremos la ecuacin con el comando

>> solve(ans)

ans =

-1
Luego tiene inversa cuando a -1. Al calcular la inversa con MATLAB,
>> inv(M)

ans =
16

[ -1/3/(a+1), -1/3*a/(a+1), 1/3]
[ 4/3/(a+1), 1/3*(a-3)/(a+1), -1/3]
[ -1/3*(-4+a)/(a+1), -1/3*a*(-4+a)/(a+1), -1/3+1/3*a]

Obtenemos la inversa para a -1.


ACTIVIDAD 12

Estudiar la inversa de la siguiente matriz simblica



c c c
c c
c
M 7
8 2
1

4. DESCOMPOSICIN LU DE UNA MATRIZ CUADRADA

Recordemos que cualquier matriz cuadrada A admite una factorizacin LU,
siendo U la matriz que resulta al aplicarle a A el algoritmo de eliminacin de Gauss.
Recordemos tambin que L es un producto de matrices elementales, es decir, es siempre
invertible y que la inversa de L es precisamente la matriz que almacena las operaciones
elementales que nos transforman A en U. MATLAB aplica para calcular U el algoritmo
de eliminacin de Gauss con pivotacin parcial, es decir, elige como pivote en cada
paso el elemento de la columna con mayor valor absoluto.

El programa dispone de dos comandos para obtener la descomposicin LU:

[L,U]=lu(A)
[L,U,P]=lu(A).

En ambos casos, U es la misma matriz triangular superior. En el primer caso L no
siempre es una matriz triangular inferior, sino que suele ser una triangular inferior
permutada. Pero en el segundo caso, L es una matriz triangular inferior con unos en la
diagonal y P es una matriz permutacin que verifica que PA=LU, es decir, A=P
-1
LU es
la factorizacin PLU de A. (Observar que las permutaciones vienen del uso de la
pivotacin parcial).

Nota: Si queremos efectuar la descomposicin LU de dos matrices A y B, para
que nos distinga ambas descomposiciones las debemos almacenar con distintos
nombres. As, por ejemplo, podemos denotar por LA, UA a la descomposicin de A y
por LB, UB a la de la matriz B, es decir, teclearemos para A

[LA,UA]=lu(A)

y anlogamente para B.
17

Ejemplo 8 Vamos a calcular las descomposiciones LU de las matrices A, B y C del
ejemplo 5 .

[LA,UA]=lu(A)


LA =

1 0 0
0 0 1
0 1 0

UA =

2 5 -1
0 -5 4
0 0 9

[LB,UB]=lu(B)

LB =

0.5000 0 1.0000
0.5000 1.0000 0
1.0000 0 0

UB =

2 2 2
0 0 0
0 0 0


[LC,UC]=lu(C)

LC =

0.1429 1.0000 0
0.5714 0.5000 1.0000
1.0000 0 0


UC =

7.0000 8.0000 9.0000
0 0.8571 1.7143
0 0 0.0000

Son muchas las aplicaciones que hace MATLAB de la descomposicin LU de una
matriz . Aqu vamos a exponer tres de ellas: la resolucin de sistemas de ecuaciones y el
clculo de inversas.

18
a) Resolucin de sistemas de ecuaciones.

Consideremos el sistema compatible de n ecuaciones y n incgnitas Ax = b. El
programa resuelve directamente el sistema. Basta teclear

x = A\b

y se obtiene la solucin.

Vamos a describir lo que en realidad ha hecho el programa:

1) Obtiene la descomposicin LU de A
2) Resuelve por sustitucin los sistemas triangulares Ly = b
Ux = y.

En la prctica siguiente analizaremos detalladamente el comando (\).



b) Inversa de una matriz

Como ya hemos indicado en la seccin anterior, la inversa de una matriz A se
calcula directamente tecleando inv(A). Veamos en realidad que hace el programa.

1) Obtiene la descomposicin LU de A
2) Calcula det(U)
3) Si det(U) es cero, al teclear inv(A) nos dice que A es singular y por consiguiente no
tiene inversa. Si det(U) 0, entonces calcula la inversa de L y la de U resolviendo por
sustitucin los sistemas LX=I, UX=I y despus calcula el producto U
-1
L
-1
y nos lo
devuelve como inv(A).

As pues, es posible tener una matriz no invertible que por errores de redondeo
en la eliminacin de Gauss presente los pivotes no nulos en U. En tal caso, el ordenador
calcular la inversa de A con un mensaje que avisa que se puede estar cometiendo un
error.

Ejemplo 9 Siguiendo el proceso que acabamos de describir, vamos a calcular las
inversas del ejemplo 5:

Para A, como det(UA) 0, si tecleamos

inv(UA)*inv(LA)








19
ans =


0.5000 -0.1667 0.5000
0 0.0889 -0.2000
0 0.1111 0

que es la que sale aplicando directamente inv a la matriz A.

Para la matriz B, como det(UB)=0, nos dice que la matriz es singular y nos
proporciona la expresin que aparece en el ejemplo 6.

La matriz C tambin es singular. Pero, como hemos visto en el ejemplo anterior,
el determinante de UC era no nulo, por consiguiente MATLAB calcula la inversa de UC.
En este caso,

inv(UC)*inv(LC)


Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.541976e-018.

ans =

1.0e+016 *

-0.4504 0.9007 -0.4504
0.9007 -1.8014 0.9007
-0.4504 0.9007 -0.4504

Esta matriz es la que nos proporcionaba como inversa de C en el ejemplo 6 y que como
ya hemos comprobado no es la inversa de C, ya que C no es invertible.

ACTIVIDAD 13

Introducir la matriz A
3 4 0 2
1 2 1 0
1 1 1 1
0 1 0 1
A
i) Utilizar operaciones elementales para determinar la matriz B talque BA=U siendo U
una matriz triangular superior.
ii) Sea L=inv(B). Probar si A=LU
iii) Repetir el proceso anterior utilizando pivotacin parcial y comparalo con el
resultado queda MATLAB al utilizar "lu"





20
ACTIVIDAD 14
a) Obtener las inversas de las siguientes matrices

0 3 3 2
9 0 2 9
2 7 6 5
2 3 5 11
H
9 20 7 39
9 0 2 9
2 7 6 5
2 3 5 11
J
4 22 14 2
2 11 7 1
2 7 6 5
2 3 5 11
K

b) Comprobar que J es singular. Describir como hacis esta comprobacin.
c) Justificar el hecho de que MATLAB proporcione una inversa a J.

ACTIVIDAD 15
Sin usar la funcin inv ni tampoco la LU, obtener la inversa de la matriz H de la
actividad 14. ( Nota: repasar la funcin rref descrita en la prctica anterior).



ACTIVIDAD 16
Aplicar la funcin rref a las matrices J y K de la actividad 12.. Almacenar las dos
matrices obtenidas como R1 y R2, respectivamente. Con ayuda de dicha funcin calcular
las matrices S y T que verifican que S J=R1 y T K=R2.

Vous aimerez peut-être aussi