我正在将现有代码从 MATLAB 移植到 C++,并有一个线性系统要解决(而不是更典型的形式)
矩阵是稠密的,具有一般形式,但不大于 1000x1000。所以在 MATLAB 中,解决方案是通过mrdivide(b,A)
函数或正斜杠符号找到的x = b/A;
我应该如何使用 BLAS 和 LAPACK 例程在我的 C++ 代码中解决这个问题?
我熟悉DGESV
解决问题的 LAPACK 例程为了.
所以,我的一个想法是使用矩阵转置身份进行一些操作:
DGESV
然后使用转置操作求解最终形式. (所以转置成本和解决系统的成本)
有没有更有效或更好的方法?
我正在使用矩阵和向量类以及来自 BOOST uBLAS 库的 BLAS 实现以及与 LAPACK 库例程的绑定。我已经成功地将此设置用于其他操作,并希望找到仅限于这些库的解决方案。
另外,我应该注意我只在代码设置期间执行了几次此类操作,因此性能不是一个关键问题。
也许这个 MATLAB文档对其mrdivide
他人有帮助。