2016-10-18 89 views
-2

我正在研究計算與軌道力學相關的不同事物的一個小程序,例如軌道的半長軸,速度等(在這個主題中沒有經驗需要回答這個問題)。精確的Python 2.7計算包括Pi

一切工作良好,直到我試圖以計算軌道週期(一式表示:其中,我不得不使用PI):

T =2π√一個 /μ(Click for image)

Ť時間,以秒一個半長軸,和μ標準引力帕ameter

現在,我的問題是,我的程序不會計算得非常精確,因爲公式的結果有點偏離;例如:在160公里高度的圓形軌道大約需要88分鐘,但我的程序告訴我大約90分37秒。

我的代碼:

#the standard gravitational parameter of the Earth 
gravPara = 3.986004418*10**14 

#the semi-major axis of the orbit (the radius of the Earth + the apoapsis and periapsis of your orbit/2) 
semiMajor = (bodyDia + ap + pe)/2 

#formula to calculate orbital period 
timeSeconds = (2 * math.pi) * math.sqrt(semiMajor**3/gravPara) 

#making the result appear as minutes and seconds instead of just seconds 
timeMinutes = 0 
while (timeSeconds > 60): 
    timeSeconds = timeSeconds - 60 
    timeMinutes = timeMinutes + 1 

#round the variable to store seconds 
round(timeSeconds, 0) 

#print the result 
print timeMinutes 
print timeSeconds 

所以我的問題是:這是一個錯誤在我的代碼,或者這樣的公式中一起使用時是math.pi不是很準確?我是否應該將其作爲浮點數存儲並使用浮點數,還是應該將計算分解爲多個部分?

如果你能幫助我解決這個問題,我將非常感激,因爲通過Python參考以及其他論壇搜索並沒有讓我走得很遠。

PS:當使用print math.pi時,它返回一個精確的Pi值,所以math.pi函數似乎正常工作。

+3

你可以包含用於計算'semiMajor'的代碼嗎? – brianpck

+0

此外,您可以將分鐘/秒計算替換爲'min,sec = timeSeconds // 60,timeSeconds%60' – brianpck

+2

並且您對半長軸使用了什麼值? –

回答

1

math.pi是15個小數浮點數:3.141592653589793

按chepners到你原來的職位,在計算領域的地球的大小時大約相當於一個原子的大小發表評論。

因此,要回答你的問題:它不是math.pi

0

好了 - 好像我已經找到了解決我的問題;在編輯我的問題以包括我對變量半主要的計算時,我意識到我忘記了圍繞bodyDia + ap + pe包括括號,這導致了錯誤的優先級排序,導致了不太精確的計算。

所以這只是我的代碼中的一個愚蠢的錯誤,並且通過添加兩個括號很容易解決。 感謝您抽出寶貴時間。