나는 파이썬에 대해 매우 익숙하며 다음 코드를 생성했지만 작동하지 않는다.화성에 접근중인 위성의 움직임을 시뮬레이트
이 코드는 화성에 접근하는 위성의 움직임을 변수 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()
이것은 직선 그래프를 그립니다 ... 아마도 물리학을 오해하지만 코드에 문제가 있습니까?
FYI - 뉴턴의 중력 법칙과 일부 기하학 법칙을 사용하여 가속 방정식을 계산했습니다. 저는 주로 코드의 문제에 대해 질문하고 있지만, 물리학 자의 물리학 문제가 있으면 물리 칠 문제가 있다는 것을 듣고 싶습니다.
나는 scipy이 없어? 즉, 궤도를 그릴 때 직선이어야합니다. 초기 속도를주지 않아 직선으로 떨어지게해야합니다. 'plot (t, y)'를 시도해 가속하고 있는지 확인하고 초기 'x'속도를 시도해보십시오. – tom10
함수 안에 t가 누락되지 않았습니까? – Martin
환호성 그렇습니다. 저는 이전에 너무 많은 숫자가 있다는 것을 깨달았습니다. 올바른 감사입니다. – tcrules