版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、太阳地球月亮运动轨迹MATLAB仿真程序太阳、地球、月亮运动轨迹MATLAB仿真程序该代码包含了地球绕太阳运动,月亮绕地球运动的MATLAB轨迹仿真程序,实 时显示地球、月亮的运动轨迹。有兴趣的朋友可以购买,以供交流。程序从第二页 开始。M 文件 1:draw_ball.m%画三维球体的函数% (x0,y0,z0)为球心% r为球半径function draw_ball(x0, y0, z0, r) x1, y1, z1=sphere;x = x1*r + x0;y = y1*r + y0;z = z1*r + z0;surf(x,y,z);M 文件 2:draw_circle.m%画二维圆形
2、% (x0,y0)为圆心% r为圆半径function draw_circle(x0, y0, r) theta = 0:pi/100:2*pi;x = r*cos(theta)+x0;y = r*sin(theta)+y0;plot(x,y,,-r,);M文件3:RungeKutta_EarthSun.m %四阶Runge-kutta法解地日微分方程function yh = RungeKutta_EarthSun(w, h)oldy = w;k1 = dery(oldy);midy = oldy + k1*h/2;k2 = dery(midy);midy = oldy + k2*h/2;k
3、3 = dery(midy);midy = oldy + k3*h;k4 = dery(midy);yh = oldy + (k1 + 2*k2 + 2*k3 + k4)*h/6;%地日微分方程组function dy = dery(w)G = 6.674e-11; Ms = 1.989e30; miu_s = G * Ms; r2 = w(4)2+w(5)2;dy(1) = 1;dy(2) = (-1)*miu_s*w(4)/r21.5; dy(3) = (-1)*miu_s*w(5)/r21.5; dy(4) = w(2);dy(5) = w(3);M 文件 4:RungeKutta_Mo
4、onEarth.m % 四阶 Runge-kutta 法解地月微分方程 function yh = RungeKutta_MoonEarth(w, h) oldy = w;k1 = dery(oldy);midy = oldy + k1*h/2;k2 = dery(midy);midy = oldy + k2*h/2;k3 = dery(midy);midy = oldy + k3*h;k4 = dery(midy);yh = oldy + (k1 + 2*k2 + 2*k3 + k4)*h/6;%地月微分方程组function dy = dery(w)G = 6.674e-11; Me =
5、5.972e24; miu_e = G * Me; r2 = w(4)”2+w(5)”2;dy(1) = 1;dy(2) = (-1)*miu_e*w(4)/r21.5; dy(3) = (-1)*miu_e*w(5)/r21.5; dy(4) = w(2);dy(5) = w(3);M 文件 5:sun_earth_moon.m%地月日全运动动态仿真程序clc; clear all; close all;G = 6.674e-11;% 引力常数Ms = 1.989e30; Rs = 696300e3;% 太阳的质量和半径Me = 5.972e24; Re = 6378e3;%地球的质量和半径
6、Mm = 7.348e22; Rm = 3678e3;%月球的质量和半径sim_time = 3600*24*375;% 总仿真时间,375 天,即约 1 年 h = 3600*24;%仿真步长,24小时,即1天w_e = 0 0 29535.6 1.52171522e11 0;% 地球相对太阳的初始位置 w_m =w_e(1) 0 990.32 405500e3 0;%月球相对地球的初始位置i = 1;%用于记录解算的步数while w_e(1) = sim_time%解算地球相对于太阳的轨迹trajectory_earth2sun(:, i) =w_e;% trajectory_earth
7、2sun 存储地球相对 于太阳的轨迹数据ye = RungeKutta_EarthSun(w_e, h);% 4 阶 Runge-kutta 法解算地日微分方程w_e = ye;%用于Runge-kutta法解算微分方程的初值i = i+1;%解算一步则在步数上+1endi = 1;%用于记录解算的步数while w_m(1) = sim_time%解算月球相对于地球的轨迹trajectory_moon2earth (:, i) = w_m;% trajectory_moon2earth 存储月 球相 对于地球的轨迹数据ym = RungeKutta_MoonEarth(w_m, h);% 4
8、 阶 Runge-kutta 法解算地月微分方 程w_m = ym;% 同上i = i+1;% 同上end%计算月球相对于太阳的轨迹,trajectory_moon2sun存储月球相对于太阳的轨迹数据 trajectory_moon2sun(1,:) = trajectory_moon2earth(4,:) + trajectory_earth2sun(4,:);trajectory_moon2sun(2,:) = trajectory_moon2earth(5,:) +trajectory_earth2sun(5,:);size_enlge = 40;%放大系数,用于放大太阳、地球、月球的半
9、径,以便视觉 观测figure;% /01/画出地日三维动态轨迹draw_ball(0, 0, 0, Rs*size_enlge); hold on;% 画太阳的三维模型title(地日-动态轨迹);xlabel(x/m);ylabel(y/m);zlabel(z/m);grid on;plot(trajectory_earth2sun(4, :), trajectory_earth2sun(5, :), -r);%画地球相对于太阳的轨迹线axis equal;draw_ball(trajectory_earth2sun(4, 1), trajectory_earth2sun(5, 1), 0
10、,Re*size_enlge2);%初始位置的地球三维模型draw_ball(trajectory_earth2sun(4, j), trajectory_earth2sun(5, j), 0,Re*size_enlge2);%轨迹点上的地球三维模型pause(0.001);hold off;endfigure;% /02/画出地月三维动态轨迹for j=1:i-1draw_ball(0, 0, 0, Re*size_enlge/4); hold on;% 画地球的三维模型title(地月-动态轨迹);xlabel(x/m);ylabel(y/m);zlabel(z/m);grid on;pl
11、ot(trajectory_moon2earth(4, :), trajectory_moon2earth(5,:),-r);%画月球相对于地球的轨迹线axis equal;draw_ball(trajectory_moon2earth(4, 1), trajectory_moon2earth(5, 1),0, Rm*size_enlge/4);%初始位置的月球三维模型draw_ball(trajectory_moon2earth(4, j), trajectory_moon2earth(5, j),0, Rm*size_enlge/4);%轨迹点上的月球三维模型pause(0.001);ho
12、ld off;endfigure;% /03/画出地月曰三维动态轨迹for j=1:i-1draw_ball(0, 0, 0, Rs*size_enlge); hold on;% 画太阳的三维模型title(地月日-动态轨迹);xlabel(x/m);ylabel(y/m);zlabel(z/m);grid on;plot(trajectory_earth2sun(4, :), trajectory_earth2sun(5, :), -r);% 画地球相对于太阳的轨迹线plot(trajectory_moon2sun(1, :), trajectory_moon2sun(2, :), -b);
13、%画月球相对于太阳的轨迹线axis equal;draw_ball(trajectory_earth2sun(4, 1), trajectory_earth2sun(5, 1), 0,Re*size_enlge/2);% 初始位置的地球三维模型draw_ball(trajectory_moon2sun(1, 1), trajectory_moon2sun(2, 1), 0,Rm*size_enlge/2);%初始位置的月球三维模型draw_ball(trajectory_earth2sun(4, j), trajectory_earth2sun(5, j), 0, Re*size_enlge/
14、2);% 轨迹点上的地球三维模型draw_ball(trajectory_moon2sun(1, j), trajectory_moon2sun(2, j), 0, Rm*size_enlge/2);% 轨迹点上的月球三维模型pause(0.001);hold off;end%放大地月之间的相对位置,以便三维视觉显示size_up = 15;%放大倍数,用于放大地月之间的相对位置% trajectory_moon2earth_up存储放大后的月球到地球的位置数据trajectory_moon2earth_up(1,:) = size_up* (trajectory_moon2sun(1,:)-
15、 trajectory_earth2sun(4,:);trajectory_moon2earth_up(2,:) = size_up* (trajectory_moon2sun(2,:)- trajectory_earth2sun(5,:);% trajectory_moon2sun_up存储放大后的月球相对于太阳的轨迹数据trajectory_moon2sun_up(1,:)=(trajectory_earth2sun(4,:)+trajectory_moon2earth_up(1,:);trajectory_moon2sun_up(2,:)=(trajectory_earth2sun(5,
16、:)+trajectory_moon2earth_up(2,:);figure;% /04/画出放大后的地月日三维动态轨迹for j=1:i-1draw_ball(0, 0, 0, Rs*size_enlge); hold on;% 画太阳的三维模型title(地月日-动态轨迹(放大);xlabel(x/m);ylabel(y/m);zlabel(z/m); grid on;plot(trajectory_earth2sun(4, :), trajectory_earth2sun(5, :), -r);%画地球相对于太阳的轨迹线plot(trajectory_moon2sun_up(1, :)
17、, trajectory_moon2sun_up(2,:),-b);%画月球相对于太阳的轨迹线axis equal;draw_ball(trajectory_earth2sun(4, 1), trajectory_earth2sun(5, 1), 0,Re*size_enlge*10);%初始位置的地球三维模型draw_ball(trajectory_moon2sun_up(1, 1), trajectory_moon2sun_up(2, 1),0, Rm*size_enlge*10);%初始位置的月球三维模型draw_ball(trajectory_earth2sun(4, j), traj
18、ectory_earth2sun(5, j), 0,Re*size_enlge*10);% 轨迹点上的地球三维模型draw_ball(trajectory_moon2sun_up(1, j), trajectory_moon2sun_up(2, j),0,Rm*size_enlge*10);%轨迹点上的月球三维模型pause(0.001);hold off;endfigure;% /05/画出地月日真实的二维动态轨迹draw_circle(0, 0, Rs*5); hold on;% 画太阳的二维模型title(地月日二维真实轨迹);xlabel(x/m);ylabel(y/m);zlabel
19、(z/m); grid on;plot(trajectory_earth2sun(4, :), trajectory_earth2sun(5, :), -r);% 画地球相对于太阳的轨迹线plot(trajectory_moon2sun(1, :), trajectory_moon2sun(2, :), -b);% 画月球相对于太阳的轨迹线axis equal;plot(trajectory_earth2sun(4, j), trajectory_earth2sun(5, j), r*);% 轨迹点上的地球点plot(trajectory_moon2sun(1, j), trajectory_
20、moon2sun(2, j), k*);% 轨迹点上的月球点pause(0.001);hold off;endfigure;% /06/画出地月日放大的二维动态轨迹for j=1:i-1draw_circle(0, 0, Rs*5); hold on;% 画太阳的二维模型title(地月日二维放大轨迹);xlabel(x/m);ylabel(y/m);zlabel(z/m); grid on;plot(trajectory_earth2sun(4, :), trajectory_earth2sun(5, :), -r);% 画地球相对于太阳的轨迹线plot(trajectory_moon2su
21、n_up(1, :), trajectory_moon2sun_up(2,:),- b);%画月球相对于太阳的轨迹线plot(trajectory_earth2sun(4, j), trajectory_earth2sun(5, j), r*);% 轨迹点上的地球点plot(trajectory_moon2sun_up(1, j), trajectory_moon2sun_up(2, j),k*);%轨迹点上的月球点pause(0.001);hold off;endM文件6:sun_earth_moon_2Dsingle.m %地月曰全运动动态仿真程序 clc;clear all;close
22、all;G = 6.674e-11;Ms = 1.989e30;Rs = 696300e3;Me = 5.972e24;Re = 6378e3;Mm = 7.348e22;Rm = 3678e3;sim_time = 3600*24*375*3;h = 3600*24;i = 1;w_e = 0 0 29535.6 1.52171522e11 0;w_m = w_e(1) 0 990.32 405500e3 0;while w_e(1) = sim_time trajectory_earth2sun(:, i) = w_e;ye = RungeKutta_EarthSun(w_e, h);w_
23、e = ye;i = i+1;endwhile w_m(1) = sim_timetrajectory_moon2earth(:, i) = w_m;ym = RungeKutta_MoonEarth(w_m, h);w_m = ym;i = i+1;endtrajectory_moon2sun(1,:) = trajectory_moon2earth(4,:) +trajectory_earth2sun(4,:); trajectory_moon2sun(2,:)=trajectory_moon2earth(5,:) + trajectory_earth2sun(5,:); size_enlge = 40; size_up = 15;traje
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮阴师范学院《统计计算与软件》2023-2024学年第一学期期末试卷
- 淮阴师范学院《名师成长案例研究》2022-2023学年第一学期期末试卷
- 淮阴师范学院《灾害地理学》2022-2023学年第一学期期末试卷
- 黑便课件教学课件
- 淮阴师范学院《测量与地图学》2022-2023学年第一学期期末试卷
- 淮阴工学院《制药过程安全与环保》2023-2024学年第一学期期末试卷
- 淮阴工学院《信号与系统》2021-2022学年第一学期期末试卷
- 围术期肺部超声的应用
- 生物识别系统的比较和对比考核试卷
- 仪器仪表制造业企业文化建设考核试卷
- 陕煤集团笔试题库及答案
- 33 《鱼我所欲也》对比阅读-2024-2025中考语文文言文阅读专项训练(含答案)
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
- (高清版)TDT 1075-2023 光伏发电站工程项目用地控制指标
- 《中华民族共同体概论》考试复习题库(含答案)
- 2022-2023学年武汉市江岸区七年级英语上学期期中质量检测卷附答案
- 小班综合活动《出生的秘密》
- 制程品质保证权责及工作重点
- 运用思维导图优化初中数学课堂的实践与探究
- 中考物理专题21 欧姆定律的动态电路计算(原卷版)
- 2022年2022年北京市各区中考英语一模试卷分类汇编完形填空专题
评论
0/150
提交评论