質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Q&A

1回答

696閲覧

数値積分で標準正規分布表を確かめたい

hinachi

総合スコア0

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

0グッド

0クリップ

投稿2020/10/22 08:34

前提・実現したいこと

標準正規分布に従う確率変数Zのについて, P(-1≤z≤1)≒0.683を数値積分を使って確かめたい。

発生している問題・エラーメッセージ

unsupported operand type(s) for ^: 'float' and 'float'

該当のソースコード

python3

1import numpy as np 2z=np.linspace(-1,1,21) 3f=(1/(2*np.pi)^(1/2))*np.exp(-(z*z)/2) 4print("z=",z) 5print("f=",f) 6dz=z[1]-z[0] 7sekibun=0.0 8N=len(z) 9print(N) 10for i in range(1,N): 11 sekibun+=f[i]*dz 12print(sekibun)

試したこと

np.piを3.14としたり, np.expを2.72**にしたりしました。

補足情報(FW/ツールのバージョンなど)

超初心者で分からないことだらけですがよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

^(1/2) は平方根をとることを意図しているのだと思いますが、Python を含めほとんどのプログラミング言語で ^ は累乗ではなく、排他的論理和 (XOR) を表す演算子です。累乗を表す演算子は ** です。

平方根を計算したい場合 z ** 0.5 もしくは np.sqrt(z) のようにする必要があります。

以下、その点を修正したコードで上積分、下積分の値を求めましたが、0.683 になりました。

python

1import numpy as np 2 3z = np.linspace(-1, 1, 10000) 4 5 6def f(z): 7 return 1 / np.sqrt(2 * np.pi) * np.exp(-(z ** 2) / 2) 8 9 10s_upper = 0 11s_lower = 0 12for z1, z2 in zip(z, z[1:]): 13 s_upper += max(f(z1), f(z2)) * (z2 - z1) # 上積分 14 s_lower += min(f(z1), f(z2)) * (z2 - z1) # 下積分 15print(s_upper) # 0.682720887974147 16print(s_lower) # 0.6826580930731004

投稿2020/10/22 08:48

編集2020/10/22 08:49
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問