sympy - не могу заставить работать метод nsolve - PullRequest
1 голос
/ 29 октября 2011

Я сделал этот код:

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)), это даст мне: «Не удалось найти root в пределах данного допуска ...»

(Кроме того, я безуспешно пытался findroot(f,(0,1)) (импортировал from mpmath import *, а затем mp.dps = 30; mp.pretty = True).

1 Ответ

3 голосов
/ 30 октября 2011

Я ничего не знаю о синтаксисе вызовов nsolve, но я могу сказать вам, почему ни sympy, ни mpmath не могут найти истинного корня функции: их нет.Если f (x) = exp (-x ^ 2), то f (x)> 0 для любого действительного x.f (0) = 1 и функция уменьшается по мере того, как abs (x) увеличивается в любом направлении, но это всегда положительно.Конечно, в [0,1] нет * root.

Возможно, стоит прочитать нормальное распределение .

Интеграция, кажется, работает так, как должно:

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