積分区間が1でないモンテカルロ積分の計算方法をわかりやすく解説
積分区間が1でない有限区間のモンテカルロ積分はどうやるのか?
モンテカルロ積分は、難しい積分の計算ができなくてもExcelで簡単に近似解を得られる便利な方法です。
>> 【Excelで機械学習】モンテカルロ積分①難しい積分が誰でも簡単にExcelで解ける
積分区間で一様乱数xを沢山作って、それぞれに対応するf(x)を求め、その平均を取れば積分の近似解になりました。
ここで一つ問題があります。
積分区間が0~1とか5~6など区間幅が1の場合にしか、この方法が使えないのです。
今回は、これを積分区間が有限であればいくつでも良いように拡張していきます。
積分区間が2だと積分値は2倍になる
まず、積分区間が2の場合、前回と同じ関数を同じ方法で計算するとどうなるかを見てみましょう。
f(x) = x2
を0から2まで積分します。
下のグラフのピンクの部分の面積を求めるということです。
Excelで前回と同じやり方でモンテカルロ積分をすると次のようになります。
約1.34になりました。
正解は約2.67です。
約2倍違います。
どこで間違ってしまったのでしょうか?
モンテカルロ積分は長方形の平均面積を求めている
モンテカルロ積分では、まずxの積分区間から乱数を沢山作ります。
するとxに対応するf(x)も沢山できます。
そして、その平均を積分値としました。
これは見方を変えれば、高さf(x)、幅1の長方形の面積の平均を取っているとも考えられます。
例えば、乱数で0.6ができたとすると、次のように面積0.36の長方形ができます。
次に0.8の乱数ができたとすると、次のように面積0.64の長方形ができます。
このように乱数ができる度に作られる幅1の長方形の面積の平均値を取っていると考えることができます。
積分区間が1であれば、このように沢山できる幅1の長方形の面積の平均を取って、積分値の近似値としていたのです。
ところが積分区間が2の場合は、下のグラフのように幅2の長方形の面積の平均を取らないと積分値になりません。
なので、次のように積分区間である2をf(x)に掛けないといけないのです。
モンテカルロ積分はある確率分布を積分区間に掛けている
以上が感覚的な説明ですが、式でも示すことができます。
積分区間0から1での一様乱数xを作ってf(x)に代入するということは、次のようにxが0から1の間でだけ確率密度が1になる確率分布p(x)をf(x)に掛けることと同じです。
これを拡張すると、積分区間aからbでの一様乱数xを作ってf(x)に代入するということは、次のようにxがaからbの間でだけ確率密度が1/(b-a)になる確率分布p(x)をf(x)に掛けることと同じです。
このp(x)を積分したい関数f(x)に掛けてaからbまでの区間で積分するのですが、f(x)×p(x)はaからbの区間において次のように変形することができます。
f(x)
=f(x)/p(x)×p(x)
=f(x)/(1/(b-a))×p(x)
=(b-a)×f(x)×p(x)
p(x)は区間aからbの一様分布ですから、この区間で一様乱数xを作って、それをf(x)に代入し(b-a)倍して平均を取れば積分値になるのです。
積分区間[a,b]でモンテカルロ積分する時は(b-a)倍する
きちんとした式で書くとこうなります。
一方で期待値の式は次の通りです。
期待値とは取り得る値の平均のことです。
例えばサイコロを振った時には、それぞれの目が1/6の確率で出ます。
ですので期待値は、
1×1/6+2×1/6+3×1/6+4×1/6+5×1/6+6×1/6=3.5
です。
つまり、それぞれの取り得る値に確率を掛けて足した値が期待値です。
この確率を一様分布と考えたものが、モンテカルロ積分ともいえます。
でも、確率として取れるのは一様分布だけではありません。
実はどんな分布でも良いのです。
拡張編をこちらで解説しています。
無限区間のモンテカルロ積分は被積分関数の選び方が重要である理由