回答編集履歴

6

コード追加

2021/11/05 22:44

投稿

退会済みユーザー
test CHANGED
@@ -122,7 +122,9 @@
122
122
 
123
123
 
124
124
 
125
- 上記の結果は、標準正規分布の確率密度関数を-∞から+∞まで定積分(もとい、広義積分)した値は、確率密度関数の性質上、1 ですが、この1は、上記のコードで求めた、`F1(x)` によって、`a` を十分大きな正の数として
125
+ 上記の結果は、標準正規分布の確率密度関数を-∞から+∞まで定積分(もとい、広義積分)した値は、確率密度関数の性質上、1 ですが、この1は、上記のコードで求めた、`F1(x)` によって、`a` を十分大きな正の数いっても、上記の結果から、a=9 程度のことですが。)として
126
+
127
+
126
128
 
127
129
  ```
128
130
 

5

コード追加

2021/11/05 22:44

投稿

退会済みユーザー
test CHANGED
@@ -122,12 +122,12 @@
122
122
 
123
123
 
124
124
 
125
- 上記の結果は、標準正規分布の確率密度関数を-∞から+∞まで定積分もとい、広義積分した値は確率密度関数の性質上、1 でありそれは上記で求めた、F1(x) について、
125
+ 上記の結果は、標準正規分布の確率密度関数を-∞から+∞まで定積分もとい、広義積分した値は確率密度関数の性質上、1 ですがこの1上記のコードで求めた、`F1(x)`よって、`a` を十分大きな正の数として
126
126
 
127
127
  ```
128
128
 
129
- F1(+∞) - F1(-) = 0.5 - (-0.5) = 1
129
+ F1(a) - F1(-a) = 0.5 - (-0.5) = 1
130
130
 
131
131
  ```
132
132
 
133
- なることと合致しています。
133
+ と算出される結果に合致しています。

4

コード追加

2021/11/05 16:43

投稿

退会済みユーザー
test CHANGED
@@ -122,7 +122,7 @@
122
122
 
123
123
 
124
124
 
125
- 上記の結果は、標準正規分布の確率密度関数を-∞から+∞まで定積分した値は(理論上、) 1 であり、それは上記で求めた、F1(x) について、
125
+ 上記の結果は、標準正規分布の確率密度関数を-∞から+∞まで定積分、もとい、広義積分した値は(確率密度関数の性質上、)1 であり、それは上記で求めた、F1(x) について、
126
126
 
127
127
  ```
128
128
 

3

コード追加

2021/11/05 16:35

投稿

退会済みユーザー
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- コメントに対する回答です。コメントいただいてから調べましたが、[lambdify](https://docs.sympy.org/latest/modules/utilities/lambdify.html) というのを使うと、不定積分の結果を、pythonの関数として取り出せるようです。
13
+ コメントに対する回答です。コメントいただいてから調べましたが、[lambdify](https://docs.sympy.org/latest/modules/utilities/lambdify.html) というのを使うと、不定積分の結果を、pythonの関数いうか、callableオブジェクト)として取り出せるようです。
14
14
 
15
15
 
16
16
 

2

コード追加

2021/11/05 16:25

投稿

退会済みユーザー
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  ```python
18
18
 
19
- ffrom sympy import *
19
+ from sympy import *
20
20
 
21
21
 
22
22
 

1

コード追加

2021/11/05 16:13

投稿

退会済みユーザー
test CHANGED
@@ -3,3 +3,131 @@
3
3
 
4
4
 
5
5
  ![イメージ説明](d3a744200d9ecc95eb78282de926601a.png)
6
+
7
+
8
+
9
+ ### 追記
10
+
11
+
12
+
13
+ コメントに対する回答です。コメントいただいてから調べましたが、[lambdify](https://docs.sympy.org/latest/modules/utilities/lambdify.html) というのを使うと、不定積分の結果を、pythonの関数として取り出せるようです。
14
+
15
+
16
+
17
+ ```python
18
+
19
+ ffrom sympy import *
20
+
21
+
22
+
23
+ x = Symbol('x')
24
+
25
+ f = (1/sqrt(2*pi)) * exp(-(x**2 / 2)) # 標準正規分布の確率密度関数
26
+
27
+
28
+
29
+ F = integrate(f, x) # f の不定積分を求める
30
+
31
+ print(F) # => erf(sqrt(2)*x/2)/2
32
+
33
+ print()
34
+
35
+
36
+
37
+ F1 = lambdify(x, F) # Fをpythonの関数化したものを取得
38
+
39
+
40
+
41
+ # 検算のため、erf(sqrt(2)*x/2)/2 を scipy.erf と math.sqrt から求める関数を作る
42
+
43
+ from scipy.special import erf
44
+
45
+ import math
46
+
47
+
48
+
49
+ def F2(x):
50
+
51
+ u = (math.sqrt(2) / 2) * x
52
+
53
+ return erf(u) / 2
54
+
55
+
56
+
57
+
58
+
59
+ # F1(x) と F2(x) とが同じ結果を返すことの確認
60
+
61
+ print(F1(0), '/', F2(0))
62
+
63
+ print(F1(1), '/', F2(1))
64
+
65
+ print(F1(2), '/', F2(2))
66
+
67
+
68
+
69
+ # x=5 あたりから 0.5 に漸近する。
70
+
71
+ print(F1(5), '/', F2(5))
72
+
73
+ print(F1(6), '/', F2(6))
74
+
75
+ print(F1(7), '/', F2(7))
76
+
77
+ print(F1(8), '/', F2(8))
78
+
79
+ print(F1(9), '/', F2(9))
80
+
81
+ print(F1(10), '/', F2(10))
82
+
83
+ print(F1(100), '/', F2(100))
84
+
85
+
86
+
87
+ # F は奇関数なので、xの符号を変えると、結果もマイナスになる。
88
+
89
+ print(F1(-100), '/', F2(-100))
90
+
91
+ ```
92
+
93
+
94
+
95
+ > erf(sqrt(2)*x/2)/2
96
+
97
+
98
+
99
+ > 0.0 / 0.0
100
+
101
+ 0.3413447460685429 / 0.3413447460685429
102
+
103
+ 0.4772498680518208 / 0.4772498680518208
104
+
105
+ 0.49999971334842813 / 0.49999971334842813
106
+
107
+ 0.49999999901341236 / 0.49999999901341236
108
+
109
+ 0.4999999999987202 / 0.4999999999987202
110
+
111
+ 0.4999999999999994 / 0.4999999999999994
112
+
113
+ 0.5 / 0.5
114
+
115
+ 0.5 / 0.5
116
+
117
+ 0.5 / 0.5
118
+
119
+ -0.5 / -0.5
120
+
121
+
122
+
123
+
124
+
125
+ 上記の結果は、標準正規分布の確率密度関数を-∞から+∞まで定積分した値は(理論上、) 1 であり、それは上記で求めた、F1(x) について、
126
+
127
+ ```
128
+
129
+ F1(+∞) - F1(-∞) = 0.5 - (-0.5) = 1
130
+
131
+ ```
132
+
133
+ になることと合致しています。