私はpythonで働いて、同じ問題を抱えて、私はと思いますコンピュータ上の浮動小数点演算の精度は限定されています。多数の力を持っていても助けにはならない。 Pythonコードと結果を切り取って貼り付けます。このコードは、標準法線の最初の20分を計算しようとします。要するに、分布の高次モーメントを数値的に計算することは容易ではないと思います。ここでは「高次」とは10を超える意味です。別の実験では、より多くのサンプルを描画することで18日目に得られる分散を減らそうとしましたが、それは私の「普通の」コンピュータでは実用的ではありませんでした。
N = 1000000
w = np.random.normal(size=N).astype("float128")
for i in range(20):
print i, mean(w**i) # simply computing the mean of the data to the power of i
はあなたに与える:
0 1.0
1 0.000342014729693
2 1.00124397377
3 0.000140133725668
4 3.00334304532
5 0.00506625342217
6 15.0227401941
7 0.0238395446636
8 105.310071549
9 -0.803915389936
10 948.126995798
11 -34.8374820713
12 10370.6527554
13 -1013.23231638
14 132288.117911
15 -26403.9090218
16 1905267.02257
17 -658590.680295
18 30190439.4783
19 -16101299.7354
しかし、正しい瞬間があります:1、0、1、0、3、0、15、0、105、0、945、0、10395、0 、135135、0、2027025、0、34459425、0、654729075、
数値の不正確さの問題ではありません。高次モーメントの分散が爆発するからです。 –
しかし、ここでは、標準法線から数えてN個の乱数を与え、例えば、その18乗を計算してから、これの平均を計算します。この手順では、Nを大きくすると、18日目の真の値に近づくべきではないでしょうか? – Frank
はい、ただし、*ロット*を増やす必要があります。 –