Valores singulares
Un valor singular y los correspondientes vectores singulares de una matriz rectangular A son, respectivamente, un escalar σ y un par de vectores u y v que satisfacen
donde es la traspuesta hermítica de A. Los vectores singulares u y v comúnmente se normalizan a 1. Igualmente, si u y v son vectores singulares de A, entonces -u y -v también son vectores singulares de A
.
Los valores singulares σ siempre son reales y no negativos, aunque A sea compleja. Con los valores singulares en una matriz diagonal Σ y los correspondientes vectores singulares formando las columnas de dos matrices ortogonales U y V, se obtienen las ecuaciones
Como U y V son matrices unitarias, si se multiplica la primera ecuación por a la derecha, se produce la ecuación de descomposición en valores singulares
La descomposición en valores singulares completa de una matriz de m por n incluye:
Matriz U m por m
Matriz Σ m por n
Matriz V n por n
En otras palabras, U y V son cuadradas y Σ tiene el mismo tamaño que A. Si A tiene muchas más filas que columnas (m > n
), entonces la matriz U de m
por m
resultante es grande. Sin embargo, la mayoría de las columnas de U se multiplica por ceros en Σ. En esta situación, la descomposición de tamaño parcial ahorra tanto tiempo como almacenamiento, ya que produce una U de m por n, una Σ de n por n y la misma V:
La descomposición en valores propios es la herramienta apropiada para analizar una matriz cuando esta representa una aplicación de un espacio vectorial en sí mismo, como en el caso de una ecuación diferencial ordinaria. Sin embargo, la descomposición en valores singulares es la herramienta adecuada para analizar una aplicación de un espacio vectorial en otro espacio vectorial, posiblemente con una dimensión diferente. La mayoría de los sistemas de ecuaciones lineales simultáneas encaja en esta segunda categoría.
Si A es cuadrada, simétrica y definida positiva, entonces sus descomposiciones en valores propios y valores singulares son iguales. Sin embargo, a medida que A se desvía de la simetría y definición positiva, la diferencia entre las dos descomposiciones aumenta. En particular, la descomposición en valores singulares de una matriz real siempre es real, pero la descomposición de valores propios de una matriz real no simétrica puede ser compleja.
Para la matriz ejemplo
A = [9 4 6 8 2 7];
la descomposición en valores singulares completa es
[U,S,V] = svd(A) U = -0.6105 0.7174 0.3355 -0.6646 -0.2336 -0.7098 -0.4308 -0.6563 0.6194 S = 14.9359 0 0 5.1883 0 0 V = -0.6925 0.7214 -0.7214 -0.6925
Se puede verificar que U*S*V'
es igual a A
dentro del error de redondeo. Para este pequeño problema, la descomposición de tamaño parcial es solo ligeramente menor.
[U,S,V] = svd(A,"econ") U = -0.6105 0.7174 -0.6646 -0.2336 -0.4308 -0.6563 S = 14.9359 0 0 5.1883 V = -0.6925 0.7214 -0.7214 -0.6925
Nuevamente, U*S*V'
es igual a A
dentro del error de redondeo.
Cálculo SVD por lotes
Si tiene que descomponer una gran recopilación de matrices del mismo tamaño, no resulta eficaz realizar todas las descomposiciones en un bucle con svd
. En lugar de ello, puede concatenar todas las matrices de un arreglo multidimensional y utilizar pagesvd
para efectuar descomposiciones en valores singulares en todas las páginas del arreglo con una sola llamada a la función.
Función | Uso |
---|---|
pagesvd | Utilice pagesvd para efectuar descomposiciones en valores singulares en las páginas de un arreglo multidimensional. Se trata de una forma eficaz de realizar SVD en una gran recopilación de matrices con el mismo tamaño. |
Por ejemplo, piense en una recopilación de tres matrices de 2 por 2. Concatene las matrices en un arreglo de 2 por 2 por 3 con la función cat
.
A = [0 -1; 1 0]; B = [-1 0; 0 -1]; C = [0 1; -1 0]; X = cat(3,A,B,C);
Ahora, utilice pagesvd
para realizar las tres descomposiciones a la vez.
[U,S,V] = pagesvd(X);
Para cada página de X
, hay páginas correspondientes en las salidas U
, S
y V
. Por ejemplo, la matriz A
se encuentra en la primera página de X
, y su descomposición se da por U(:,:,1)*S(:,:,1)*V(:,:,1)'
.
Aproximaciones SVD de rango bajo
Para matrices dispersas grandes, no siempre es práctico utilizar svd
para calcular todos los valores y vectores singulares. Por ejemplo, si necesita conocer solo algunos de los valores singulares más grandes, implica trabajo adicional calcular todos los valores singulares de una matriz dispersa de 5000 por 5000.
En los casos en que se requiere solo un subconjunto de los vectores y valores singulares, se prefieren las funciones svds
y svdsketch
en vez de svd
.
Función | Uso |
---|---|
svds | Utilice svds para calcular la aproximación de rango k del SVD. Puede especificar si el subconjunto de valores singulares debería ser el más grande, el más pequeño o el más cercano a un número específico. svds generalmente calcula la mejor aproximación de rango k posible. |
svdsketch | Utilice svdsketch para calcular un SVD parcial de la matriz de entrada que satisface una tolerancia especificada. Mientras que svds precisa que especifique el rango, svdsketch determina adecuadamente el rango de la aproximación de la matriz en función de la tolerancia especificada. La aproximación de rango k que últimamente svdsketch utiliza satisface la tolerancia, pero a diferencia de svds , no está garantizado que sea el mejor posible. |
Por ejemplo, considere una matriz dispersa aleatoria de 1000 por 1000 con una densidad de aproximadamente 30%.
n = 1000; A = sprand(n,n,0.3);
Los seis valores singulares más grandes son
S = svds(A) S = 130.2184 16.4358 16.4119 16.3688 16.3242 16.2838
Además, los valores singulares más pequeños son
S = svds(A,6,"smallest") S = 0.0740 0.0574 0.0388 0.0282 0.0131 0.0066
Para matrices más pequeñas que pueden caber en la memoria en su versión completa, full(A)
, el uso de svd(full(A))
puede ser todavía más rápido que svds
o svdsketch
. No obstante, para matrices verdaderamente grandes y dispersas, se hace necesario el uso de svds
o svdsketch
.
Consulte también
svd
| svds
| svdsketch
| gsvd
| pagesvd