下一节:Golub-Kahan-Lanczos 方法 上一级:迭代算法 上一节:什么操作是可以承受的?

希望得到哪些奇异值和奇异向量?

由于A^* A的特征向量是右奇异向量,而AA^*的特征向量是左奇异向量,自然会想到分别使用A^* AAA^*来求解右奇异向量和左奇异向量。但如前所述,对于非零奇异值,左(或右)奇异向量可以通过右(或左)奇异向量乘以A(或A^*)来恢复,因此可以使用AA^*A^* A中的任何一个,选择计算成本较低的那个即可。

A^* AAA^*的特征值是A的奇异值的平方。相比之下,H(A)的特征值是A的正负奇异值(以及m-n个额外的零特征值)。由于所有算法的收敛速度取决于特征值的分布和位置,A^* AAA^*H(A)之间存在显著差异。

AA^*A^* A适合计算最大的奇异值,因为平方运算保持最大的奇异值最大,并且第4章中的许多算法最容易收敛到最大的特征值。实际上,平方运算扩大了最大奇异值与其他奇异值之间的差距,从而加速了收敛。

另一方面,最小的奇异值也会被平方。在最极端的情况下,接近机器精度平方根\sqrt{\epsilon_M}的奇异值在平方后变为\epsilon_M,其值可能完全被舍入误差掩盖。此外,密集的小奇异值在平方后显得更加密集。换句话说,获取最小的奇异值可能具有挑战性。

H(A)不会对奇异值进行平方运算,因此上述问题不会出现。另一方面,由于H(A)的特征值是A的正负奇异值,A的微小奇异值接近H(A)的特征值谱的中间部分。这些是最难找到的特征值,通常需要使用移位-逆变换或Jacobi-Davidson方法来求解。总之,最准确(但成本最高)的方法是使用移位-逆变换在H(A)上求解最小的奇异值。



下一节:Golub-Kahan-Lanczos 方法 上一级:迭代算法 上一节:什么操作是可以承受的?
Susan Blackford 2000-11-20