主要内容

奇异值

一个奇异值和相应的奇异向量一个矩形矩阵的一个分别是标量吗σ和一对向量u而且v满足

一个 v σ u 一个 H u σ v

在哪里 一个 H 是的厄米转置一个.奇异向量u而且v通常的标准是1。同样,如果u而且v的奇异向量一个,然后- u而且- v的奇异向量一个

奇异值σ都是真实且非负的,即使一个是复杂的。用对角矩阵中的奇异值Σ对应的奇异向量构成两个正交矩阵的列U而且V,得到方程

一个 V U Σ 一个 H U V Σ

U而且V是酉矩阵吗,第一个方程乘以 V H 右边是奇异值分解方程

一个 U Σ V H

的完全奇异值分解——- - - - - -n矩阵包括:

  • ——- - - - - -矩阵U

  • ——- - - - - -n矩阵Σ

  • n——- - - - - -n矩阵V

换句话说,U而且V都是方的,和Σ尺寸和一个.如果一个行比列多很多(M > n),然后得出——- - - - - -矩阵U很大。但是,大多数列在U都乘上了0Σ.在这种情况下,经济分解通过生成一个——- - - - - -nU,一个n——- - - - - -nΣ是一样的V

在经济规模分解中,如果U中的列在奇异值的对角线矩阵中乘以零,则可以忽略。

特征值分解是分析矩阵的合适工具,当它表示从向量空间到自身的映射时,就像它对一个常微分方程所做的那样。然而,奇异值分解是分析从一个向量空间到另一个向量空间(可能具有不同维度)的映射的合适工具。大多数联立线性方程组都属于第二类。

如果一个是方的、对称的、正定的,则其特征值和奇异值的分解是相同的。但是,正如一个偏离对称性和正确定性,两种分解的差异增大。特别地,一个实矩阵的奇异值分解总是实的,但是一个实的非对称矩阵的特征值分解可能是复杂的。

对于示例矩阵

A = 9 4 6 8 2 7

完全奇异值分解为

[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

你可以验证一下U * * V”等于一个到舍入误差以内。对于这个小问题,经济规模分解只是略小。

[U,S,V] = svd(A,0) 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

再一次,U * * V”等于一个到舍入误差以内。

分批SVD计算

如果您需要分解具有相同大小的大型矩阵集合,那么在一个循环中执行所有分解是低效的圣言会.相反,您可以将所有的矩阵连接到一个多维数组中并使用pagesvd使用一个函数调用在所有数组页上执行奇异值分解。

函数 使用
pagesvd 使用pagesvd在多维数组的页面上执行奇异值分解。这是在具有相同大小的大型矩阵集合上执行SVD的有效方法。

例如,考虑三个2 × 2矩阵的集合。将这些矩阵连接成一个2 × 2 × 3的数组函数。

A = [0 -1;1 0];B = [-1 0;0 1];C = [0 1;1 0];X = cat(3,A,B,C);

现在,使用pagesvd同时执行这三种分解。

[U,S,V] = page (X);

对于每一页X,输出中有相应的页面U年代,V.例如,矩阵一个在第一页X,其分解为U (:: 1) * S (:,: 1) * V(:,: 1)”

低秩SVD近似

对于大型稀疏矩阵,使用圣言会计算所有奇异值和奇异向量之间的关系并不总是实用的。例如,如果您只需要知道几个最大的奇异值,那么计算一个5000 × 5000稀疏矩阵的所有奇异值是额外的工作。

在只需要奇异值和奇异向量的子集的情况下圣言会而且svdsketch函数优先于圣言会

函数 使用
圣言会 使用圣言会计算一个等级-kSVD的近似。您可以指定奇异值的子集应该是最大的、最小的还是最接近特定数字的。圣言会一般计算出最好的可能排名-k近似。
svdsketch 使用svdsketch来计算输入矩阵满足指定容差的部分SVD。而圣言会要求你指定等级,svdsketch根据指定的公差自适应地确定矩阵草图的等级。排名,k近似,svdsketch终究用满足宽容,但不一样圣言会,它并不能保证是最好的。

例如,考虑一个密度约为30%的1000乘1000随机稀疏矩阵。

N = 1000;A = sprand(n,n,0.3);

最大的六个奇异值是

S = svds(A) S = 130.2184 16.4358 16.4119 16.3688 16.3242 16.2838

另外,最小的六个奇异值是

S = svds(A,6,' minimal ') S = 0.0740 0.0574 0.0388 0.0282 0.0131 0.0066

对于更小的矩阵,可以作为一个完整的矩阵放入内存,完整的(一个),使用圣言(全(A))可能还是比圣言会svdsketch.然而,对于真正大而稀疏的矩阵,使用圣言会svdsketch成为必要。

另请参阅

||||

相关的话题