1. เรียนรู้
  2. /
  3. Courses
  4. /
  5. Pythonで学ぶ統計シミュレーション

Connected

Exercises

単純な関数の積分

この演習では、Monte Carlo Integration(モンテカルロ積分)の考え方をシンプルな例で体験します。

ここでは、単純な積分 \( \int_0^1 x e^{x} dx\) を評価します。厳密解は \(1\) ですが、シミュレーションでは近似解になるため、\(1\) に近い値が得られるはずです。動画で見たように、手順はシンプルです。1変数関数 \(f(x)\) の場合は次のように進めます。

  1. x軸の範囲 \((x_{min}, x_{max})\) と、y軸の範囲 \((\max(f(x)), \min(\min(f(x)), 0))\) を取得します。
  2. この長方形領域内に一様分布の点を複数生成します。
  3. 箱の面積($(\max(f(x) - \min(f(x))\times(x_{max}-x_{min})$)に、\(f(x)\) の下側に入った点の割合を掛けます。

これで、Monte Carlo Integration を使って定積分を処理するための基本的な枠組みが身につきます。

คำแนะนำ

100 XP
  • sim_integrate() 関数内で、xmin から xmax の間の一様乱数を生成し、x に代入します。
  • \(\min(\min(f(x)), 0)\) から \(\max(f(x))\) の間の一様乱数を生成し、y に代入します。
  • \(f(x)\) 未満の点の割合に面積($(\max(f(x) - \min(f(x))\times(x_{max}-x_{min})$)を掛けた値を返します。
  • 最後に、ラムダ関数を使って func を \(x e^{x}\) として定義します。