如何在SymPy中对带索引的随机变量求和?
带索引的随机变量求和实现方案
直接用SymPy的sympy.stats.IndexedRV就能创建带索引的随机变量,再结合sympy.Sum就能实现你要的功能,具体代码示例如下:
import sympy as sp import sympy.stats as ss # 定义索引符号i(限定为整数)和分布参数 i = sp.symbols("i", integer=True) mu, sigma = sp.symbols("mu sigma", real=True, positive=True) # 创建带索引的随机变量X_i,这里以正态分布为例 X = ss.IndexedRV("X", i, ss.Normal(mu, sigma)) # 构建i从0到3的随机变量求和式 sum_rv = sp.Sum(X, (i, 0, 3)) # 展开求和式查看具体项 print(sum_rv.doit()) # 输出:X₀ + X₁ + X₂ + X₃
如果需要每个随机变量的分布参数随索引变化,比如让X_i的均值等于i,只需调整分布定义:
X = ss.IndexedRV("X", i, ss.Normal(i, sigma)) sum_rv = sp.Sum(X, (i, 0, 3)) print(sum_rv.doit()) # 输出:X₀ + X₁ + X₂ + X₃(每个X_i的均值分别为0,1,2,3)
另外,还可以直接对求和后的随机变量做统计计算,比如求期望、方差:
# 计算求和结果的期望 expectation = ss.E(sum_rv) print(expectation.doit()) # 输出:4*mu(如果是固定均值的情况) # 计算求和结果的方差(默认各随机变量独立) variance = ss.Var(sum_rv) print(variance.doit()) # 输出:4*sigma²
内容的提问来源于stack exchange,提问作者gravitydata
相关产品推荐
相关产品推荐

