フィルターのクリア

Modeling speed and height of a toy rocket using while loops

2 ビュー (過去 30 日間)
Gabrielle Bartolome
Gabrielle Bartolome 2020 年 9 月 28 日
編集済み: Stephen23 2020 年 10 月 26 日
.
  2 件のコメント
Stephen23
Stephen23 2020 年 10 月 26 日
Original question by Gabrielle Bartolome retrieved from Google Cache:
Modeling speed and height of a toy rocket using while loops
The flight of a model rocket of mass 0.05 kg can be modelled as follows. During the first 0.15 s the rocket is propelled up by the rocket engine with a force of 16 N. The rocket then flies up slowing down under the force of gravity. After it reaches the apex, the rocket starts to fall back down. When its down velocity reaches 20 m/s a parachute opens (assumed to open instantly) and the rocket continues to move down at a constant speed of 20 m/s until it hits the ground. Write a script that calculates and plots the speed and altitude of the rocket as a function of time during the flight.
Original Comment by Gabrielle Bartolome retrieved from Google Cache:
% This script calculates and plots the speed and altitude of the rocket as a function of time during the flight
%Declare known variables
g = 9.81 ;
m = 0.05 ;
f = 16 ;
%find velocity and height of the rocket in the first 15s
%this loop starts when time in seconds is 0 and repeats the commands until
%15 secods
t1 = 0;
while t1<15
a = f/m - g;
v1 = a*t1;
h1 = .5*a*t1^2;
t1 = t1 +1;
end
%this while loop models the velocity and height after 15 seconds until the
%parachute opens
v2 = v1;
t1 = 15;
t2 = 16;
while v2 < -20
h2 = h1 + v1*(t2 - t1)-.5*9.81*((t2-t1)^2);
v2 = v1 - g*(t2-t1);
t2 = t2 + 1;
end
%this while loop models the velocity and height from when the parachut
%opens till the rocket hits the ground.
h3 = h2;
while h3>0
t3 = t2;
v3 = -20;
h3 = h2 + v2*(t3 - t2);
t3 = t3+1;
end
grid on
plot(t1, v1,'r', t2, v2, 'b', t3, v3, 'g')
hold on

サインインしてコメントする。

採用された回答

Alan Stevens
Alan Stevens 2020 年 9 月 28 日
A little more like this perhaps:
g = 9.81 ;
m = 0.05 ;
f = 16 ;
%find velocity and height of the rocket in the first 15s
%this loop starts when time in seconds is 0 and repeats the commands until
%15 secods
t1 = 0; dt = 0.01;
t = 0; v = 0; h = 0; % to store values for plotting
i = 1; % counter
while t1<0.15
a = f/m - g;
v1 = a*t1;
h1 = .5*a*t1^2;
t1 = t1 +dt;
i = i+1;
t(i) = t1; v(i) = v1; h(i) = h1;
end
%this while loop models the velocity and height after 15 seconds until the
%parachute opens
v2 = v1;
t2 = t1;
while v2 > -20
h2 = h1 + v1*(t2-t1)-.5*g*((t2-t1)^2);
v2 = v1 - g*(t2-t1);
t2 = t2 + dt;
i = i+1;
t(i) = t2; v(i) = v2; h(i) = h2;
end
%this while loop models the velocity and height from when the parachut
%opens till the rocket hits the ground.
h3 = h2;
t3 = t2;
v3 = v2;
while h3>0
h3 = h2 + v3*(t3-t2);
t3 = t3+dt;
i = i+1;
t(i) = t3; v(i) = v3; h(i) = h3;
end
subplot(2,1,1)
plot(t, h),grid
xlabel('t'),ylabel('h')
subplot(2,1,2)
plot(t, v),grid
xlabel('t'),ylabel('v')
Note that the question specifies the powered flight for 0.15s not 15s.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAudio I/O and Waveform Generation についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by