2016-06-07 6 views
0

Я довольно новичок в этом, но мне нужно решение математической задачи, которая включает в себя поиск корней функции, которая включает в себя кумулятивную функцию плотности (несколько). Для простоты я попытался выполнить процедуру simmilar, но с такой простой функцией, насколько это возможно, но даже это не работает. Кто-нибудь скажет мне, пожалуйста, что я делаю неправильно?(python) решение для корней уравнения, которое включает вероятностное распределение

from scipy.optimize import fsolve 
    import sympy as sy 
    import numpy as np 
    from scipy.stats import norm 
    y=sy.Symbol('y') 

    def cdf(x): 
    cdf_norm=norm.cdf(x,100,20) 
    return cdf_norm 

    result=fsolve(y**2-14*y+7-cdf(y)) 
    print(result) 

ответ

2

Проблема, кажется, что fsolve требует, чтобы первый аргумент является функция. Однако вы передали это выражение , которое вычисляется до некоторого значения, однако выражение имеет неопределенное имя переменной y, поэтому интерпретатор выбрасывает NameError. Кроме того, для этого потребуется еще один аргумент - ndarray, содержащий оценки для корней. Таким образом, один простое решение состоит в определении другой функции:

def f(y): 
    return y**2 - 14*y + 7 - cdf(y) 
result = fsolve(f, np.array([1,0]) 
print(result) 

я получаю следующий результат:

array([ 0.51925928, 0.51925928])