カウンタ

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

電子講義集(全卓樹)

12345
2018/12/03

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

Tweet ThisSend to Facebook | by T_Zen

二次元配列の可視化、三次元配列を使った二次元図形のアニメーション


わからなくなったら「Mathematica プログラムの基本」に戻って考えよ

1/11の時間内に課題200,あるいはオプショナルに課題201を解いて、日付、課題名、学籍番号、指名を明記の上、プログラムとアウトプット例をA4用紙2枚以内で提出せよ。


課題200
横nx列、縦ny行の格子状に何かパターン(例えば自分のイニシャル)を表示して、そのパターン上下左右好きな方向にnt時間ステップの間動かすアニメーションプログラムを作れ。ただし左右、上下ともに周期的境界条件を課す。

課題201(発展課題)
上記200で、パターンの動きに加えて、パターンの色が徐々に変化していくようにするものを作れ。



ヒント1:格子とその表示の例

(*  Two Dim Screen  *)
ny=10; nx=12;
W = ConstantArray[0,{ ny, nx} ];
 Do[  Do[ W[[ j, i ]] =RandomInteger[6], { i, 1, nx} ] ,  { j, 1, ny} ];
ArrayPlot[ W, Mesh->All, ColorFunction->"LakeColors" ]


ヒント2:格子アニメーションの例

(*Animation of Two Dim Screen*)
Jp[j_, n_] := Mod[j - 1, n] + 1;

nt = 40;

ny = 10; nx = 12;
  nc=32;

T = ConstantArray[0, {nt, ny, nx}];


   Do[Do[T[[1, j, i]] = RandomInteger[nc], {i, 1, nx}], {j, 1, ny}];


Do[

  Do[Do[T[[t + 1, j, i]] = Jp[  T[[t, j, i]] - 1, nc  ], {i, 1,  nx}], {j, 1, ny}],
{t, 1, nt - 1}];


Animate[ArrayPlot[T[[t]], Mesh -> All, ColorFunction -> "LakeColors"]
, {t, 1, nt, 1}]

ArrayPlot[T[[1]], Mesh -> All, ColorFunction -> "LakeColors"]
ArrayPlot[T[[5]], Mesh -> All, ColorFunction -> "LakeColors"]


------------------------------------------------------------------------------------------------------------
Example;
(* T+Zen Kadai 200 1/11/H31 *)
Jperi[j_, n_] := Mod[j - 1, n] + 1;
nt = 50; nx = 20; ny = 9;
TT = ConstantArray[0, {nt, ny, nx}];
TT[[1, 2, 2]] = 2; TT[[1, 2, 3]] = 3; TT[[1, 2, 4]] = 4;
TT[[1, 2, 5]] = 3; TT[[1, 2, 6]] = 1;
TT[[1, 3, 4]] = 4; TT[[1, 4, 4]] = 7; TT[[1, 5, 4]] = 6;
TT[[1, 6, 4]] = 2;
TT[[1, 2, 9]] = 1; TT[[1, 2, 10]] = 1; TT[[1, 2, 11]] = 1;
TT[[1, 2, 12]] = 2; TT[[1, 2, 13]] = 3;
TT[[1, 3, 12]] = 4; TT[[1, 4, 11]] = 5; TT[[1, 5, 10]] = 6;
TT[[1, 6, 9]] = 7; TT[[1, 6, 10]] = 6; TT[[1, 6, 11]] = 5;
TT[[1, 6, 12]] = 3; TT[[1, 6, 13]] = 1;

Do[
  Do[ Do[ 
     TT[[t + 1,  Jperi[i, ny], Jperi[j + 1, nx]  ]] =
      Jperi[TT[[t, i, j]] + 2, 8] , {j, 1, nx}], {i, 1, ny}];
  , {t, 1, nt - 1}];
(*Print[    ArrayPlot[T,Mesh\[Rule]All,  \
ColorFunction\[Rule]"Rainbow"]    ];*)
Print[ Animate[   
   ArrayPlot[TT[[t]], Mesh -> All,
    ColorFunction -> "SiennaTones"]    , {t, 1, nt, 1}]];
Do[ Print[  
   ArrayPlot[TT[[t]], Mesh -> All,
    ColorFunction -> "SiennaTones"]   ] , {t, 1, 4}];



01:35 | 投票する | 投票数(7) | コメント(0) | 教育
12345