2015-09-30 56 views
1

比方說,我有一個看起來像這樣的更新方案:加快歐拉數值方法在Python

import numpy as np 

N = 1000 
dt = 0.01 

x = np.zeros(N) 
x[0] = 0.5 

for i in xrange(1, N): 

    rand = np.random.normal(loc=0.,scale=1.) 

    x[i] = x[i-1]*(1 + dt + np.sqrt(dt)*rand) 

什麼是加快這種形式,在當前的數組元素需要的代碼的最佳策略前面的數組元素進行計算?

我試圖把它放到矢量化的形式,但我有點卡住如何使用尾部數組元素來更新當前的。

如果有更好的解決方案,不涉及矢量化我也向那些開放。

回答

3

試試這個:y中

x = np.random.randn(1000) 
x += 1 
x[0] = 0.5 
y = np.cumprod(x) 

回答

+0

我想,以確保它是一樣的。你能幫我理解這個區別嗎,我可以解決它嗎? (或者,如果您願意,也可以發佈自己的答案)。 –

+0

我明白了。謝謝!我已將cumsum更改爲cumprod。我認爲應該有。 –