カウンタ

compteur (depuis le 1er décembre 2009)193383

電子講義集(全卓樹)

電子講義集(全卓樹) >> Article details

2019/12/06

*環境とシミュレーション3

Tweet ThisSend to Facebook | by T_Zen
森林動態の久保モデル

レポート締め切りは授業中に指定します。B4F環境秘書室向かいのレポートボックス(七番全)へ(全のオフィス前のカラーボックスはゴミ箱です!)


課題300 (プログラムと結果をA4数枚に綴じて提出せよ。)
二次元格子上の各点は「0」(ギャップ)と「1」(植生)の二値をとるとする。周期的境界条件を課す。植生はタイムステップごとにアップデートされて時間発展するとする。その時間的発展は3つのプロセスに支配されると考える。

まず一つ目は「ギャップにおけるランダムな生育」
   「0」−>「1」 (確率b)
二つ目が「植生のランダムな死滅」
   「1」−>「0」 (確率d)
そして三つ目が「隣接ギャップの影響による植生の死滅」で、「1」の値を持つサイトの4つの隣接サイトいずれかに「0」があるとき
   「1」−>「0」 確率δ * k^3  ただしkは隣接する0サイトの数(0−4)
という変化である。

ランダムな初期状態(例えば50%が植生で50%ギャップ)から出発して、周期的境界条件を課した大きさ nx * ny の二次元格子状で、上のルールに基づいて nt ステップ時間発展させて、結果をアニメーションで示し、森林動態をシミュレートせよ(nx=ny=32, nt=50程度でまずやってみて、各値を2倍程度までに持ってくると良い)。

パラメータの値は
  b= 0.18、d=0.024、δ= 0.0175(=0.28/16)
でやってみて、それからそれぞれ少し増減して試してみよ。提出はパラメータ1セットで実行し、初期状態、と最終状態の結果をプリントしたのみで良い。



(発展課題:パラメータを変化させたときの森林の定常状態の相図を描け。)

予備課題31
二次元正方格子上にp0の密度でランダムに植生を撒いて表示せよ(p0=0.2, 0.5, 0.8でやってみよ)。

予備課題32
二次元正方格子上にp0=0.5の密度でランダムに植生を撒いたものを初期値とし、時間ステップごとに植生パターンが右に一サイト下に一サイト移動していく時間発展を考えて、これをアニメーションで表示せよ。周期的境界条件を課すものとする。

予備課題33
課題300のフルなモデルから、時間発展における三つ目の「隣接ギャップの影響による植生の死滅」を取り払ったモデル、すなわち「ギャップにおけるランダムな生育」と「植生のランダムな死滅」のみがあるモデルを作り、その時間発展をアニメーションで示せ。


解説

ノイマン近傍
なにを隣接サイトとみなすかにいは各種あるが、ここでは「ノイマン近傍」、すなわち上下左右4サイトを隣接とみなすことpにする。時間 t での サイト[[j,i]]を決めるのは時間 t-1 でのサイト [[j,i+1]], [[j,i-1]], [[j-1,i]], [[j+1, i]] 出の値であり、上記の隣接ギャップ数 k はこの値の和を4から引いたものである。

プログラムの骨格
Do[
  (* time loop *)
  Do[Do[ 
     BB[[t, j, i]] = BB[[t - 1, j, i]];
     If[  BB[[t - 1, j, i]] == 0,

       ];
     If[  BB[[t - 1, j, i]] == 1,
     
   ]
       , {j, 1, nn}]
    , {i, 1, nn}];
  (* time loop *)
  , {t, 2, nt}];

発展条件
スッテプごとの発展は
If[ BB[[ t, j, i ]]==0 && RandomReal[]<b,  BB[[ t+1, j, i ]]=1 ]
If[ BB[[ t, j, i ]]==1 && RandomReal[]<d,  BB[[ t+1, j, i ]]=0 ]
の二つの条件に加え、三つ目は(整数をnで周期化する関数をJp[i,n]として)
k = 4-BB[[ t, Jp[j+1,ny], i]]-BB[[ t, Jp[j-1,ny], i]]-BB[[ t, j, Jp[i+1,nx] ]] - BB[[ t, i, Jpij-1,nx] ]]
をもちいて
If[ BB[[ t, j, i ]]==1 && RandomReal[]<delta k^3,  BB[[ t+1, j, i ]]=0 ]
と言った風にかける

アニメーション
Animate[
 ArrayPlot[BB[[t]], Mesh -> All, ImageSize -> 500]
 , {t, 1, nt, 1},
 AnimationDirection -> Forward, AnimationRate -> 1, 
 AnimationRepetitions -> 1]
09:37 | Impressed! | Voted(14) | Comment(0) | 教育