這可以在沒有循環(huán)的情況下完成嗎?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:]我在另一個(gè)問題中遇到了這個(gè)設(shè)置。那里有一些晦澀難懂的術(shù)語。我想這與二項(xiàng)式期權(quán)定價(jià)模型有關(guān),但說實(shí)話,我不太理解這個(gè)主題。我只是對(duì)公式和這種迭代更新/縮小感興趣x,想知道是否可以在沒有循環(huán)的情況下完成。但我無法理解它,我不確定這是否可能。讓我認(rèn)為它可能有效的是這個(gè) vatiatonn = 10a, b = 0.301201, 0.59692x0 = 123x = x0for i in range(n): x = a*x + b*x# ~42實(shí)際上只是x0*(a + b)**nprint(np.allclose(x, x0*(a + b)**n))# True
1 回答

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
您正在計(jì)算:
sum( a ** (n - i) * b ** i * x[i] * choose(n, i) for 0 <= i <= n)
[這意味著是偽代碼,而不是 Python。] 我不確定將其轉(zhuǎn)換為 Numpy 的最佳方法。
choose(n, i)是n!/ (i! (n-i)!),而不是 numpy 選擇函數(shù)。
使用@mathfux的評(píng)論,可以做
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]
只是二項(xiàng)式分布隨機(jī)變量 x 的期望值。
添加回答
舉報(bào)
0/150
提交
取消