You are on page 1of 17

...

M
etodos num
ericos
Derivaci
on e Integraci
on
Autor:
Pa
ul Medina, Ph.D.

Indice
1. Descomposici
on en valores singulares DVS
1.1. Introduccion . . . . . . . . . . . . . . . . . . . .
1.2. Valores singulares de una matriz . . . . . . . . .
1.2.1. Ejemplo . . . . . . . . . . . . . . . . . .
1.3. Pseudo-inversa de una matriz . . . . . . . . . .
1.3.1. Ejemplo . . . . . . . . . . . . . . . . . .
1.3.2. Sistemas lineales mal condicionados . . .
1.4. Aplicaciones . . . . . . . . . . . . . . . . . . . .
1.4.1. Resolucion de sistemas de ecuaciones mal
1.4.2. Compresion de imagenes digitales . . . .
1.5. Bibliografa . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
condicionados
. . . . . . . . .
. . . . . . . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

1
1
1
2
3
4
5
8
8
11
16

1.
1.1.

Descomposici
on en valores singulares DVS
Introducci
on

A lo largo del curso se han estudiado diversas factorizaciones de matrices reales; por ejemplo,
que toda matriz simetrica A puede ser factorizada como A = PDPT , donde P es una matriz
ortogonal y D es una matriz diagonal que contiene los autovalores de A. Si A no es simetrica, una
factorizacion de este tipo no es posible, pero todava es posible factorizar una matriz cuadrada A
como A = PDP1 , donde D adquiere una forma lo mas simple posible y P es una matriz invertible.
Cabe recalcar que para una clase importante de matrices (las matrices diagonalizables), D es una
matriz diagonal que contiene los autovalores de A. Estas dos propiedades sugieren pensar en la
factorizacion mas general posible para toda matriz A (sea simetrica o no, sea cuadrada o no).
Efectivamente, se puede demostrar que todas las matrices admiten una factorizacion de la forma
A = UVT ,

(1)

donde U y V son matrices ortogonales y es una matriz diagonal o practicamente diagonal.

1.2.

Valores singulares de una matriz

Teorema 1. Para cualquier matriz Amn , la matriz (AT A)nn es simetrica y por lo tanto puede
ser diagonalizada ortogonalmente. Los autovalores de (AT A)nn son todos reales y no negativos, es
decir, mayores o iguales a 0.
Definici
on 1 (Valores singulares). Para una matriz Amn , los valores singulares de A son las
races cuadradas de los autovalores de (AT A)nn y se denotan mediante 1 , 2 , . . . , n . Es decir, si
i es un autovalor de (AT A)nn entonces
p
i = i .
Normalmente los valores singulares de Amn se ordenan de la siguiente forma:
1 2 . . . n .
Teorema 2 (Descomposicion en valores singulares). Sea Amn con valores singulares 1 2
. . . r , r 6= 0 y r+1 = r+2 = . . . = n = 0. Consideremos, sin perdida de generalidad, el
caso m > n. Entonces, existe una matriz Umm ortogonal, una matriz Vnn ortogonal y una matriz
mn , tal que
A = UVT ,
1

donde

Drr

1 . . .
.. . .
= .
.
0 ...

Drr

Or(nr)

,
O(mr)r O(mr)(nr)

0
011 . . . 01
. ..
.. y O
.
. ..
pq = ..
.
r
0p1 . . . 0pq

para todo r, p, q N. Las columnas de la matriz V, vi , se denominan vectores singulares por la


derecha de A, y corresponden a los autovectores normalizados de la matriz simetrica (AT A)nn .
Las columnas de la matriz U, ui , se denominan vectores singulares por la izquierda de A, y se
pueden calcular mediante la igualdad ui = 1i Avi para todo i 6= 0.
1.2.1.

Ejemplo

Encontrar la descomposicion en valores singulares (DVS) de la siguiente matriz.

1 1 0
A=
0 0 1
1. Calculemos los valores singulares. Por la defincion 1 para encontrar los valores singulares de
la matriz A, debemos determinar los autovalores de la la matriz AT A.

1 1 0
AT A = 1 1 0
0 0 1
Los autovalores de AT A son
1 = 2,

2 = 1 y 3 = 0

y sus autovectores correspondientes son




1
0
1 , 0 ,
1
0
(Verificar!)

1
1 .
0

2. Determinemos la matriz V. Las columnas de la matriz V son los autovectores normalizados


de los autovalores de la matriz AT A.
La matriz V es

V=

1
2
1
2

0 12
0 12
1
0

