当试图解决一个简单的代数方程时,症状就会悬而未决

时间:2013-06-13 12:56:02

标签: python solver sympy exp

我最近重新安装了我的python环境,而且过去工作得很快的代码现在最好爬行(通常只是挂起占用越来越多的内存)。

代码挂起的地方是:

solve(exp(-alpha * x**2) - 0.01, alpha)

我已经能够通过新的IPython 0.13.1会话重现这个问题:

In [1]: from sympy import solve, Symbol, exp
In [2]: x = 14.7296138519
In [3]: alpha = Symbol('alpha', real=True)
In [4]: solve(exp(-alpha * x**2) - 0.01, alpha)

这适用于整数,但也很慢。在原始代码中,我循环查找了不同的x值(不是14.7296138519)的数百个不同的alpha,并且它不需要超过一秒。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

对于这种情况,引入了rational = False标志。

>>> q=14.7296138519
>>> solve(exp(-alpha * q**2) - 0.01, alpha, rational=False)
[0.0212257459123917]

(在上面引用的问题中给出了解释。)

答案 1 :(得分:2)

从版本0.7.2回滚到0.7.1解决了这个问题。

easy_install sympy==0.7.1

我已经将此报告为对于与用户同意的谷歌代码的错误。