2014-11-10 2 views
0

Im работает над очень простой программой для имитации орбитального движения тела вокруг другого тела, как спутник вокруг Земли. Я следил за рекомендациями и уравнениями, доступными в книгах и в Интернете, но объект, похоже, вообще не вращается. Пожалуйста, помогите мне, если кто-то сможет. Заранее спасибо. Код нижеМоделирование орбитального движения вокруг тела в 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

Здесь происходит некоторая смешаная физика. Вы объединили два сценария вместе? Ваши веса довольно малы, поэтому гравитационное притяжение будет слабым. Затем, кроме того, вы поместили всю сцену в гравитационную Землю и «уволили» меньшую частицу. Сюжет достаточно точно показывает, что произойдет, если вы выбросите что-то размером человека (100 кг) из земли на Землю в воздух со скоростью около 180 миль в час на что-то размером с небольшой автомобиль (400 кг), игнорируя сопротивление воздуха , В принципе, очень мало отличий от любого снаряда. –

ответ

0

Im вполне уверен, что ваша логика отключена. Вы хотите повторить время t, n количество шагов по шагам dt, а по истечении времени 20 единиц (лет?) Остановиться. Во время повтора, где t < 20, вы хотите соответствующим образом настроить свои параметры по времени. Поэтому я думаю, что вы должны использовать цикл for и вставлять свой условный код в цикле for, чтобы проверить, действительно ли t действительно меньше 20. Другими словами, для i = 1:20, тогда как t < 20 делайте что-нибудь, иначе остановитесь делать вещи!

Смежные вопросы