マルコフ連鎖としての偏微分方程式の数値計算(markovpde03) - 課題p072

Time-stamp: "2018-06-08 Fri 16:46 JST hig"

情報

  • 出題:2018-06-01
  • 実行/提出期限:2018-06-08
  • 提出
    • markovpde03.c プログラム.
    • markovpde03.docx RSStudioによる解析結果

学習目標

  • マルコフ連鎖の状態空間が大きいとき, 転置推移確率行列\(M\)の規則性を利用して, 「転置推移確率行列\(M\)を確率ベクトル(分布)\(\vec{p}\)にかける」関数を書ける.

課題

状況の説明

状態空間 \(S=\{x\}=\{0,1,2,3,\ldots,m-1\}\) 上のマルコフ連鎖を考える.

\(m\)の値と転置推移確率行列は, 各自の提出場所付近から得ること.

初期分布を \( p(x,0)= \begin{cases} 1 & (x=9)\\ 0 & (\text{他})\\ \end{cases} \) とする.

課題のタスク

  • 下の仕様のプログラムを作ろう. ただし, \(m\times m\)の行列を2次元配列として書かずに, \(M\)の規則性を利用して関数int multiply_trans(double np[], double p[], int m)を書こう. 両端の2-4行分くらい例外扱いしないといけないでしょう.
  • 正しく書けたかどうかは, プログラム test_multiply_trans.cにこの関数をペーストして実行すると検証できるかも. このプログラムは, 行列 \(M\)の転置を出力する.
  • T=30の実行結果を, に保存しよう.
  • RStudioで, \(p(x,t)\)の \(t=0,1,2,\ldots,30\) の31本の折れ線グラフを描こう.

プログラムの入力

  • 最終時刻T(0以上の整数)

プログラムの入力例

3

プログラムの出力

  • 1行目に#T=に続いて 最終時刻\(T\)
  • 2行目にコンマで区切って, 文字tと座標xの値\(t,0,1,2,\ldots,m-1,\).
  • 1行目に#T=に続いて 最終時刻\(T\)
  • 2行目にコンマで区切って, 時刻0,\(\vec{p}(0)\)すなわち\(t=0\)の\(t, p(0,t),p(1,t),p(2,t),p(3,t),\ldots,p(m-1,t),\). ただし, 小数点以下15桁まで表示.
  • 2行目にコンマで区切って, 時刻1,\(\vec{p}(1)\)すなわち\(t=0\)の\(t, p(0,t),p(1,t),p(2,t),p(3,t),\ldots,p(m-1,t),\). ただし, 小数点以下15桁まで表示.
  • T+2行目にコンマで区切って, 時刻T,\(\vec{p}(T)\)すなわち\(t=T\)の\(t, p(0,t),p(1,t),p(2,t),p(3,t),\ldots,p(m-1,t),\). ただし, 小数点以下15桁まで表示.

プログラムの出力例

#T=3
t,0,1,,m-2,m-1,
0,0.0,0.0,,0.0,0.0,
1,0.0,0.0,,0.0,0.0,
2,0.0,0.0,,0.0,0.0,
3,0.0,0.0,,0.0,0.0,

アドバイス

  • 以前にやった授業内Quiz参照.

自分でチェック!

  • すべてのガイド
  • このサイトのコンテンツ

    QRcode to hig3.net

    http://hig3.net