在python中加速Euler数值方案

时间:2015-09-30 13:10:23

标签: python performance numpy cython

假设我有一个看起来像这样的更新方案:

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)

加速此表单代码的最佳策略是什么,当前数组元素需要先前的数组元素才能进行计算?

我试图把它放到矢量化的形式,但我有点担心如何使用尾随数组元素来更新当前的数组元素。

如果有更好的解决方案不涉及矢量化,我也愿意接受。

1 个答案:

答案 0 :(得分:3)

试试这个:

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

回答