import numpy as np import matplotlib.pyplot as plt n = 100 x = np.random.rand(n) y = np.random.rand(n) kyori = np.sqrt(x*x+y*y) m = np.sum(kyori <= 1) print('原点からの距離が1以内の点の数:',m) p = 4*m/n print('モンテカルロ法により計算されたπの近似値は',p) print('正しいπの値は',np.pi) plt.scatter(x,y) plt.grid(True) plt.show コード ```原点からの距離が1以内の点の数: 77 モンテカルロ法により計算されたπの近似値は 3.08 正しいπの値は 3.141592653589793 <function matplotlib.pyplot.show(*args, **kw)> このコードから 生成する点の数 n を1から 10,000 まで変化させ、各 n でモンテカルロ法により円周率の近似値を計算し、そ れと np.pi で得られる円周率の値の差を求めてリスト化し、下例のような折れ線グラフで表示したい。 ![イメージ説明](a57b54230830275207829eb0646f0a41.png)
import numpy as np
import matplotlib.pyplot as plt
n = 10000
U = []
for i in range(1,10001):
x = np.random.rand(i)
y = np.random.rand(i)
kyori = np.sqrt(xx+yy)
m = np.sum(kyori <= 1)
p = 4*m/i
U.append(p - np.pi)
plt.plot(U)
plt.title('Error/Number of points')
plt.xlabel('Number of points')
plt.ylabel('Error')
plt.grid(True)
plt.show
コード
![イメージ説明](393b6a17edf302ab22a4c7bce19c547e.png) (追記) 計算式を間違えていましたx*y+y*yをx*x+y*y
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/01 14:10
2020/11/01 14:14
2020/11/02 04:07
2020/11/02 04:14
2020/11/02 05:48
2020/11/03 01:43
2020/11/03 05:59
2020/11/03 06:02
2020/11/03 07:46
2020/11/03 09:28
2020/11/03 09:42
2020/11/03 09:55
2020/11/03 10:09