我做了这段代码:

from scitools.std import *
from sympy import *

x=Symbol('x')
#Integral function
#def f(x):             --> I also tried this
 #   return exp(-x**2)

f=exp(-x**2)

intac=integrate(f,(x,0,1))
print(nsolve(f,x,1))


解释器给我:“分配前引用了局部变量x”

如果我尝试nsolve(f,x,(0,1)),它会给我:“在给定的公差范围内找不到根...”

(此外,我尝试findroot(f,(0,1))并没有成功(我先导入from mpmath import *,然后又导入mp.dps = 30; mp.pretty = True))。

最佳答案

我对nsolve的调用语法一无所知,但是我可以告诉你,为什么sympy和mpmath都找不到该函数的真正根:没有任何根。如果f(x)= exp(-x ^ 2),则对于任何实数x,f(x)> 0。 f(0)= 1并且函数随着abs(x)在任一方向变大而减小,但始终为正。当然,[0,1]中没有根。

可能值得阅读the normal distribution

集成它似乎可以正常工作:

>>> integrate(f,(x,0,1))
    pi**(1/2)*erf(1)/2

关于python - sympy-无法使nsolve方法工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7940441/

10-12 20:56