sympy - 无法使用nsolve方法
我写了这段代码:
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
。)
1 个回答
3
我对nsolve的调用语法不太了解,但我可以告诉你为什么sympy和mpmath都找不到这个函数的实数根:因为根本就没有。如果f(x)=exp(-x^2),那么对于任何实数x,f(x)都是大于0的。f(0)等于1,而这个函数在x的绝对值变大时会下降,但始终是正值。所以在[0,1]这个区间内肯定没有根。
或许你可以看看正态分布的相关内容。
对它进行积分似乎是正常的:
>>> integrate(f,(x,0,1))
pi**(1/2)*erf(1)/2