如何通过matlab求解奇异值

2024-10-13 07:08:50

1、奇异值 σ 始终为非负实数,即使 A 为复数也是如此。对于对角矩阵 Σ 的对角线上的奇异值以及构成两个正交矩阵 U 和 V 的列的对应奇异向量,方程为

如何通过matlab求解奇异值

3、m×n 矩阵的完整奇异值分解谭终沫冀涉及 m×m U、 m×n Σ 以及 n×n V。换句话说,U 和 V 均为方阵,Σ 与 A的大小相同。如果 A 的行数远多于列数 (m > n),则得到的 m×m 矩阵 U 为大型矩阵。但是,U 中的大多数列与 Σ 中的零相乘。在这种情况下,精简分解可通过生成一个 m×n U、一个 n×n Σ 以及相同的 V 来同时节省时间和存储空间:

如何通过matlab求解奇异值

5、完整的奇异值分解为

如何通过matlab求解奇异值

7、同样,U*S*V' 在舍入误差界限内等于 A。如果矩阵 A 很大并且是稀疏矩阵,则使用 svd 来计算所有奇异值和向量在某些情况下可能会不太切合实际。例如,如果您只需了解几个最大的奇异值,则计算一个 5000×5000 稀疏矩阵的所有奇异值会带来大量额外工作。在只需要一部分奇异值和向量的情况下,svds 函数优先于 svd。对于一个密度约为 30% 的 1000×1000 随机稀疏矩阵,

如何通过matlab求解奇异值

9、此外,最小的六个奇异值为S = svds(A,6,'smallest')

如何通过matlab求解奇异值

10、对于可作为满矩阵 full(A) 载入内存的较小矩阵,使用 svd(full(A)) 的速度可能仍旧快于使用 svds。但对于确实很大的稀疏矩阵,就有必要使用 svds。

猜你喜欢