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