(Verificar!)
3. Determinemos la matriz U. Sea vi la columna i de la matriz V y i el valor singular correspondiente. La columna ui de la matriz U es
1
Avi .
i

1 0
U=
0 1
ui =

(Verificar!)
4. La factorizacion de la matriz A sera

A=

1 1 0
0 0 1

1 0
0 1

2 0 0
0 1 0

1
2

0
12

1
2

1
2

0
1
0

(Verificar!)

1.3.

Pseudo-inversa de una matriz

Hemos estudiado durante el curso que no toda matriz A tiene una matriz inversa. De hecho,
esta propiedad solo es aplicable (aunque no a todas) a las matrices cuadradas. Tambien hemos
introducido el concepto de matriz pseudo-inversa A = (AT A)1 AT para resolver problemas de
mnimos cuadrados en donde se tena un sistema de ecuaciones lineales con mas ecuaciones que
incognitas. Es evidente que la formula A = (AT A)1 AT es solo valida si la matriz AT A es invertible. Extendemos aqu el concepto de matriz pseudo-inversa de cualquier matriz gracias a la
descomposicion en valores singulares.
Definici
on 2 (Pseudo-inversa). Sea Amn una matriz m n cuya descomposici
on en valores
singulares es
A = UVT ,
3

y que tiene r valores singulares distintos de cero (1 2 . . . r , r 6= 0 y r+1 = r+2 = . . . =


n = 0). La pseudo-inversa de A es la matriz n m, A , definida por
A = V UT ,
donde

=
y

1
1

1
Drr
= ...
0
1.3.1.

1
Drr
Or(mr)
O(nr)r O(nr)(mr)

...
..
.
...

0
.. ;
.

011 . . . 01s

= ... . . . ... .
0p1 . . . 0ps

Ops

1
r

Ejemplo
Encontrar la pseudo-inversa de la matriz

1 1 0
A=
0 0 1

1. En primer lugar, debemos determinar la descomposicion en valores singulares de la matriz A.


Por el ejemplo anterior sabemos que

A=

1 1 0
0 0 1

1 0
0 1

2 0 0
0 1 0

1
2

0
12

1
2

1
2

0
1 .
0

donde

U=

1 0
0 1

2 0 0
0 1 0

y VT =

2. Calculemos . Por la definicion de sabemos que

1
Drr
Or(mr)

=
,
O(nr)r O(nr)(mr)

1
2

0
12

1
2

1
2

0
1
0

donde

1
1

1
Drr
= ...
0

...
..
.
...

.. y O
ps =
.
1
r

Puesto que de A es

2 0 0
0 1 0

23 =
donde


D22 =

2 0
0 1

011 . . . 01s
.. . .
.
. .. .
.
0p1 . . . 0ps

Utilizando la definicion de tendremos que

y O21 =

1
2

32 = 0
0

0
0

0
1
0

3. Calculemos A . Por la definicion sabemos que


A = V UT .
Entonces

A =

1
2
1
2

1.3.2.

1
1

0 12
0
0
2
2
1 0
0 12 0 1
= 12 0 .
0 1
0 1
0 0
1
0

Sistemas lineales mal condicionados

Introduzcamos ahora algunas generalizaciones que nos seran de utilidad a lo largo de la


practica cuando abordemos sistemas lineales mal condicionados.
Definici
on 3 (Matriz mal condicionada). Una matriz A esta mal condicionada si peque
nos cambios
en sus elementos pueden producir cambios grandes en las soluciones del sistema lineal Ax = b. Si
peque
nos cambios de los elementos de A producen u
nicamente cambios peque
nos en las soluciones
de Ax = b, entonces se dice que A est
a bien condicionada.

Ejemplo
Consideremos las matrices B y d

100
50

50
33,3333

33,3333
25
B=

25
20

20
16,6667
16,6667 14,2857

tales que

33,3333
25
20
16,6667
25
20
16,6667 14,2857

20
16,6667 14,2857
12,5

16,6667 14,2857
12,5
11,1111

14,2857
12,5
11,1111
10
12,5
11,1111
10
9,0909

y d=

1
1
1
1
1
1

La solucion exacta del sistema de ecuaciones lineales Bx = d es:

0,1024
2,4155

13,2492

x=
26,8697 .

21,5704
5,3864
Ahora supongamos que perturbamos ligeramente uno de los coeficientes de la matriz B. Por ejemplo,
tal que B(i,
j) = B(i, j) i, j salvo B(6,
4) = 11,1110, en lugar de 11,1111. La
consideremos B

solucion del sistema B x = d es ahora

