Mam projekt uniwersytecki, w którym jesteśmy proszeni o symulację satelitarnego podejścia do Marsa za pomocą ODE i funkcji odint SciPy.Błędy podczas rozwiązywania python ODE
Udaje mi się symulować to w 2D, tworząc ODE drugiej rzędu w dwóch ODE pierwszego rzędu. Jednak utknąłem w ograniczeniu czasowym, ponieważ mój kod używa jednostek SI, dlatego działa w ciągu kilku sekund, a granice obszaru Pythona nie symulują nawet jednej pełnej orbity.
Próbowałem konwertować zmienne i stałe na godziny i kilometry, ale teraz kod nadal podaje błędy.
Śledziłem tę metodę:
http://bulldog2.redlands.edu/facultyfolder/deweerd/tutorials/Tutorial-ODEs.pdf
I kod to:
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)
nie wiem jak skopiować/wkleić kod błędu z PyLab więc wziąłem PrintScreen błędu:
Drugi błąd przy t = linspace (0.01,24.0,100) i xinit = array ([0.001,5251]):
Jeśli ktoś ma jakieś sugestie, jak poprawić kod będę bardzo wdzięczny.
Dziękuję bardzo!
Będziesz musiał pokazać dokładny błąd, który otrzymujesz. – BrenBarn
Właśnie edytowałem oryginalny wpis. Dzięki! – user1937000
Czy to ważne, że deriv_x (xinit, 0) nie jest zdefiniowany. –