matlab行星运动轨迹仿真动画,MATLAB行星运动仿真程序.docx

MATLAB行星运动仿真程序.docx

clear all;close all;G=6.67*10^-11;% The universal gravitational constantm = [1.989e30,3.5844e23,4.89868e24,5.974e24,6.5714e23,1.89854e27,5.68725e26,8.72204e25,1.02753e26];% An array of massesn = length(m); Number_of_planets = n% The number of massesx_p = [0,58340100000,1.07705e11,1.4959e11,2.27377e11,7.77868e11,1.42709e12,2.87512e12,4.49668e12];% An array of x positionsy_p= [0,0,0,0,0,0,0,0,0];% An array of y positionsx_v = [0,0,0,0,0,0,0,0,0];% An array of x velocitiesy_v = [0,47856.46,34961.72,29780,23883.56,12924.52,9618.94,6789.84,5419.96];% An array of y velocitiesT= 365*24*60*60;%(2*pi*G*m(1))/(x_v(1)^3);dt=360*60*60*10;colordef black;ph = plot(x_p,y_p,'.','MarkerSize',30);xlabel('distance(km)');ylabel('distance(km)');title('Planetary motion');for a=0:dt:1000*T%loop for all masses with respect to timefor k=1:n%loop for individual masses calculating neccessary quantitiesdx = x_p - x_p(k);% difference in x positionsdy = y_p - y_p(k);% difference in y positionsmag = (dx.^2 + dy.^2).^0.5;% magnitude of the distance between the 2 massesf = ((G*m(k)*m)./(mag.^2));% total forcefx_old =(f.*dx./mag);fx_old(k)= 0;fx = sum (fx_old);%Summing the total force in x direction for each planetfy_old =(f.*dy./mag);fy_old(k)= 0;fy = sum (fy_old);%Summing the total force in y direction for each planeta_x = fx/m(k);% calculating acceleration change in x directiona_y = fy/m(k);% calculating acceleration change in y directionx_v(k) = x_v(k) + dt*a_x;% calculating velocity change in x directiony_v(k) = y_v(k) + dt*a_y;% calculating velocity change in y directionx_p_new(k)= x_p(k)+dt*x_v(k);% calculating new x positionsy_p_new(k)= y_p(k)+dt*y_v(k);% calculating new y positionsendx_p=x_p_new;y_p=y_p_new;% overwriting old positions with new positionspause(0.1)plot(x_p,y_p,'.','MarkerSize',30)axis([-(10^15) 10^15 -(10^15) 10^15])xlabel('distance(km)');ylabel('distance(km)');title('Planetary motion');drawn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值