python 重点关数を変えたときの收束性の検证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 重点关数を変えたときの收束性の検证相关的知识,希望对你有一定的参考价值。

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

# さまざまな平均・標準偏差を持つ正規分布を重点関数gとみなして
# 収束速度がどのように変わるか調査

a = 5.0

norms = [(0,1), (5,1), (10,1), (0,3), (5,3), (10,3)]

# 被積分関数
f = norm.pdf
h = lambda x: x > a
y = lambda x: h(x) * f(x)

# 被積分関数を描画
ix = np.arange(-5, 15, 0.01)
plt.plot(ix, f(ix), label="f(x)")
plt.plot(ix, h(ix), label="h(x)")

for m, std in norms:
    g = norm(loc=m, scale=std).pdf
    plt.plot(ix, g(ix), label="mean=%d std=%d" % (m, std))

plt.xlim((-5, 15))
plt.ylim((0, 2))
plt.legend(loc="best")
plt.show()

# scipy.integrateでの積分
I = scipy.integrate.quad(y, -np.inf, np.inf)[0]
print "scipy.integrate:", I

N = 2000

# 重点サンプリングの場合
base_loc = 231
plt.figure(figsize=(10, 6))
for m, std in norms:
    plt.subplot(base_loc)
    g = norm(loc=m, scale=std).pdf
    x = norm(loc=m, scale=std).rvs(size=N)
    x = f(x) / g(x) * h(x)
    estint = np.cumsum(x) / np.arange(1, N + 1)
    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.axhline(y=I)
    plt.ylim((0, 1e-06))
    plt.title("mean:%d std:%d" % (m, std))
    base_loc += 1
plt.tight_layout()
plt.show()

以上是关于python 重点关数を変えたときの收束性の検证的主要内容,如果未能解决你的问题,请参考以下文章

markdown サーバー上でTMUXが二重になったときの対处法

markdown 服务を通知とともに开始したときの通知を更新する

html 安卓の铬で表示したときのタブの色を设定する。

python pd.concatしたときに索引の情报が消えていないデータフレームと消えたデータフレームをconcするので生じるnp.nanが现れるスクリプト

text Windows 7の検证环境を构筑する

python スクロールが変更されたときに,一番一番右に移动する