簡體   English   中英

如何使用蒙特卡羅方法在python中找到球體的體積?

[英]How to use Monte Carlo method to find the volume of a sphere in python?

我需要使用蒙特卡羅方法在jupyter筆記本中的python3環境中查找球體的體積。 但是我的講師代碼中的方法示例似乎沒有意義。

我被指示修改我的講師的代碼,該代碼使用monte carlo方法在單位正方形中使用圓圈找到pi; 但是當我運行他們的代碼時,我得到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()返回一個元組,因此你需要在獲取長度之前將數組從元組中取出。

在調試這樣的東西時,我建議在解釋器中逐行運行它並檢查每個新變量的值。

這就是我發現len(np.where(z < 1.))總是為1的情況,然后我查看了np.where(z < 1.) ,發現它是一個元組里面有一個數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM