SVD算法的全面介绍
其计算值和真实值之间的误差不大于 (n,p)A2 ,而因为A2 1,所以较大的奇异值具有较高的相对精度,而越小的奇异值所具有的相对精度也越低,当奇异值大小和 1 接近时几乎完全失去精确度。
因为算法中涉及到迭代,所以去求算法所需要的准确的运算量是不可能,但是根据每一次循环所需要的计算量以及实际的试验测试还是可以得到运算复杂度的。虽然算法中出现了迭代,但是由于它是呈3次方快速收敛的[2],所以本算法的复杂度并不高只有O(n3)[13],文献[23]当中给出了前面系数的大概估计为20,也就是算法的复杂度是20n3。
关于算法3.1.3,算法3.1.4,在文献[2]中也给出了另外一种风格的伪代码,文献[3,24,25]都有完整的原代码。
3.2:传统QR迭代算法和零位移的QR迭代算法组合成的混合算法[13] 从传统方法的数值稳定性的分析中,可以看出,有必要引进具有更高精度的数值方法,所以在文献[13]中引进了一种求二对角矩阵的奇异值的方法,此方法对每一个奇异值都具有较高的相对精度,具体如以下各节所述。 假定我们已经求出上述传统方法中的二对角矩阵B,于一般的带位移的QR迭代法不同的是我们这里选取 0;所不同还有,刚开始我们选取一个Givens变换矩阵将矩阵B的(1,2)位置上的元素b12消零,而不是象传统方法引入一个非零元素b21;
以n=4时的例子具体如下:
先右乘Givens变换矩阵J1将矩阵B的(1,2)位置上的元素b12消零;
(1) b11000 (1) (1)
0bbb2223 B(1) BJ1 21
00b33b34
b000 44
然后左乘Givens变换矩阵J2将矩阵元素b21消零;
(2) b11 0
J2BJ1
0 0
(2)
b12(2)b220
(2)b13(2)b23b33
B
(2)
00
0 0 b34 b44
注意到:
(2)(2)(1) b12 sin 2b22b13sin 2b23
(2) (2) (1)
b22b23 cos 2b22cos 2b23
(2)
是秩为1的矩阵,所以右乘Givens变换矩阵J3将矩阵B的(1,3)位置上的元素b13消
(2)零时(2,3)位置上的元素b23也被消零了: