如第§2.4.7节所述,有多个与SVD紧密相关的问题,其解决方案在此描述。这份清单并不详尽,因为低秩矩阵近似(其中“最优”的是由截断SVD提供)在应用中非常普遍。根据应用场景,可能适合使用此处描述的SVD算法或其他低秩近似方法。
使用变换方法的软件(即适用于密集矩阵)在LAPACK驱动程序xGGSVD中可用,适用于更一般的情况,即B为奇异或p行n列。MATLAB命令gsvd也提供了这一功能。ScaLAPACK软件尚未提供相应功能。使用这些算法的优势仅在于精度;即当B为病态时,它们比直接计算AB^{-1}的SVD要精确得多。但这些算法也相对较慢,因此如果B为良态,直接计算AB^{-1}的SVD会更好。
当A和B为大型稀疏矩阵且B为方阵、非奇异并可分解时,我们推荐应用上述仅需要乘以AB^{-1}及其转置的SVD算法。
如果B不是方阵,我们推荐使用第5章中的技术,求解广义厄米特征值问题A^*A - \lambda B^*B的特征值和特征向量。这是因为A^*A - \lambda B^*B的特征分解为 X^*A^*AX = \Sigma_A^* \Sigma_A 和 X^*B^*BX = \Sigma_B^* \Sigma_B。
解决最小二乘问题时,无需显式计算A的薄SVD或截断SVD。对于密集问题,LAPACK驱动程序xGELSD是首选方法,它使用分治法快速求解最小二乘问题,无需显式形成薄SVD。在ScaLAPACK中,只有计算薄SVD的程序PxGESVD,可用于最小二乘问题。对于稀疏问题,我们可以使用从方程(6.7)或(6.8)导出的近似分解A \approx U_k B_k V_k^*来得到x = V_k B_k^{-1} U_k^{-1}。