モンテカルロ法を使用して、jupyterノートブックのpython3環境で球の体積を見つける必要があります。しかし、私の講師のコードのメソッドの例は意味をなさないようです。
モンテカルロ法を使用して単位正方形内の円を使用して円周率を見つける講師のコードを変更するように指示されました。ただし、コードを実行すると、piの値が0.04になり、小さすぎます。球の体積を見つけるためにそれを適応させる方法を知っていますが、やはり私が得る答えは小さすぎます。以下は講師のコードです。
import numpy as np
n = 100
x = np.random.random(n)
y = np.random.random(n)
z = np.sqrt(x**2 + y**2)
ninside = len( np.where(z < 1.) )
pi = 1.*ninside/n * 4.
print(pi)
コードを実行して印刷するとpi
、0.04
明らかに正しくないことがわかり3.14
ます。おおよそのはずです。このコードはどのように機能し、モンテカルロ法を使用して球の体積を見つけるにはどうすればよいですか?
交換
ninside = len( np.where(z < 1.) )
と
ninside = len( np.where(z < 1.)[0] )
np.where()
タプルを返すため、長さを取得する前にタプルから配列を取り出す必要があります。
このようなものをデバッグするときは、インタープリターで1行ずつ実行し、すべての新しい変数の値を確認することをお勧めします。
このようにしてlen(np.where(z < 1.))
、常に1であることがわかりました。次に、の値を調べたnp.where(z < 1.)
ところ、配列が内部にあるタプルであることがわかりました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加