我正在尝试创建正常的随机变量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
我该怎么办?
答案 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)))