为了账号安全,请及时绑定邮箱和手机立即绑定

无循环迭代二项式更新

无循环迭代二项式更新

RISEBY 2023-10-31 14:13:25
这可以在没有循环的情况下完成吗?import numpy as npn = 10x = np.random.random(n+1)a, b = 0.45, 0.55for i in range(n):    x = a*x[:-1] + b*x[1:]我在另一个问题中遇到了这个设置。那里有一些晦涩难懂的术语。我想这与二项式期权定价模型有关,但说实话,我不太理解这个主题。我只是对公式和这种迭代更新/缩小感兴趣x,想知道是否可以在没有循环的情况下完成。但我无法理解它,我不确定这是否可能。让我认为它可能有效的是这个 vatiatonn = 10a, b = 0.301201, 0.59692x0 = 123x = x0for i in range(n):    x = a*x + b*x# ~42实际上只是x0*(a + b)**nprint(np.allclose(x, x0*(a + b)**n))# True
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

您正在计算:


sum( a ** (n - i) * b ** i * x[i] * choose(n, i) for 0 <= i <= n)

[这意味着是伪代码,而不是 Python。] 我不确定将其转换为 Numpy 的最佳方法。


choose(n, i)是n!/ (i! (n-i)!),而不是 numpy 选择函数。


使用@mathfux的评论,可以做


import numpy as np

from scipy.stats import binom


binomial = binom(p=p, n=n)

pmf = binomial(np.arange(n+1))

res = np.sum(x * pmf)

所以


res = x.copy()

for i in range(n):

    res = p*res[1:] + (p-1)*res[:-1]

只是二项式分布随机变量 x 的期望值。


查看完整回答
反对 回复 2023-10-31
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信