(python)求解方程的根,包括概率分布

时间:2016-06-07 20:56:19

标签: python-3.x math statistics distribution calculus

我对此很陌生,但我需要解决数学问题,包括找到一个函数的根,它涉及累积密度函数(几个)。

为简单起见,我尝试编写类似的程序,但功能尽可能简单,但即使这样也行不通。

有人会告诉我,我做错了什么?

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)

1 个答案:

答案 0 :(得分:2)

问题似乎是fsolve要求第一个参数是函数。但是,你传递了一个表达式,它被评估为某个值,但是, expression有一个未定义的变量名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])