sympy - 无法使用nsolve方法

1 投票
1 回答
1251 浏览
提问于 2025-04-17 05:14

我写了这段代码:

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

撰写回答