MATLAB で、確率シミュレーション アルゴリズム (Gillespie) を単純な生死プロセス用にコーディングhold on
し、for
ループ内で使用してプロットを取得しました。
値ごとに 100 のシミュレーションを実行したため、値PStoch
ごとに 100 の値があります。値はすべて一緒にクラスター化されているため、以下のプロットでは見にくいです。Qp
Qp
後で計算できるように、プロットからのデータをマトリックスに保存するにはどうすればよいですか? PStoch
具体的には、すべての値が各値に対応するサイズ 100 x 100 のマトリックスが必要Qp
です。
私のコードは以下の通りです:
rng('shuffle')
%% Pre-defined variables
Qpvec = logspace(-2,1,100);
len = length(Qpvec);
delta = 1e-3;
P0vec = Qpvec./delta;
V = [1,-1];
tmax = 10000;
%% Begin simulation
figure(1)
for k = 1:len
t0 = 0;
tspan = t0;
Qp = Qpvec(k);
P0 = P0vec(k);
Pstoch = P0;
while t0 < tmax && length(Pstoch) < 100
a = [Qp, delta*P0];
tau = -log(rand)/sum(a);
t0 = t0 + tau;
asum = cumsum(a)/sum(a);
chosen_reaction = find(rand < asum,1);
if chosen_reaction == 1;
P0 = P0 + V(:,1);
else
P0 = P0 + V(:,2);
end
tspan = [tspan,t0];
Pstoch = [Pstoch;P0];
end
plot(Qp,Pstoch)
hold on
axis([0 max(Qp) 0 max(Pstoch)])
end
手伝ってくれてありがとう。