python モンテカルロ积分の收束テスト

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python モンテカルロ积分の收束テスト相关的知识,希望对你有一定的参考价值。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import uniform
import scipy.integrate

# モンテカルロ積分の収束テスト
# 例3.3の場合

N = 10000

a, b = 0, 1
h = lambda x: (np.cos(50 * x) + np.sin(20 * x)) ** 2

# scipy.integrateで積分を計算
I = scipy.integrate.quad(h, a, b)[0]
print "scipy.integrate:", I

# モンテカルロ積分の収束テスト
x = h(uniform(loc=a, scale=b-a).rvs(size=N))

# サンプル数1のh_1からサンプル数Nのh_Nまで推定値をまとめて求める
estint = np.cumsum(x) / np.arange(1, N + 1)

# サンプル数1のsqrt(v_1)からサンプル数Nのsqrt(v_N)まで標準偏差をまとめて求める
esterr = np.sqrt(np.cumsum((x - estint) ** 2)) / np.arange(1, N + 1)

plt.plot(estint, color='red', linewidth=2)
plt.plot(estint + 2 * esterr, color='gray')
plt.plot(estint - 2 * esterr, color='gray')
plt.ylim((0, 2))
plt.show()

以上是关于python モンテカルロ积分の收束テスト的主要内容,如果未能解决你的问题,请参考以下文章

python 『 - [Rによるモンテカルロ法入门の例3.5

python 「 - [Rによるモンテカルロ法入门」の练习问题3.4

python 练习问题3.1コーシー·ベイズ推定量をモンテカルロ积分で计算する

php ローカルのテスト环境かどうか判别

题解 AT25 プログラミングコンテスト

python ChainerのでCNN CIFAR-10の一般物体认识(テスト精度75%くらい)