2014-11-10 5 views
0

지구상의 위성처럼 다른 신체 주위에서 궤도 운동을 시뮬레이션하는 아주 간단한 프로그램을 작업 중입니다. 나는 책과 인터넷에서 사용할 수있는 지침과 방정식을 따라 갔지만 그 물체는 전혀 궤도를 그리는 것처럼 보이지 않습니다. 누군가가 할 수 있으면 친절하게 도와주세요. 미리 감사드립니다. 코드는Matlab에서 몸체 주위의 궤도 운동을 시뮬레이트하십시오.

v0=80; 
theta=45*pi/180; 

vx(1)=v0*cos(theta); 
vy(1)=v0*sin(theta); 
px(1)=0; 
py(1)=0; 

mass=100; %kg 
cmass=400; % mass of the body at 400,500 
    ax=0; 
% 
g=9.8 ;%m/s^2 
ay=-g; 

p2x=400; % x co-ordinate of the stationary body 
p2y=500; % y co-ordinate of the stationary body 

G=6.674*10^-11; % the Gravitational Constant 
figure(1) 
plotsize=800; 
i=1; 
dt=.1; 
t=0; 
while(t<20) 

%a2x=a2x-0.10; 
%a2y=a2y+0.50; 
r=sqrt((p2x-px(i))^2+(p2y-py(i))^2); % distance between the two bodies 
F=((G*mass*cmass)/r^2); % force by formula f=(G*m1*m2)/r^2 
a=-(1/cmass^2)*F; % acceleraion a=1/m1^2*F 

vx(i+1)=vx(i)+(ax)*dt; 
vy(i+1)=vy(i)+(ay)*dt; 

px(i+1)=px(i)+vx(i)*dt; 
py(i+1)=py(i)+vy(i)*dt; 

hold off 
plot(px(i+1),py(i+1),'o','MarkerSize',15) 

hold on 
plot(px,py,'r') 
plot(p2x,p2y); 
axis([0 plotsize 0 plotsize]) 
pause(.1) %pause for graphics 
i=i+1; 
t=t+dt; 

+0

http://stackoverflow.com/questions/26717775/animate-text-in-matlab – Rashid

+0

나는이 해결책을 보았습니다. 가장 큰 문제는 내 질량 1이 현재 질량 2의 중력에 있지 않다는 것입니다. 움직이고 있습니다. 힘이 가깝게되면 당김이 강해지고 질량 2는 질량 1을 끌어 당깁니다. – Hammadzafar

+2

일부 물리학이 혼합되어 있습니다. 두 개의 스크립트를 함께 조작 했습니까? 당신의 무게는 아주 작기 때문에 중력 매력이 약해질 것입니다. 그런 다음, 전체 장면을 지구 - 중력 내부에 배치하고 작은 입자를 "해고"하십시오. 줄거리는 사람의 크기 (100kg)를 지구의 땅에서 공기 중으로 쏘아 약 400kg의 작은 차 (400kg)를 향해 시속 약 180km로 공기 저항을 무시하면 어떤 일이 일어날지를 합리적으로 정확하게 보여줍니다 . 기본적으로 어떤 발사체와도 거의 차이가 없습니다. –

답변

0

임 로직이 꺼져 있는지 상당히 특정 이하입니다. 당신은 dt 단위로 시간 t, n 번 반복하고, 시간이 20 단위 (년?)에 도달 한 후에 중지하려고합니다. 반복하는 동안 t < 20 일 때, 매개 변수를 시간과 관련하여 적절하게 조정하려고합니다. 그래서 for 루프를 사용하고 while 루프의 조건부를 중첩 시켜서 t가 실제로 20 미만인지 확인해야한다고 생각합니다. 다른 말로하면, i = 1:20 동안, t < 20 일을하고 그렇지 않으면 정지합니다. 물건을하고있어!