蒙特卡罗模拟算法

计算科学 蒙特卡洛
2021-12-09 11:48:21

在每个时间步更新每个组件的电压的算法是

v(t+Δt)={v(t)eγΔt,n=0v(t)eγΔt+hn=1
在哪里n表示到达区间内某个分量的脉冲数(t,t+Δt).这里h=0.03,γ=20,Δt=105.我不知道如何在蒙特卡罗模拟中使用这个算法。更准确地说,我对蒙特卡罗模拟的使用一无所知。请帮忙

2个回答

在我看来,您只是随机选择n在每个时间步,给定一些分布,你应该抽样n从,并使用您的动力学函数从时间传播电压t到时间t+Δt.

然后,您将运行从初始时间到最终时间的多个蒙特卡洛模拟,您基本上选择一个随机值n在每个时间步。使用最终结果,您可以计算统计信息,例如某个时间的电压预期值t^, 你的电压在时间的变化t^, 等等。

如果为此编写代码并按照设置的方式使用常量的值,则可能会生成以下类型的图形:

在此处输入图像描述

如果Δt那么足够小n只能为 0 或 1。否则,您必须减少Δt或将您的公式更改为v(t+Δt)=v(t)eγΔt+n×h(顺便说一句,这也适用于n=0)。

而如果n只能是 0 或 1,没有分布的概念:只有概率。的概率n为 1 是p0×Δt(一阶,所以Δt必须很小)。

然后只需在 0 和 1 之间(等可能)绘制一个(伪)随机数:如果它小于p0×Δt然后n:=1, 否则n:=0. 0到1之间的随机数小于的概率p0×Δt是...p0×Δt,这正是您要设置的概率n为 1。