尝试求解简单代数方程时 sympy 挂起

Sha*_*har 4 python solver sympy exp

我最近重新安装了我的 python 环境,以前运行速度非常快的代码现在充其量只是缓慢运行(通常只是挂起,占用越来越多的内存)。

代码挂起的点是:

solve(exp(-alpha * x**2) - 0.01, alpha)
Run Code Online (Sandbox Code Playgroud)

我已经能够使用新的 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)
Run Code Online (Sandbox Code Playgroud)

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

有什么想法吗?

smi*_*chr 5

Rational=False 标志是针对此类情况引入的。

>>> q=14.7296138519
>>> solve(exp(-alpha * q**2) - 0.01, alpha, rational=False)
[0.0212257459123917]
Run Code Online (Sandbox Code Playgroud)

(解释已在上述问题中给出。)

  • 有人应该将此标记为正确。根据代表,我猜@Shahar 不会注意到这一点,所以也许主持人可以? (2认同)