如何用sympy.stats求解不同区间均匀变量和的PDF?
用SymPy.stats求解不同区间均匀分布变量和的PDF
可以通过SymPy.stats求解该问题,只是直接调用density(Z)(z)得到的结果用Heaviside阶跃函数表示,看起来复杂,只需对结果进行化简即可得到直观的分段形式。
具体步骤
- 定义随机变量与求和后的变量
- 获取密度函数后,使用
piecewise_fold函数将Heaviside形式的表达式转化为标准分段函数
示例代码
from sympy import symbols, piecewise_fold from sympy.stats import Uniform, density # 定义服从不同区间均匀分布的随机变量 X1 = Uniform('X1', 0, 1) X2 = Uniform('X2', 0, 2) # 定义求和后的随机变量Z Z = X1 + X2 z = symbols('z') # 获取Z的概率密度函数并化简 raw_pdf = density(Z)(z) simplified_pdf = piecewise_fold(raw_pdf) # 输出化简后的分段PDF print(simplified_pdf)
化简后的结果说明
化简后会得到分段形式的PDF,对应Z的不同取值区间:
- 当 (0 \leq z < 1) 时,(f_Z(z) = \frac{z}{2})
- 当 (1 \leq z < 2) 时,(f_Z(z) = \frac{1}{2})
- 当 (2 \leq z < 3) 时,(f_Z(z) = \frac{3 - z}{2})
- 其他区间,(f_Z(z) = 0)
这个结果和手动计算卷积得到的结论一致——两个均匀分布变量和的PDF本质是它们各自PDF的卷积,SymPy通过符号计算完成了这一过程,只是默认输出用了更通用的Heaviside函数表示分段行为,piecewise_fold函数可以将其转化为更易读的分段表达式。
内容的提问来源于stack exchange,提问作者Erik Ross-Rønnow
相关产品推荐
相关产品推荐

