LAPACK dgesv函数在线性方程中失败

时间:2014-11-27 20:47:16

标签: c linear lapack

今天我的一个程序开始表现得很奇怪。过了一会儿,我发现LAPACK包中的dgesv函数实际上错误地计算了以下矩阵方程:Ax = b

   1674.456299  -874.579834  -799.876465           74.703453
A= -874.579834   1799.875854  -925.296021      b=  -1799.875854
  -799.876465   -925.296021  1725.172485           1725.172241

我知道这是因为双精度实际上还不够。 Mathematica很好地解决了这个方程式,但我需要我的C程序才能自行完成。有没有其他计算x的方法,如果LAPACK失败我可以使用? 这是一个突出问题的程序: http://pastebin.com/juPWMZkm

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

你的A ^( - 1)矩阵接近于单数,因此dgesv失败。您可以尝试使用dgesvxx http://www.netlib.org/lapack/explore-html/d3/dca/dgesvxx_8f.html