% Run KMC samples for 2A -> B
% Compare SDE approximation
%
% jbr, 12/20/2011
%
omega = 500; k = 1;
c0 = 1;
n0 = c0*omega;
nsim = 10*omega;
time = zeros (nsim+1, 1);
time(1) = 0;
n = zeros(nsim+1,1);
n(1) = n0;
rand('seed', -10);
for i=1:nsim
r = k*n(i)*(n(i)-1)/(2*omega);
if (r == 0)
n = n(1:i); time = time(1:i);
break
end
% choose time
tau = -log(rand)/r;
time(i+1)=time(i)+tau;
% fire reaction
n(i+1) = n(i) - 2;
end
% deterministic solution
nts = 500;
tinit = 1e-2;
tfin = 1e2;
tc = logspace(log10(tinit), log10(tfin), nts)';
c = 1./(1/c0 + k*tc); c = c(:);
% sde solution at time points of deterministic solution
xi = zeros(nts,1);
% rand('seed',0);
for i = 1:nts-1
Delta = tc(i+1)-tc(i);
xi(i+1) = xi(i) -2*k*c(i)*xi(i)*Delta + sqrt(2*k*c(i)*c(i)*Delta)*randn;
end
csde = c + xi/sqrt(omega);
figure()
[ts, ns] = stairs(time, n);
cs = ns/omega;
semilogx(ts, cs, tc, c)
axis ([tinit, tfin, 0, 1])
figure()
semilogx(tc, csde, tc, c)
axis ([tinit, tfin, 0, 1])
data = [ts(1:end-1), cs(1:end-1), tc, c, csde];
save "sam2nd.dat" data