全量が保存されるNeumann条件
N<-30 M<-30 T<-100 d<-1 #キョリの次元 dt<-1 #時間の次元 D<-0.12 #拡散係数 U<-array(0,c(N,M,T)) U[5:10,5:10,1]<-1 #初期条件 #拡散 for(t in 1:(T-1)){ for(i in 1:N){ for(j in 1:M){ k<-length(U[max(1,i-1):min(i+1,N),max(1,j-1):min(j+1,M),t]) du<-D/9*(sum(U[max(1,i-1):min(i+1,N),max(1,j-1):min(j+1,M),t])-k*U[i,j,t])/(d^2)*dt U[i,j,t+1]<-U[i,j,t]+du } } } min(U) for (t in 1:T){ persp(U[,,t],col=3,theta=20,phi=30,zlim=c(0,1)) #print(sum(U[,,t])) }