我想用random walk 模擬A+A=0的化學反應。以下是我的代碼 我用0代表空格子,1代表有粒子的格子;1+1=0
clear;clc
iterMax=20;
Nx=10;
Ny=10;
M_0=10;% the number of particles initial
A=zeros(Nx,Ny);
N=Nx*Ny;
% linear index S
ind = sub2ind(size(A),1:Nx,1:Ny);
index=randperm(N,M_0);%choose 10 element in A randomly
A(index)=1
S=find(A==1);%各個粒子的位子
M=zeros(1,iterMax);
M(1)=M_0;
r=zeros(1,iterMax);
r(1)=0.25;
i=fix(r.*M)+1;
for n=1:iterMax
for j=2:iterMax
r(j)=rand(1);
end
if (0<r(n))&&(r(n)<=0.25)
dS=-Ny;
if (S(i)+dS)<=N && (S(i)+dS)>0
if A((S(i)+dS)==0)
A(S(i))=0;
A(S(i)+dS)=1;
S(i)=S(i)+dS;
M(n+1)=M(n);
else
A(S(i))=0;
A(S(i)+dS)=0;
k=find(S==S(i)+dS);
S(k)=[];
S(i)=[];
M(n+1)=M(n)-2;
if M(n+1)<0
break
end
end
else
S(i)=S(i);
M(n+1)=M(n)
end
elseif (0.25<r(n))&&(r(n)<=0.5)
dS=Ny;
。。。
error:


為什么除了M(1)=10, 其他的M都為0 是回圈哪里出了問題?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/184893.html
標籤:其他開發語言
