我有一段计算Helmholtz-Hodge分解的代码,在我的Mac OS Yosemite上运行得很好。一个月前,我的Mac变得非常缓慢(它真的很旧),于是我选择购买了一台新的笔记本电脑(Windows 8.1,Dell)。
安装完所有Python库等后,我继续运行这个相同的代码(在Git中进行了版本控制)。结果非常奇怪,与在旧笔记本电脑上得到的结果完全不同。
例如,我的做法是构造两个矩阵a
和b
(非常长的计算),然后调用求解器:
s = numpy.linalg.solve(a, b)
这返回了a
(错误的结果,与我在Mac上得到的正确结果不同)。
然后,我尝试使用:
然后,我尝试使用:
s = scipy.linalg.solve(a, b)
程序以代码0退出,但在中间停止了。 然后,我只是进行了一个简单的测试:
print 'here1'
s = scipy.linalg.solve(a, b)
print 'here2'
并且 here2
从未被打印。
我尝试过:
print 'here1'
x, info = numpy.linalg.cg(a, b)
print 'here2'
同样的情况也会发生。
我在使用numpy.linalg.solve
后尝试检查解决方案:
print numpy.allclose(numpy.dot(a, s), b)
而我收到了一个False
(?!).
我不知道发生了什么,也不知道如何找到解决方案,我只知道相同的代码在我的Mac上运行,但如果能在其他平台上运行就好了。现在我被困在这个问题中(没有Mac了),对于原因毫无线索。
最奇怪的是,在运行时我没有收到任何错误警告或反馈。
感谢任何帮助。
编辑:
Numpy套件测试结果:
Scipy套件测试结果:
det(b)=0
,即使由于精度丢失而产生,这意味着您的问题没有被明确定义。对抗糟糕条件下的矩阵问题并不是正确的解决方式。 - Juh_scipy.linalg.solve
函数崩溃的事实似乎像一个段错误,请确保BLAS/LAPACK库已正确安装。 - rth