gpt4 book ai didi

python - 使用 scipy.integrate 将布朗运动纳入粒子轨迹积分

转载 作者:太空狗 更新时间:2023-10-29 21:59:27 29 4
gpt4 key购买 nike

我想在简单的线性粒子相互作用模型之上添加热波动。到目前为止(没有布朗运动)一切都使用 scipy.integrate.odeint 完成并且工作完美。因此,最好找到一种方法,通过使用 scipy.integrate 方法之一来包含随机运动。问题如下:使用 Langevin 热浴,我必须按如下方式更新粒子位置 (x) 和速度 (v):

x = x + v * dt

v = v + (interaction_force * dt + random_force * dt)/质量

其中:random_force = sqrt(constant/dt)*random_number

我认为有两个问题:

  1. 步长 dt 出现在 random_force 中。但是我不知道自适应步长控制在运行过程中改变的当前步长。

  2. 步长控制会出问题,只要用两个不同的random_numbers来比较不同的步长,就会有比较大的差异。 (我不确定是否使用了两个不同的random_numbers)

我唯一的想法是使用固定步长的方法。但我还没有找到任何喷气式飞机。关于如何解决这个问题有更好的想法吗?

最佳答案

odeint 中使用的方法类型不适用于 SDE。可调整大小的时间步长方法并不真正适用于布朗运动,因为随着时间步长变小,解不会收敛到平滑的东西。

你最好只使用 Euler Maruyama method .这种方法非常简单,您可以自己编写集成例程。

还有更高级的方法:下一个最广为人知的方法是 Milstein 方法,它对于乘法 SDE 更准确,但对于加法 SDE(例如您的)是等效的。一般来说,使用更复杂的方法对 SDE 的好处不如 ODE 大,所以我会说只使用 EM。

关于python - 使用 scipy.integrate 将布朗运动纳入粒子轨迹积分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35437010/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com