Professional Documents
Culture Documents
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)
1.2.
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
Ejemplo
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
1
1 .
0
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.
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
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
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 =
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
y O21 =
1
2
32 = 0
0
0
0
0
1
0
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
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
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
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
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
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
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
Apit = V DtinU 0
Apit =
0,0016
0,0129
0,0024
0,0107
0,0818 0,0270
0,0070 0,0514 0,0387
10
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
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:
%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
16