Documente Academic
Documente Profesional
Documente Cultură
Métodos numéricos
Derivación e Integración
Autor:
Paúl Medina, Ph.D.
Índice
1. Descomposición en valores singulares DVS 1
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Valores singulares de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Pseudo-inversa de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2. Sistemas lineales mal condicionados . . . . . . . . . . . . . . . . . . . . . . . 5
1.4. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1. Resolución de sistemas de ecuaciones mal condicionados . . . . . . . . . . . 8
1.4.2. Compresión de imágenes digitales . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5. Bibliografı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1. Descomposición en valores singulares DVS
1.1. Introducción
A lo largo del curso se han estudiado diversas factorizaciones de matrices reales; por ejemplo,
que toda matriz simétrica 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 simétrica, una
factorización de este tipo no es posible, pero todavı́a es posible factorizar una matriz cuadrada A
como A = PDP−1 , donde D adquiere una forma lo más 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
factorización más general posible para toda matriz A (sea simétrica o no, sea cuadrada o no).
Efectivamente, se puede demostrar que todas las matrices admiten una factorización de la forma
A = UΣVT , (1)
Definición 1 (Valores singulares). Para una matriz Am×n , los valores singulares de A son las
raı́ces cuadradas de los autovalores de (AT A)n×n y se denotan mediante σ1 , σ2 , . . . , σn . Es decir, si
λi es un autovalor de (AT A)n×n entonces
p
σi = λi .
σ1 ≥ σ2 ≥ . . . ≥ σn .
1
donde · ¸
Dr×r Or×(n−r)
Σ= ,
O(m−r)×r O(m−r)×(n−r)
σ1 . . . 0 011 . . . 01
.. . . .. y O . .. .
Dr×r = . . . p×q = .. . ..
0 ... σ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 simétrica (AT A)n×n .
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 descomposición en valores singulares (DVS) de la siguiente matriz.
· ¸
1 1 0
A=
0 0 1
1. Calculemos los valores singulares. Por la definción 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
λ1 = 2, λ 2 = 1 y λ3 = 0
(¡Verificar!)
2
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
√1 0 − √12
2
V= √1
2
0 √12
0 1 0
(¡Verificar!)
(¡Verificar!)
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 · ¸
−1
† Dr×r Or×(m−r)
Σ = ,
O(n−r)×r O(n−r)×(m−r)
y
1
σ1
... 0 011 . . . 01s
.. ;
−1
Dr×r = ... ..
. . Op×s = ... . . . ... .
1
0 ... σr
0p1 . . . 0ps
1.3.1. Ejemplo
Encontrar la pseudo-inversa de la matriz
· ¸
1 1 0
A=
0 0 1
donde
· ¸ · √ ¸ √1 √1 0
1 0 2 2
2 0 0
U= , Σ= y VT = 0 0 1
0 1 0 1 0
− √12 √1
2
0
4
donde
1
σ1
... 0 011 . . . 01s
.. y O .. . . .
−1
Dr×r = ... ..
. . p×s = . . .. .
1
0 ... σr
0p1 . . . 0ps
Puesto que Σ de A es · √ ¸
2 0 0
Σ2×3 = ,
0 1 0
donde · √ ¸ · ¸
2 0 0
D2×2 = y O2×1 = .
0 1 0
Utilizando la definición de Σ† tendremos que
√1 0
2
Σ†3×2 = 0 1
0 0
A† = V Σ† UT .
Entonces
1 1
√1 0 − √12 √ 0 · ¸ 0
2 2 1 0 2
A† = √1 0 √12 0 1 = 12 0 .
2 0 1
0 1 0 0 0 0 1
Definición 3 (Matriz mal condicionada). Una matriz A está mal condicionada si pequeños cambios
en sus elementos pueden producir cambios grandes en las soluciones del sistema lineal Ax = b. Si
pequeños cambios de los elementos de A producen únicamente cambios pequeños en las soluciones
de Ax = b, entonces se dice que A está bien condicionada.
5
Ejemplo
Consideremos las matrices B y d tales que
100 50 33,3333 25 20 16,6667 1
50 33,3333 25 20 16,6667 14,2857 1
33,3333 25 20 16,6667 14,2857 12,5 1
B=
y d=
25 20 16,6667 14,2857 12,5 11,1111
1
20 16,6667 14,2857 12,5 11,1111 10 1
16,6667 14,2857 12,5 11,1111 10 9,0909 1
Ahora supongamos que perturbamos ligeramente uno de los coeficientes de la matriz B. Por ejemplo,
consideremos B̃ tal que B̃(i, j) = B(i, j) ∀i, j salvo B̃(6, 4) = 11,1110, en lugar de 11,1111. La
solución 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 cienmilésima en un coeficiente ha dado lugar a cambios muy
significativos en el vector solución. 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 más comunes de estas perturbaciones son
el truncamiento y redondeo de los resultados parciales que tiene lugar de forma inevitable durante
los cálculos. Recordad que los ordenadores trabajan con aritmética finita, lo que significa que la
representación de prácticamente cualquier número real lleva asociado un error. Aunque bien es
verdad que estos errores son muy pequeños, también lo es que éstos se van acumulando durante
los cálculos 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
está mal condicionado y disponer de métodos para abordar los problemas que de ellos se derivan.
Como veremos, la descomposición en valores singulares es uno de ellos. Antes introduciremos al-
gunos conceptos.
Definición 4 (Rango numérico). Sea el número real δ > 0 una cota para los valores singulares de
una matriz Am×n , tal que
σ1 ≥ σ2 ≥ · · · ≥ σq > δ ≥ σq+1 ≥ · · · ≥ σr > 0, σr+1 = σr+2 = . . . = σn = 0 .
El número natural r coincide con el rango de la matriz A. Al número natural q para el cual
σq > δ
se le llama rango numérico de la matriz A.
Definición 5 (Matriz truncada). Sea Am×n una matriz m × n cuya descomposición en valores
singulares está dada por
A = UΣVT
y sea el número natural q su rango numérico. La matriz truncada de A se define como
At = U Σt VT ,
donde · ¸
Dq×q Oq×(n−q)
Σt = ,
O(m−q)×q O(m−q)×(n−q)
σ1 ... 0 011 . . . 01s
.. .. . . .. .
Dq×q = . . .. y Op×s = .. . .. .
0 . . . σq 0p1 . . . 0ps
Definición 6 (Pseudo-Inversa truncada). Sea Am×n la matriz de la definición anterior cuyo rango
numérico es q. La matriz pseudo-inversa truncada de A se define como
A†t = V Σ†t UT ,
donde · ¸
−1
Dq×q Oq×(m−q)
Σ†t = ,
O(n−r)×q O(n−r)×(m−r)
y
1
σ1
... 0 011 . . . 01s
. ..
−1
Dq×q = .. ..
. . ; Op×s = ... . . . ... .
1
0 ... σq 0p1 . . . 0ps
7
1.4. Aplicaciones
La descomposición en valores singulares de una matriz es una herramienta útil en muchas
aplicaciones, como por ejemplo: resolución de sistemas de ecuaciones mal condicionados, aproxi-
mación por mı́nimos cuadrados y compresión de imágenes digitales.
8
1. Escribamos la matriz A
À A = [1 2 1; 10 18 12; 20 22 40]
A=
1 2 1
10 18 12
20 22 40
y escribamos la matriz b
À b = [8; 78; 144]
x=
8
78
144
2. Realicemos la descomposición en valores singulares de la matriz A. Para ello escribamos la
siguiente instrucción
À [U, D, V ] = svd(A)
U=
−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 definición 2 significa que
A = U DV T
3. Consideremos la matriz D.
54,5107 0 0
D= 0 9,3049 0
0 0 0,0079
9
Como podemos observar el valor singular 0,0079 es muy pequeño. Si consideramos δ = 0,01
de forma que
σ1 > δ ≥ σ2 ,
el rango de la matriz A serı́a q = 2 (ver definición 4). Ahora utilizando la definición 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
At = −0,4091 −0,9037 0,1261 0 9,3049 0 −0,1011 −0,8028 0,5877 .
−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 numérico para ello
escribimos la siguiente instrucción
À 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 A†t . De acuerdo a la definición 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 instrucción
À 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 descomposición en valores singulares (x =
A†t ∗ b), escribimos la siguiente instrucción
À 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 = Ã = 10 18 12 .
20 22 39
Resolvamos ahora el sistema Ãx = b. Para ello debes seguir las instrucciones antes indicadas.
Obtendrás
À x = Ainvt ∗ b
x=
1,3667
2,5320
1,5631
Como puedes observar, la descomposición 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 está bien condicionado.
11
Lectura y representación de imágenes en Matlab
Matlab implementa los comandos imread e imwrite para la lectura y escritura, respectiva-
mente, de ficheros gráficos. 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 será 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
numérico. Esto lo realizamos por medio de la instrucción double
À A=double(A);
Una vez transformada la matriz A y después 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);
À imagesc(A); colormap(gray);
À imwrite(A,’playa.mod.jpg’,’jpg’);
1
El tipo uint8 en Matlab es un arreglo numérico con valores entre 0 y 255 que no admite operaciones matemáticas.
La instrucción uint8 convierte cualquier arreglo numérico en un arreglo con valores entre 0 y 255
12
Ejemplo de compresión de imagenes en blanco y negro o escala de grises
La rutina o código en Matlab que se muestra a continuación permite comprimir una imagen
en blanco y negro (o escala de grises) utilizando la descomposición en valores singulares.
Consideremos la siguiente imagen:
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
Como podrás 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 450
200 400 600 800 200 400 600 800 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 450
200 400 600 800 200 400 600 800 200 400 600 800
Preguntas y tareas
1. ¿Con cúal de la imágenes comprimidas te quedarı́as? ¿Por qué?
15
5. ¿Cuántos valores singulares tomarı́as para considerar que tienes una buena imagen y una
buena compresión?
1.5. Bibliografı́a
1. LAY D.C., Álgebra lineal y sus aplicaciones, Addison-Weslay, 2 Edición 1999.
2. POOLE D., Álgebra lineal, Una introducción moderna, Thomson. México 2004
16