我需要并行计算(CUDA)几千个小矩阵的空空间(8x9,而不是我之前写的4x3)。所有参考文献都指向SVD,但是数字配方中的算法似乎非常昂贵,除了给我真正不需要的空空间以外,还为我提供了很多其他功能。高斯消除真的不是一种选择吗?还有其他常用方法吗?
直接回答您的问题…是的!QR分解!
设A为等级为n的m×n矩阵。QR分解找到正交的m×m矩阵Q和上三角m×n矩阵R,使得A = QR。如果我们定义Q = [Q1 Q2],其中Q1是m×n,Q2是m×(mn),则Q2的列形成A ^ T的空空间。
QR分解可以通过Gram-Schmidt,Givens旋转或Householder反射来计算。它们具有不同的稳定性和操作次数。
您是对的:SVD很昂贵!我无法说出最先进的东西使用什么,但是当我听到“计算空空间”(编辑:以一种我很容易理解的方式)时,我认为QR。