我正在尝试使用Eigen中的SparseQR解算器来解决像稀疏最小二乘这样的问题。在我的申请过程中,我必须解决某些矩阵A
所提供的超定方程和欠定方程,其中A
是超定的,而A.transpose()
是未定的。
我了解使用QR分解合理地解决超定系统的技术,但是我想检查Eigen如何解决欠定的系统。解决方程A.transpose() x = b
的问题Eigen似乎没有执行最小范数求解,而该最小范数求解将如下所示:
//Get the QR decomposition of A (over-determined system)
SparseQR solver;
solver.compute(A)
//Get the Q and R matrices of A
Q = solver.matrixQ()
R = solver.matrixR()
//Given that: A.transpose() = R.transpose() Q.transpose(), solve for x
xstar = R.transpose().solve(b)
x = Q*xstar
但是在使用通过初始化的求解器进行求解之后
solverAT.compute(AT);
我没有最小范数解,所以我不确定它到底在使用什么方法。
另一个问题是,是否可以使用超前分解来解决欠定问题而不必重新计算。这肯定会对我的应用程序有所帮助。