1

我正在尝试解决对称正定的线性系统Ax=bA3x3

尽管它的规模很小,但我将不得不重复它A数百万次。所以效率还是很重要的。

线性系统有很多求解器(C++,通过 Eigen)。我个人更喜欢:HouseholderQr().solve(), 和llt().solve(), ldlt().solve()

我知道当n非常大时,基于 Cholesky 分解的求解器比 Householder 的求解器更快。但是对于我的情况何时n只有 3,我如何比较它们的相对效率?有没有精确float operation分析的公式?

谢谢

4

1 回答 1

0

是的,Cholesky 仍然会更快。这将是大约 n^3/3 次翻牌。使用 QR 的唯一原因是您的矩阵非常病态。

如果你需要解决这些系统一百万次并且效率很重要,我建议直接调用 LAPACK。你想要这个DPOSV功能。

http://www.netlib.org/lapack/lug/node26.html#1272

http://www.netlib.org/clapack/what/double/dposv.c

于 2013-12-20T20:45:25.493 回答