【问题标题】:Calculate effective diffusion coefficient计算有效扩散系数
【发布时间】:2019-08-28 04:33:05
【问题描述】:

我需要计算漂移速度 ( v=d/dt[r(t)] ) 和有效扩散系数 (Deff=d/dt[r(t)^2]-d/dt[r(t)]^2 ) 来自随机轨迹,用于布朗运动在周期势上的情况。

仅作为示例,假设我有一组随机轨迹:

dt=1e-2; N=1e6; Ensemble=200; Do=1;
wn=sqrt(2*Do*dt)*normrnd(0,1,[Ensemble,N]);
time=0:dt:N*dt;

我首先计算漂移速度:

 P2 = polyfit(time,mean(wn(:,:)-wn(:,1)),1);
vx_Sim=P2(1);

这给了我解析解的期望值。 然后我计算有效扩散,如:

XM=mean((wn(:,:)-wn(:,1)).^2,1)/(2*Do);
P =polyfit(time,sqrt(XM),1); 
DDeffSim=P(1);

但我没有从我正在研究的特定布朗运动的解析解中得到预期的结果。我计算错了吗?

【问题讨论】:

  • 我们无法重现您的问题,因为未定义 Do。
  • 对不起,我已经用 Do 的值更新了示例
  • time 的大小不合适;例如,将其更改为 time=1:dt:N*dt
  • 我运行代码,得到vx_Sim=-8.2e-10DDeffSim=-9.1e-10。考虑到数值近似,在我看来结果相同。那么问题出在哪里?
  • 理论上 vx=0 与模拟相比是正确的,但 DDeff 应该等于 1。

标签: matlab statistics stochastic-process probability-distribution


【解决方案1】:

所以有效扩散系数与我的向量集合的方差有关,所以我使用 Matlab 函数 var() 来计算扩散。

DDeffsim=mean(var(wn).')'./(2*dt)/NT;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-13
    • 2021-10-03
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2020-08-18
    • 2014-03-16
    相关资源
    最近更新 更多