Рассчитать эффективный коэффициент диффузии

Мне нужно вычислить скорость дрейфа ( 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);

тем не менее я не получаю ожидаемого результата от аналитических решений для конкретного броуновского движения, которое я изучаю. Я неправильно рассчитываю?


person Jared Lo    schedule 28.08.2019    source источник
comment
Мы не можем воспроизвести вашу проблему, потому что Do не определено.   -  person Bentoy13    schedule 28.08.2019
comment
извините, я обновил примеры со значением Do   -  person Jared Lo    schedule 28.08.2019
comment
time имеет неподходящий размер; измените его на time=1:dt:N*dt, например.   -  person Bentoy13    schedule 28.08.2019
comment
Я запускаю код, получаю vx_Sim=-8.2e-10 и DDeffSim=-9.1e-10. Мне кажется тот же результат с учетом численных приближений. Так в чем проблема?   -  person Bentoy13    schedule 28.08.2019
comment
так что теоретически vx=0, что правильно по сравнению с моделированием, но DDeff должно быть равно 1.   -  person Jared Lo    schedule 29.08.2019
comment
Значит, ваша ошибка заключается в вычислении XM, сверьтесь с исходной формулой. Как я уже сказал, я не могу больше помочь вам, потому что я ничего не знаю об этом предмете.   -  person Bentoy13    schedule 29.08.2019


Ответы (1)


поэтому эффективный коэффициент диффузии связан с дисперсией моего ансамбля векторов, поэтому я использовал функцию Matlab var() для вычисления диффузии.

DDeffsim=mean(var(wn).')'./(2*dt)/NT;
person Jared Lo    schedule 09.09.2019