トーラス状組織
- こちらのコメントから
- 2次元以外の場合を考える
- 3次元の点の集合でも同じように計算したのが以下のソース
- 高次元はRのarrayの次元を増やすことで対応できそうである
- 一方でグラフの場合がまだできていない
- 今回の3次元の場合はトーラス(表面)
- 一見安定そうな中心が途中で消えることがある
- では安定性とは何か、robustな現象は何か
- 教科書
- しばらくこの本を読む
- 作者: イリヤ・プリゴジン,小出昭一郎,安孫子誠也
- 出版社/メーカー: みすず書房
- 発売日: 1984/12/05
- メディア: 単行本
- クリック: 10回
- この商品を含むブログ (3件) を見る
library(rgl) Nx<-35 Ny<-35 Nz<-35 Nt<-30 U<-tempU<-array(0,c(Nx,Ny,Nz)) #トーラスを作る A<-array(0,c(Nx,Ny,Nz)) r1<-10 r2<-5 for(x in 1:Nx){ for(y in 1:Nx){ for(z in 1:Nz){ l<-sqrt((sqrt((x-Nx/2)^2+(y-Ny/2)^2)-r1)^2+(z-Nz/2)^2) if(((r2-2)^2<=l^2)&&(l^2 <= r2^2)){A[x,y,z]<-1} # if(l^2 <= r2^2){A[x,y,z]<-1} }}} a<--3;b<-3 #初期条件 #U[24000]<-b+2 U<-array(sample((-1):b,Nx*Ny*Nz,replace=TRUE),c(Nx,Ny,Nz)) #U[floor(Nx/2),,]<-a;U[floor(Nx/2)+1,1:floor(Ny/2),]<-b #U[(floor(Nx/2)-r1+r2-2):(floor(Nx/2)+r1-r2+2),(floor(Ny/2)-r1+r2-2):(floor(Ny/2)+r1-r2+2),floor(Nz/2)]<-b;U[(floor(Nx/2)-r1+r2-2):(floor(Nx/2)+r1-r2+2),(floor(Ny/2)-r1+r2-2):(floor(Ny/2)+r1-r2+2),floor(Nz/2)+1]<-a U<-U*A for (t in 1:Nt){ for(x in 1:Nx){ for(y in 1:Ny){ for(z in 1:Nz){ if(A[x,y,z]==1){ #トーラスに含まれる点のみ計算する if(U[x,y,z]==0){ if(sum(U[max(1,x-1):min(Nx,x+1),max(1,y-1):min(Ny,y+1),max(1,z-1):min(Nz,z+1)])>=b+2){tempU[x,y,z]<-1} }else if(U[x,y,z]>b){ tempU[x,y,z]<-a }else if(U[x,y,z]!=0){ tempU[x,y,z]<-U[x,y,z]+1 } } }}} U<-tempU plot3d(slice.index(U,1),slice.index(U,2),slice.index(U,3),col=rainbow(10)[U*(U>0)+1],alpha=ifelse(A ==0,0,1)) rgl.viewpoint(theta=30,phi=-10) }