如何提供提供额外的加速度在特定时间吗?

1视图(30天)
我试图让我的木星卫星,我想提供一个额外的加速度(提高)当一个特定的时间。我知道我将需要使用一个if语句,但我会如何提供推力在一定时间,然后恢复,回到我原来的运动方程?我想玩一定时间值,应用推力看到当我可以接近木星的卫星。
如果我使用类似t >某个值,我会需要创建另一个for循环,以便其他加速度的值/速度/位置仍在计算?所以我需要整个数值计算重复很短时间,我计划发射的引擎?然后我回到如何计算加速度没有涉及的提升吗?
我的想法:
这之后我a3计算:
如果tc > = & & tc值< =一些价值
a3 (:, i) = a3(:,我)+提高;
其他的
现在,将这个应用提高一次,然后继续循环计算其他值?或者将它困在if语句?
我的代码:
清晰的所有;
关闭所有;
clc
= 1.98892 e30女士;%(公斤)太阳的质量
mp1 = 6.42 e24;%(公斤)地球的质量
mp2 = 2 e28;%(公斤)的质量超级木星
msat = 10000;%(公斤)的质量调查
dt = 2500;% [s]时间步
n = 10080;% = 30年的时间步数
ti = 0;% [s]初始时间
tf = ti + (n - 1) * dt;% [s]最后一次
徐= 2.992 e8;%(公里)x轴上限
xl =许;%(公里)x轴下限
yu = 2.992 e8;%(公里)y轴上限
yl =于;%(公里)y轴下限
限制= (xl徐yu yl);%预定义了轴的极限图的数组被称为后
%初始条件,位置(公里)的速度在(公里/秒)
pip1 = [1.5 e8;0);%初始位置向量行星1(地球)
vip1 = [0;29.75);%初始速度矢量行星1(地球)
pip2 = [0;7.788 e8);%初始位置向量星球2(木星)
vip2 = (-13.07;0);%初始速度矢量星球2(木星)
psun = (0, 0);%初始位置的太阳
psat1 = [1.5 e8 + 384400;0);%的初始轨道探测器
vsat1 = [0;29.75 + 1);%初始速度的调查
提高= [4;30]%提高向量
%预先确定数组
t = linspace(钛、tf、n);%的时间数组
pp1 = 0 (2 n);%数组地球行星的位置
vp1 = 0 (2 n);%的速度地球等行星数组
a1 = 0 (2 n);%加速地球等行星数组
pp2 = 0 (2 n);%数组木星行星的位置
vp2 = 0 (2 n);%速度木星的行星数组
a2 = 0 (2 n);%加速度木星的行星数组
很少出现= 0 (2 n);%探针阵列的位置
vp3 = 0 (2 n);%的速度探针阵列
a3 = 0 (2 n);%探针阵列的加速度
%设置初始条件等于第一个值数组
pp1 (: 1) = pip1;%设置数组的第一行相当于地球的初始位置向量1
vp1 (: 1) = vip1;%设置数组的第一行相当于地球的初始速度向量1
pp2 (: 1) = pip2;%设置数组的第一行相当于地球的初始位置向量2
vp2 (: 1) = vip2;%设置数组的第一行相当于地球的初始速度向量2
项目:1)= psat1;%设置数组的第一行等于初正电子vectory的调查
vp3 (: 1) = vsat1;%设置第一行数组等于初始速度向量的调查
i = 1: n
a1 (:, i) = grava (pp1(:,我),psun (: 1), Ms) + grava (pp1(:,我),pp2(:,我),mp2);%计算加速度在地球上
a2 (:, i) = grava (pp2(:,我),psun (: 1), Ms) + grava (pp2(:,我),pp1(:,我),mp1);%计算加速度木星上
a3 (:, i) = grava(项目(:,我),pp1(:,我),mp1) + grava(项目(:,我),pp2(:,我),mp2) + grava(项目(:,我),psun (: 1), Ms);% caluclates加速探测器由于太阳/地球和木星的力量
vp1 (:, i + 1) =(:,我)+ vp1 a1(:,我)* dt;%计算地球的速度
vp2 (:, i + 1) = vp2(:,我)+ a2(:,我)* dt;%计算速度ofjupiter
vp3 (:, i + 1) = vp3(:,我)+ a3(:,我)* dt;
pp1 (:, i + 1) = pp1(:,我)+ (:,i + 1) * vp1 dt;使用Euler-cromer %计算地球的位置
pp2 (:, i + 1) = pp2(:,我)+ vp2 dt (:, i + 1) *;%计算使用euler-cromer木星的位置
项目:,i + 1) =项目(:,我)+ vp3 dt (:, i + 1) *;
tc (i + 1) = t(我)+ dt;
结束
%创建图
轴((xl徐yl yu))%设置限制轴(2 au)
情节(pp1 (1:), pp1 (2:)“r”)%情节路径的地球(x, y)
持有;%以上持有到阴谋
情节(pp2 (1:), pp2 (2:)“b”)%情节的木星(x, y)
持有;%以上持有到阴谋
情节(0,0,‘*’)%的阴谋一个点代表太阳
持有;%以上持有到阴谋
情节(项目1:),项目(2:)“o”)%探针情节
持有;
包含(“X(公里))% x轴的标签
ylabel (“Y”(公里))%标记y轴
传奇(“地球”,“木星”,“太阳”,“调查”);%添加了一个传奇
标题(地球的轨道/木星探测器对太阳的)%给图标题
我的函数:
函数一个= grava (p, p0, M)
G = 6.673 e-11 / (1000 ^ 3);%除以1000 ^ 3为使用单位(公里
R = p - p0;
= R - g * M * /(和(R . * R) ^ (3/2));
返回

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2015年12月13日
编写代码总是有一个推力在每个时间步,这样你只有一个版本的运动方程。但推力值可以是一个时间的函数,也可以是一个数组索引数步的时候,你会使用(0,0,0)的部分没有推力。一个向量的值,因为推力是立体定向。(如果你的推力是相对于固定位置的航天器和工艺纺纱然后你将需要额外的参数改变的参照系)
如果你计划在大气阻力的代码,你也可以包括,通过函数可以返回的位置和速度(0,0,0)。
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2015年12月13日
time_array = linspace (0 last_time number_of_points);
Boost_magnitude = 0(大小(time_array));
Boost_magnitude (time_array > = boost_start_time & time_array < = boost_end_time) =推力;
级之间,决定你将如何移动向量和x / y / z组件。

登录置评。

更多的答案(0)

类别

找到更多的在地球和行星科学帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!