2015-09-04 99 views
0

我正在嘗試做一個方程來計算一個星球的同步軌道。我在wiki上找到了一個公式,並試圖在C#中複製該公式,但結果完全不正確。計算同步軌道

等式:
KSP equation

一個是從行星
ģ高度是萬有引力常數6.674E-11
中號是地球的質量
t是軌道週期(以秒)
盧比是地球的半徑

代碼:

double G = 6.674E-11; 
syncOrbit = Math.Pow((G * b.Mass * Math.Pow(b.orbit.period, 2.0))/(4 * Math.Pow(Math.PI, 2.0)), 1.0/3.0) - b.Radius; 

輸入:

  • b.Mass = 5.29157926281091E +22 kg
  • b.orbit.period = 9203545個小號
  • b.Radius = 60萬米

通緝的結果:2868.74公里

定的結果:195814.71公里

難道我代碼中出現錯誤還是隻有一個不正確的等式(來自wiki)?

+0

看起來你在你的實現中有一個額外的'Math.Sqrt' .... – Buddy

+0

extra?我需要那個平方根,還是我? –

+0

'Math.Pow(x,1.0/3.0)'已經在做立方根了。 – Buddy

回答

0

我發現我的錯誤,我使用了錯誤的軌道週期。我用了一個圍繞太陽的軌道(1年),而我需要星球的側向旋轉週期(1天)來獲得正確的結果。

double G = 6.674E-11; 
syncOrbit = Math.Pow((G * b.Mass * Math.Pow(b.rotationPeriod, 2.0))/(4 * Math.Pow(Math.PI, 2.0)), 1.0/3.0) - b.Radius; 
0
double inner = G * b.Mass * Math.Pow(b.orbit.period, 2.0)/ (4* Math.PI * Math.PI); 
double answer = Math.Pow(inner, 1.0/3.0) - b.Radius; 
+0

結果仍然關閉 –

+0

@ArnePeirs你如何得到預期的結果?獲得一個計算器並輸入這些值,您將獲得該程序返回的值 –

0

所以我的猜測是,你誤會方程。我不是物理學家,但公式似乎是計算兩個軌道物體之間的平均距離。使用公式並將代碼重構爲程序,我得到以下內容,它使用太陽和地球的值生成正確的答案。

const double G = 6.674E-11; 
Console.WriteLine("G is {0}", G); 

const double massOfEarth = 5.972E+24; 
const double massOfSun = 1.989E+30; 
const double mass = massOfSun + massOfEarth; 
Console.WriteLine("mass is {0}", mass); 

// 365 days in seconds 
const double period = 3.15569E+7; 
Console.WriteLine("period is {0}", period); 

// radius of the earth 
const double radius = 6.371E+6; 
Console.WriteLine("radius is {0}", radius); 

double denominator = 4 * Math.Pow(Math.PI, 2.0); 
Console.WriteLine("Denominator is {0}", denominator); 

double numerator = G * mass * Math.Pow(period, 2.0); 
Console.WriteLine("numerator is {0}", numerator); 

double fraction = numerator/denominator; 
Console.WriteLine("fraction is {0}", fraction); 

double root = Math.Pow(fraction, 1.0/3.0); 
Console.WriteLine("root is {0}", root); 

double result = root - radius; 
Console.WriteLine("final result is {0}", result); 

輸出是:

G is 6.674E-11 
mass is 1.989005972E+30 
period is 31556900 
radius is 6371000 
Denominator is 39.4784176043574 
numerator is 1.32193760361067E+35 
fraction is 3.34850706747872E+33 
root is 149606480630.306 
final result is 149600109630.306 

當太陽和地球之間的平均距離爲149.6十億米。