簡単なモデル

  • こちらの続き
  • 有限な2次元格子空間を考える
  • 時間経過は離散的な世代進行とする
  • 各格子の状態は2値(0か1)とする
  • 次世代のある格子点の状態は、現世代のその格子点の状態か、その格子点と隣接する格子点との状態によって決まるものとする
  • 次世代の状態が現世代の状態を継承する確率を与え(下のソースでは0.5を与えている)、残りは、隣接格子のいずれかの状態を受け継ぐものとする。複数ある隣接格子のどれを継承するかは、等確率で決まるものとする
  • これは、ある空間上の子孫は、その空間上にいる片親とそれとメイティングしうるもう片親との子であって、両親のどちらを引き継ぐかは50:50であり、メイティングがだれとなされるかは、空間上の存在位置によってランダムに決まる、というモデルである
  • しばらくすると、オレンジ一色になる(これはドリフトアウトした状態)。アニメはまた、初めから再度、再生されている
# 2次元格子の両軸の長さ
X<-21
Y<-21
# 状態を格納する行列
A<-matrix(0,X,Y)
# 中央付近に1の集団を作る
x0<-5:15
y0<-9:11

A[x0,y0]<-1

# 図を一覧表示するときの設定
#Nt1<-4
#Nt2<-4
#Nt<-Nt1*Nt2
#par(mfcol=c(Nt1,Nt2))
# 追跡世代数
Nt<-99

for(i in 1:Nt){
	tmpA<-A
	for(j in 1:X){
		# 同地点の親とメイティングする親のX軸番地
		# 周辺のときの条件を入れている
		if(j==1){
			parentX<-c(j+1)
		}else if(j==X){
			parentX<-c(j-1)
		}else{
			parentX<-c(j-1,j+1)
		}
		for(k in 1:Y){
		# 同地点の親とメイティングする親のY軸番地
		# 周辺のときの条件を入れている
			if(k==1){
				parentY<-c(k+1)
			}else if(k==Y){
				parentY<-c(k-1)
			}else{
				parentY<-c(k-1,k+1)
			}
			# 親の候補のXY番地を作る
			parents<-expand.grid(parentX,parentY)
			# 一人を選ぶ
			true.parent<-parents[sample(length(parents[,1]),1),]
			#print(c(j,k))
			#print(true.parent)
			# 同地点親を継承するか、隣接親を継承するかを乱数で決める
			selfORother<-runif(1)
			tmpval<-A[j,k]
			if(selfORother<0.5){
				tmpval<-A[true.parent[1,1],true.parent[1,2]]
			}
			# 次世代の分布行列に格納
			tmpA[j,k]<-tmpval
			#print(tmpval)
		}
	}
	# 分布行列の更新
	A<-tmpA
	#print(A)
	# 世代ごとに絵を描く
	image(A)
	# 世代ごとにpngファイルに描き出す
	# ぱらぱらアニメ化するときに順序がそろうように100を加えてファイル名のけたをそろえている
	file.name=paste("test",100+i,".png",sep="")
	png(file=file.name)
	image(A)
	dev.off()
}
# ImageMagickの動いているwindows上で
# 出力したpngファイルをアニメにまとめるコマンド
# コマンドプロンプトで発行
# -loop 0 は繰り返し再生の指示(1回きりの映画なら-loop 1)
# convert -loop 0 -delay 10 *.png myAnimation.gif
  • ImageJなるアプリケーション
    • こちらから
    • Image MagickよりGUIベースであって親切。対応OS・ビット違いなど、最近のパソコンへの配慮が大きい(模様)
    • Javaベースらしい
    • MacOSX, Linux, Windows
    • 32bit 64bit対応
    • Java環境ありなしどちらにも対応したexeファイルをこちらからダウンロード
    • animation gif ファイルを作るなら
      • たくさんのanimation gif化するべきファイルを1フォルダにおさめる
    • ツールバーのFileから、Importを選ぶ
    • 1ファイルをとりあえず選択すると、次にウィンドウが開いて、合わせる画像ファイルの枚数(デフォルトですべての枚数が表示されている)を指定、取り込みファイルがすべてでなく、一部であるなら、どういう規則のファイル名かなどを指定することもできる。順序は、ファイル名のnumerical sortをするかの選択などもある。その他のオプションもあるが、ひとまず触らない
    • いったん取り込んだら、次に、Save As で、Animation Gifを選択して出来上がり