0,0700
1,6081

8,3197

x =
15,0451 .

9,3534
0,8313
Es decir, un cambio de alrededor de una cienmilesima en un coeficiente ha dado lugar a cambios muy
significativos en el vector solucion. Es importante observar que las perturbaciones de los coeficientes
de un sistema lineal no ocurren de forma intencionada, como en el anterior ejemplo donde hemos
introducido nosotros dichas perturbaciones. Las fuentes mas comunes de estas perturbaciones son
el truncamiento y redondeo de los resultados parciales que tiene lugar de forma inevitable durante
los calculos. Recordad que los ordenadores trabajan con aritmetica finita, lo que significa que la
representacion de practicamente cualquier n
umero real lleva asociado un error. Aunque bien es
verdad que estos errores son muy peque
nos, tambien lo es que estos se van acumulando durante
los calculos produciendo cambios que no son despreciables y pueden influir, como hemos visto, en
los resultados que muestra el ordenador. En consecuencia, es importante saber, si un sistema lineal
6

esta mal condicionado y disponer de metodos para abordar los problemas que de ellos se derivan.
Como veremos, la descomposicion en valores singulares es uno de ellos. Antes introduciremos algunos conceptos.
Definici
on 4 (Rango numerico). Sea el n
umero real > 0 una cota para los valores singulares de
una matriz Amn , tal que
1 2 q > q+1 r > 0,

r+1 = r+2 = . . . = n = 0 .

El n
umero natural r coincide con el rango de la matriz A. Al n
umero natural q para el cual
q >
se le llama rango numerico de la matriz A.
Definici
on 5 (Matriz truncada). Sea Amn una matriz m n cuya descomposici
on en valores
singulares esta dada por
A = UVT
y sea el n
umero natural q su rango numerico. La matriz truncada de A se define como
At = U t VT ,
donde

t =

Dqq

1
..
= .
0

Dqq

Oq(nq)

,
O(mq)q O(mq)(nq)

... 0
011 . . . 01s
. ..
.
.
..
. .. y Ops = ..
. .. .
. . . q
0p1 . . . 0ps

Definici
on 6 (Pseudo-Inversa truncada). Sea Amn la matriz de la definicion anterior cuyo rango
numerico es q. La matriz pseudo-inversa truncada de A se define como
At = V t UT ,
donde

1
1

.
1
Dqq
= ..
0

=
...
..
.
...

1
Dqq
Oq(mq)
O(nr)q O(nr)(mr)

0
..
. ;

Ops

1
q

011 . . . 01s

= ... . . . ... .
0p1 . . . 0ps

1.4.

Aplicaciones

La descomposicion en valores singulares de una matriz es una herramienta u


til en muchas
aplicaciones, como por ejemplo: resolucion de sistemas de ecuaciones mal condicionados, aproximacion por mnimos cuadrados y compresion de imagenes digitales.
1.4.1.

Resoluci
on de sistemas de ecuaciones mal condicionados
Supongamos que deseamos resolver el sistema de ecuaciones
Ax = b

donde

1 2 1
A = 10 18 12
20 22 40

8
y b = 78
144

La solucion exacta de este sistema de ecuaciones lineales es:



3
x= 2 .
1
Ahora supongamos que consideramos la matriz perturbada

1 2 1
A = 10 18 12 .
20 22 39
= b es
La solucion exacta del sistema lineal perturbado Ax

0
x = 3 .
2
(Verificar!)
Por que pasa esto? Esto ocurre porque la matriz A esta mal condicionada y peque
nos errores
en las entradas de la matriz A producen grandes errores en la solucion final.
Veamos ahora como la descomposicion en valores singulares de una matriz nos ayuda a tratar
este problema. Consideremos nuevamente nuestro sistema lineal Ax = b y busquemos una solucion
del problema At x = b. Esta solucion viene dada por:
x = At b
Utilizemos el programa Matlab para ver lo que ocurre.
8

1. Escribamos la matriz A
A = [1 2 1; 10
A=
1
10
20

18 12; 20 22 40]
2 1
18 12
22 40

y escribamos la matriz b
b = [8; 78; 144]
x=
8
78
144
2. Realicemos la descomposicion en valores singulares de la matriz A. Para ello escribamos la
siguiente instruccion

U=

[U, D, V ] = svd(A)
0,0400 0,1203 0,9919
0,4091 0,9037 0,1261
0,9116 0,4108 0,0131

