假设我有一个如下所示的更新方案:
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)
加速这种形式的代码的最佳策略是什么,当前数组元素需要前一个数组元素来进行计算?
我试图将其放入矢量化形式,但对于如何使用尾随数组元素来更新当前数组元素,我有点困惑。
如果有更好的不涉及矢量化的解决方案,我也愿意接受。
最佳答案
试试这个:
x = np.random.randn(1000)
x += 1
x[0] = 0.5
y = np.cumprod(x)
答案为y
关于python - 在 python 中加速欧拉数值方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32867018/