我有一个方格子。在格子的每个位置,有分子,其中是一个很大的随机数,对于不同的站点是不同的。N在开始时等于100000000+-100,随着时间的推移而变化。我希望每个分子在每个时间步进行随机游走。非常大,不可能对每个站点的每个分子应用随机游走。有人可以帮忙吗?它是其他代码的一部分,实际上分子 f cites 被其他粒子消耗并且它们及时扩散,但我遇到的问题是分子的扩散。我没有足够的分数来回答评论,所以我在这里回答。是的,格子是二维的。对,就是这样!我想要每个站点中的粒子数。但我不明白你的意思。你能提供一个答案吗?
格子上的随机游走
计算科学
matlab
2021-12-09 11:51:40
2个回答
在评论中,@WolfgangBangert 提到了第一部分,即表示:而不是存储粒子一个晶格位置——一个二维向量每个维度有 9 个条目 - 您可以通过为每个站点存储来选择双重表示占据该站点的粒子数。
第二个组成部分是过渡。直截了当,你必须画两次随机数以检查每个粒子是否经历过渡。但是,这样一来,您将一无所获(不管第一步中系统状态的减少表示如何)。
因此,您通过正态分布来近似经历转变的粒子的分布,这应该是一个非常好的近似值,因为您的相当大。其理论基础是中心极限定理,正态分布的参数取决于你的微观过渡定律。然后你从法线中抽取一些随机数——这甚至可能没有必要,因为法线应该非常清晰,所以你可以选择平均值。
请注意,当从微观描述到规范系综时,上述过程类似于经典统计物理学中所做的。
对于如此大的数字,扩散过程本质上是“确定性的”(https://en.wikipedia.org/wiki/Law_of_large_numbers),因此经典方法是为扩散方程实现有限差分方法,例如:https:// nl.mathworks.com/matlabcentral/fileexchange/38088-diffusion-in-1d-and-2d。
其它你可能感兴趣的问题