D=
54,5107
0
0
0
9,3049
0
0
0
0,0079
V =
0,4103 0,1011 0,9063
0,5045 0,8028 0,3179
0,7597 0,5877 0,2783
Esto de acuerdo a la definicion 2 significa que
A = U DV T
3. Consideremos la matriz D.

54,5107
0
0

0
9,3049
0
D=
0
0
0,0079
9

Como podemos observar el valor singular 0,0079 es muy peque


no. Si consideramos = 0,01
de forma que
1 > 2 ,
el rango de la matriz A sera q = 2 (ver definicion 4). Ahora utilizando la definicion 5 podemos
truncar la matriz A y tener que

0,0400 0,1203 0,9919


54,5107
0
0
0,4103 0,5045 0,7597
0
9,3049 0 0,1011 0,8028 0,5877 .
At = 0,4091 0,9037 0,1261
0,9116 0,4108 0,0131
0
0
0
0,9063 0,3179 0,2783
Para truncar la matriz A, basta con truncar la matriz D en su rango numerico para ello
escribimos la siguiente instruccion

D(3, 3) = 0
D=
54,5107
0
0
0
9,3049 0
0
0
0
escribimos

Dt = D
Dt =
54,5107
0
0
0
9,3049 0
0
0
0
Esto me indica que mi nueva matriz Dt esta truncada.
4. Calculemos At . De acuerdo a la definicion 6 basta con invertir los valores de la diagonal de
la matriz truncada, para ello escribimos la siguientes instrucciones

Dtin = Dt; Dtin(1, 1) = 1/Dtin(1, 1); Dtin(1, 1) = 1/Dtin(1, 1)


Dtin =
0,0183
0
0
0
0,1075 0
0
0
0
Finalmente calculamos la matriz pseudo-inversa truncada. Escribimos la siguiente instruccion

Apit = V DtinU 0
Apit =
0,0016
0,0129
0,0024
0,0107
0,0818 0,0270
0,0070 0,0514 0,0387
10

5. Para resolver el sistema Ax = b, utilizando la descomposicion en valores singulares (x =


At b), escribimos la siguiente instruccion
x = Apit b
x=
1,3642
2,5738
1,5023
Ahora de manera similiar al ejemplo mostrado, perturbemos nuestra matriz A de manera que

1 2 1
A = A = 10 18 12 .
20 22 39
= b. Para ello debes seguir las instrucciones antes indicadas.
Resolvamos ahora el sistema Ax
Obtendras
x = Ainvt b
x=
1,3667
2,5320
1,5631
Como puedes observar, la descomposicion en valores singulares nos ha ayudado a reducir el mal
condicionamiento de la matriz A. Lo que en realidad hemos hecho es reemplazar el sistema mal
condicionado Ax = b por uno cercano, At x = b que esta bien condicionado.
1.4.2.

Compresi
on de im
agenes digitales

Supongamos que tenemos una imagen en tonos de gris con un tama


no de 340 280 pixeles.
Cada pixel tiene 256 tonos de gris, lo que puede representarse mediante un n
umero entre 0 y 255.
Podemos almacenar esta informacion en una matriz A340280 , pero transmitir y manipular estos
95200 n
umeros es muy costoso. Sin embargo, gracias a la descomposicion en valores singulares
podemos transmitir solamente los datos correspondientes a los primeros 20 valores singulares de
A340280 . De esta forma, en lugar de transmitir los 95200 n
umeros, solo necesitamos enviar los 20
valores singulares de la matriz D, mas los 20 vectores columna de la matriz U y los 20 vectores
columna de la matriz V , es decir, un total de
20 + 20(340) + 20(280) = 12420
n
umeros. Como se puede apreciar el ahorro es substancial.
11

Lectura y representaci
on de im
agenes en Matlab
Matlab implementa los comandos imread e imwrite para la lectura y escritura, respectivamente, de ficheros graficos. Para leer una imagen, almacenada en el fichero playa.jpg y asignarla
a una variable A podemos ejecutar el comando
A = imread(playa.jpg,jpg);
El resultado sera una matriz bidimensional de tipo uint81 , que podemos visualisar en Matlab por
medio de la instrucciones
imagesc(A); colormap(gray);
Finalmente, para poder manipular la matriz A necesitamos convertirla en una matriz de formato
numerico. Esto lo realizamos por medio de la instruccion double
A=double(A);
Una vez transformada la matriz A y despues de realizar el tipo de operaciones necesarias para
comprimir la imagen (que esta matriz representa) querremos visualizar la imagen resultante. Para
ello, debemos convertir la matriz obtenida, A, en una matriz de formato uint8. Para convertir una
matriz a formato uint8 el proceso es el inverso. Escribir
A=uint8(A);
y para visualizarla escribimos las instrucciones
imagesc(A); colormap(gray);
En el caso de querer guardar la nueva imagen, basta ejecutar
imwrite(A,playa.mod.jpg,jpg);
1
El tipo uint8 en Matlab es un arreglo numerico con valores entre 0 y 255 que no admite operaciones matematicas.
La instruccion uint8 convierte cualquier arreglo numerico en un arreglo con valores entre 0 y 255

