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,并且花费的时间不超过一秒。
有什么想法吗?
Rational=False 标志是针对此类情况引入的。
>>> q=14.7296138519
>>> solve(exp(-alpha * q**2) - 0.01, alpha, rational=False)
[0.0212257459123917]
Run Code Online (Sandbox Code Playgroud)
(解释已在上述问题中给出。)