如何创建函数以返回方程式



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

此函数将返回特定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

我该怎么办?

不要在症状表达式中使用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)))

最新更新