私は、ODEとSciPyの常微分方程式関数を使用して火星への衛星アプローチをシミュレートするように依頼された大学のプロジェクトを持っています。
2次のODEを2つの1次のODEにすることで、2Dでシミュレートすることができます。ただし、コードがSI単位を使用しているため、数秒で実行され、Pythonのlinspace制限は、1つの完全な軌道をシミュレートすらしないため、時間制限にとらわれています。
変数と定数を時間とキロメートルに変換しようとしましたが、コードでエラーが発生し続けます。
私はこの方法に従いました:
http://bulldog2.redlands.edu/facultyfolder/deweerd/tutorials/Tutorial-ODEs.pdf
そして、コードは次のとおりです。
import numpy
import scipy
from scipy.integrate import odeint
def deriv_x(x,t):
return array([ x[1], -55.3E10/(x[0])**2 ]) #55.3E10 is the value for G*M in km and hours
xinit = array([0,5251]) # this is the velocity for an orbit of period 24 hours
t=linspace(0,24.0,100)
x=odeint(deriv_x, xinit, t)
def deriv_y(y,t):
return array([ y[1], -55.3E10/(y[0])**2 ])
yinit = array([20056,0]) # this is the radius for an orbit of period 24 hours
t=linspace(0,24.0,100)
y=odeint(deriv_y, yinit, t)
PyLabからエラーコードをコピーして貼り付ける方法がわからないため、エラーのPrintScreenを取得しました。
t = linspace(0.01,24.0,100)およびxinit = array([0.001,5251])の2番目のエラー:
誰かがコードを改善する方法について何か提案があれば、私は非常に感謝します。
どうもありがとうございます!