无循环迭代二项式更新

这可以在没有循环的情况下完成吗?


import numpy as np

n = 10

x = np.random.random(n+1)

a, b = 0.45, 0.55


for i in range(n):

    x = a*x[:-1] + b*x[1:]

我在另一个问题中遇到了这个设置。那里有一些晦涩难懂的术语。我想这与二项式期权定价模型有关,但说实话,我不太理解这个主题。我只是对公式和这种迭代更新/缩小感兴趣x,想知道是否可以在没有循环的情况下完成。但我无法理解它,我不确定这是否可能。

让我认为它可能有效的是这个 vatiaton

n = 10

a, b = 0.301201, 0.59692

x0 = 123

x = x0

for i in range(n):

    x = a*x + b*x

# ~42

实际上只是x0*(a + b)**n


print(np.allclose(x, x0*(a + b)**n))

# True


RISEBY
浏览 107回答 1
1回答

拉莫斯之舞

您正在计算: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 npfrom scipy.stats import binombinomial = binom(p=p, n=n)pmf = binomial(np.arange(n+1))res = np.sum(x * pmf)所以res = x.copy()for i in range(n):&nbsp; &nbsp; res = p*res[1:] + (p-1)*res[:-1]只是二项式分布随机变量 x 的期望值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python