我們從1個單元開始。它可以以速率(指數速率)1複製並以速率1死亡。設Y表示單元數。第一個事件(死亡或複製)發生在速率2.如果它是死亡 - >我們停止,因爲我們有0個單元。 如果是複製 - >我們將時間更新到t + tau,並且下一個事件現在以速率4發生(因爲2個單元格可以複製或死亡)。MATLAB代碼建模細胞複製和死亡
由於只有2個事件可能發生,一個細胞死亡的概率是1 /(1 + 1),2個細胞的死亡概率是2 /(2 + 2)等等,複製也是一樣的。這就是爲什麼我們繪製一個從0到2的隨機數。如果這個數大於1,那麼一個細胞就會死亡,否則它會複製。
直觀地,細胞應該死時間的至少一半,因此 0細胞在時間3的概率應該是P(Y = 0)> 0.5(實際上 答案是3/4) 。但是,當我把這個代碼放到一個for循環,並運行它 1000次,我得到的次數Y = 0至大約400是 0.4
t=0;
rr=1; %rate of replication 1 cell -> 2 cells
rd=1; %rate of death 1 cell -> 0 cells
Y=1; %initial number of cells
while t<3 && Y>0 % interested in probabilities of number of cells at time t=0,t=1,t=2,t=3
r = 2*rand; %draws a random number from 0 to 2
tau=exprnd(2*Y); %since the total rate of all possible events is replication+death=2 for each cell
if t+tau < 3 %if the event happens before 3 seconds
if r>1 %death
Y=Y-1;
else Y=Y+1; %otherwise replication
end
elseif t+tau > 3 %if the next event happens after 3 seconds, we are not interested.
Y;
t;
break
end;
t=t+tau; %update time from t to t+tau
end
我已經完成了100,000次運行,並沒有收斂。我不知道出了什麼問題 – GRS
我不太明白你計算P(Y = 0)的方式,我不確定它的正確性。嘗試正式寫入... –
Y的結果是0除以運行次數的次數。我認爲我通過使用指數1/2Y速率而不是2Y來滾動tau來解決問題。然後結果一致。我不明白爲什麼,但它是一個不同的問題 – GRS