12

Ejemplo de compresi
on de imagenes en blanco y negro o escala de grises
La rutina o codigo en Matlab que se muestra a continuacion permite comprimir una imagen
en blanco y negro (o escala de grises) utilizando la descomposicion en valores singulares.
Consideremos la siguiente imagen:

Copia el codigo indicado en un m-file de Matlab y guardalo con el nombre compbyn.mat. A


continuacion guarda la imagen mostrada con el nombre playa.jpg
Rutina
%Practica DVS
%Compresion de Imagenes en blanco y negro o escala de grises
%-------------------clear all %borra todas las variables
%------------------------%Pantalla para presentar la imagen
figure(1)
%------------------------%Leemos la imagen guardada con el nombre playa.jpg y la asignamos a la variable A0
A0=imread(playa.jpg,jpg);
%-------------------------13

%Visualizamos la imagen
imagesc(A0); colormap(gray);
%-------------------------%Convertimos la imagen a formato numerico
A0=double(A0);
%-------------------------%Calculamos el tamano de la matriz ma0=filas y na0=columnas
[ma0,na0]=size(A0);
%-------------------------%Descomposicion en valores singulares de la matriz A0
[U0, S0, V0]=svd(A0);
%-------------------------%Calculamos el tamano de la matrices U0, S0 y V0
[mu0, nu0]=size(U0); [ms0, ns0]=size(S0); [mv0, nv0]=size(V0);
%--------------------------%Compresion
%--------------------------%Pantalla para presentar la nueva imagen
figure(2)
%--------------------------%bucle
for k=1:6 %k es el numero de imagenes a presentar
%r0 es el numero de valores singulares de A0
r0=2^k;
%factorizacion de la matriz A0, A0=USV
imaA0=U0(:,1:r0)*S0(1:r0,1:r0)*V0(:,1:r0);
%tamano de la matriz (imagen) comprimida
comp=(mu0+nv0+1)*r0;
%tamano de la matriz (imagen) original
total=ma0*na0;
%muestra en la pantalla los valores de k, r0, total y comp
disp([ k r0 total comp])
%transformo la matriz de formato doble a uint8
imaA0=uint8(imaA0);
%ventana para la nueva imagen
subplot(2,3,k);
%instrucciones para visualizar la imagen
imagesc(imaA0); colormap(gray);
14

end
%fin del bucle
%fin del codigo
Ahora ejecuta el codigo. Para ejecutarlo tienes dos alternativas
1. desde el m-file a traves de comando run (f5) o
2. desde la ventana de comandos escribiendo el nombre del archivo, es decir, compbyn.
Como podras observar tienes dos ventanas. En la primera ventana (figure 1) se encuentra la
imagen original y en la segunda ventana (figure 2) las distintas compresiones realizadas.

50

50

50

100

100

100

150

150

150

200

200

200

250

250

250

300

300

300

350

350

350

400

400

400

450

450
200

400

600

800

450
200

400

600

800

50

50

50

100

100

100

150

150

150

200

200

200

250

250

250

300

300

300

350

350

350

400

400

400

450

450
200

400

600

800

200

400

600

800

200

400

600

800

450
200

400

600

800

Preguntas y tareas
1. Con c
ual de la imagenes comprimidas te quedaras? Por que?
2. Cuantos valores singulares utiliza cada imagen comprimida?
3. En el codigo anterior, r0 representa el n
umero de valores singulares, cambia dicha instrucion
k
por r0 = 2 k, r0 = 3 y r0 = 3 k. Con cual de estas instrucciones te quedaras para
calcular r0? Por que?
4. Si aumentas el n
umero de valores singulares, mejora la compresion?
15

5. Cuantos valores singulares tomaras para considerar que tienes una buena imagen y una
buena compresion?

1.5.

Bibliografa

1. LAY D.C., Algebra


lineal y sus aplicaciones, Addison-Weslay, 2 Edicion 1999.

2. POOLE D., Algebra


lineal, Una introduccion moderna, Thomson. Mexico 2004

16

You might also like