3

我最近重新安装了我的 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)

这适用于整数,但也很慢。在原始代码中,我循环查找了数百个不同 alpha 值的不同 x 值(14.7296138519 除外),并且只用了不到一秒钟。

有什么想法吗?

4

2 回答 2

4

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

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

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

于 2013-06-14T17:57:15.110 回答
2

Rolling back from version 0.7.2 to 0.7.1 solved this problem.

easy_install sympy==0.7.1

I've reported this as a bug to sympy's google code.

于 2013-06-13T14:11:23.570 回答