DLA(課題1301)

[全課題リスト|サンプルソース|完成した実行ファイル(実習室のみ)|完成したソースの例] Time-stamp: "2004/12/22 Wed 21:40 hig"

講義L13 (代替) で説明した, ラグランジュ表示のランダムウォーカーと, オイラー表示の健康/不健康な村人の両方がでてくる DLAモデルを考えます.

xsize × ysize の升目(セルという)を考えます. ただし, 今回は正方形 xsize=ysize だとしましょう. 各々のサイトに住む個体は, 健康=ON, 不健康=OFF のいずれかの状態をとります. 最初の時刻には, (xsize/2, ysize/2) の一人だけが不健康で, 残りはすべて健康だとします.

ランダムウォーカー(1人だけ)の初期位置を, ( (0.5 + 0.4*cos(θ))*xsize, (0.5+0.4*sin(θ))*ysize) (を int と見なしたもの) とします. ただし, θは, [0,2π) に値をとる一様乱数です. この考え方については 講義L13 (代替)参照.

1タイムステップごとに次のことが起こります.

  1. ウォーカーは, 上下左右のいずれかに, 確率 1/4 ずつで移動する.
  2. ウォーカーの移動先セル (x,y)の, まわり8セルのいずれかが不健康であるなら, (x,y) も不健康となる. そして, 新しいウォーカーが, 新しい乱数 r を求めて, 新しい初期位置に置き直される
  3. ウォーカーがxsize × ysize 個のセルの外にでてしまった場合も, 新しい乱数 r を求めて, 新しい初期位置に置き直される
  4. 発病(不健康となること) が, (xsize/2,ysize/2) から 0.4*xsize より離れたところで起きるようになったら, このモデルには意味がなくなるので, 画面をポーズする(変化を止める)か, 終りです, と printf する.
  5. 上で説明した以外には発病は起らない
  6. 治癒は全く起らない

講義L13 (代替) の説明を参考にして, プログラム dla1.c を完成させ, ウォーカーを白の球, 不健康を赤の球, 健康を緑の板のまま, として, アニメーションしよう. うまく動くようになったら, サイズや速さを変えてきれいなグラフィックスを作ろう.

暇と興味のある人のための追加課題

上の課題で, 画面の更新を1タイムステップごとには行わず, どこかで発病が起るごとに行う プログラム dla2.c を完成させよう. ランダムウォーカーは描かなくてよい.
Copyright © 2004 Saburo Higuchi. All rights reserved.
樋口三郎, hig mail address