我目前正在实施蒙特卡洛方法来求解扩散方程。该解可以表示为phi(W)的数学期望,其中phi是一个函数(根据扩散方程而变化),而W是在域边界处停止的对称随机游动。为了评估x点处的函数,我需要按照x的期望开始每一次步行。
我想对函数进行大量评估。所以这就是我要做的:
我的代码(Python)如下所示:
for k in range(N): #For each "walk"
step = 0
while not(every walk has reach the boundary):
map(update_walk,points) #update the walk starting from each x in points
incr(step)
Run Code Online (Sandbox Code Playgroud)
问题是:由于N可能很大,并且点数也很长,所以它非常长。我正在寻找可以帮助我优化此代码的任何解决方案。
我曾考虑过使用IPython进行并行处理(每次遍历是独立的),但是我没有成功,因为它在函数内部(它返回了类似的错误
“无法启动功能'f',因为未将其作为'file.f'找到”,但'f'在file.big_f中定义)