如何创建一个返回方程的函数

时间:2016-04-17 09:05:57

标签: python python-2.7 python-3.x numpy scipy

我正在尝试创建正常的随机变量pdf equation。

此函数将返回特定x的最终计算值pdf。

def normpdf(x, mu=0, sigma=1):
#    u = (float((x-mu) / abs(sigma)))
    y = exp(-(float((x-mu) / abs(sigma)))*(float((x-mu) / abs(sigma)))/2) / (sqrt(2*pi*sigma*sigma))
    return y

我想做的是这样的事情:

def normpdfeqn(mu=0, sigma=1):
    y = exp(-(float((x-mu) / abs(sigma)))*(float((x-mu) / abs(sigma)))/2) / (sqrt(2*pi*sigma*sigma))
    return y

因此,每当我想使用这个方程进行积分或区分时,我可以直接调用normpdfeqn()并使用积分函数中返回的等式。

我试过这个:

from sympy import *
x = Symbol('x')
mu = Symbol('mu')
sigma = Symbol('sigma')

def normpdfeqn(mu=0, sigma=1):
#    u = (float((x-mu) / abs(sigma)))
    y = exp(-(float((x-mu) / abs(sigma)))*(float((x-mu) / abs(sigma)))/2) / float((sqrt(2*pi*sigma*sigma)))
    return y

print(integrate(normpdfeqn(), (x, -inf, inf)))

但是我收到了这个错误:

TypeError: can't convert expression to float

我该怎么办?

1 个答案:

答案 0 :(得分:1)

不要在sympy表达式中使用float - 函数:

def normpdfeqn(x, mu=0, sigma=1):
    return exp(-((x-mu) / abs(sigma))**2 / 2) / (sqrt(2*pi*sigma*sigma))

x = Symbol('x')
print(integrate(normpdfeqn(x), (x, -inf, inf)))