我對Python非常陌生,並且已經生成了下面的代碼,但它不起作用。模擬接近火星的衛星的運動
該代碼試圖將接近火星的衛星的運動映射到變量y
和x
距離(即2維空間)。目前,火星被認爲是靜止的。
import scipy as sp
import numpy as np
import pylab as pl
import scipy.integrate as spi
G=6.67*(10**-11)
mm=6.4*(10**23)
#^mm is the mass of mars and G is the gravitational constant
def f(b,t):
xx=b[0]
vx=b[1]
yy=b[2]
vy=b[3]
ax=-(G*mm*b[0])/((b[0]**2) + (b[2]**2))**1.5
ay=-(G*mm*b[2])/((b[0]**2) + (b[2]**2))**1.5
return [vx,ax,vy,ay]
t=sp.linspace(0.,10000000.,1000)
xx0=[800000., 0., 10000, 0]
soln=spi.odeint(f,xx0,t)
print soln
x=soln[:,0]
v1=soln[:,1]
y=soln[:,2]
v2=soln[:,3]
pl.figure(1)
pl.plot(x,y)
pl.xlabel("x displacement")
pl.ylabel("y displacement")
pl.show()
這繪製了一條直線圖...也許我誤解了物理,但是有沒有代碼的問題?
僅供參考 - 我已經使用牛頓萬有引力定律和一些幾何定律計算了加速度方程。我主要問的是代碼中的問題,但是如果有物理學家注意到物理學中的任何問題,那麼我很樂意聽到他們的聲音!
我沒有SciPy的,所以我不能運行的代碼,但你...你確定它不工作?也就是說,你繪製了軌跡,它應該是一條直線,因爲你不給它初始速度,所以它直線下降?嘗試'plot(t,y)'看看它是否在加速,並嘗試給出一個初始的'x'速度。 – tom10
你是不是缺少函數內部? – Martin
歡呼聲是的,我剛剛意識到,更早的數字,這是正確的謝謝。 – tcrules