今天我的一个程序开始表现得很奇怪。过了一会儿,我发现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
感谢您的时间。
答案 0 :(得分:1)
你的A ^( - 1)矩阵接近于单数,因此dgesv失败。您可以尝试使用dgesvxx http://www.netlib.org/lapack/explore-html/d3/dca/dgesvxx_8f.html