Effacer les filtres
Effacer les filtres

My Program Is Ignoring my ELSE statement...How To Fix...Projectile Motion

2 vues (au cours des 30 derniers jours)
I AM WANTING TO STOP PLOTTING ONCE Y < 0.
%{
This function was created by Taylor McMillan.
PURPOSE: Model simple projectile motion. Introduce students to Matlab.
ENTER THE FOLLOWING INTO THE COMMAND WINDOW:
ProjectileMotion(0.1, 0, 0, 50, pi/4, 30)
%}
%%START PROGRAM %%
function ProjectileMotion(time_step, xic, yic, vic, angic, max_time)
%%Create A Time Series %%
h = time_step;
N = max_time/h;
t = 0:h:max_time - h;
%%Initial Conditions / Parameters %%
x(1) = xic; % Initial x-position (meters)
y(1) = yic; % Initial y-position (meters)
v(1) = vic; % Initial speed (meters/second)
ang(1) = angic; % Initial launch angle (radians)
g = 9.81; % Acceleration due to gravity (meters/second/second)
%%Projectile Equations %%
if y >=0 && x >= 0
x = x(1) + v(1)*cos(ang(1))*t;
y = y(1) + v(1)*sin(ang(1))*t - 0.5*g*t.^2;
%%Plot The Motion %%
else
figure();
plot(x, y)
xlabel('x - position (m)', 'FontSize', 20)
ylabel('y - position (m)', 'FontSize', 20)
title('Trajectory', 'FontSize', 26)
end
END PROGRAM %%
end

Réponse acceptée

Walter Roberson
Walter Roberson le 31 Mai 2018
Your initial x and y are 0 . 0 >=0 && 0 >= 0 so the code in the body if the "if" will be executed, and the "else" will not be executed. And then you get to the end of the function and return. You do not have a loop.
Your plot() assumes that x and y are vectors, consistent with you having initialized x(1) and y(1). But the code y >=0 && x >= 0 will fail as soon as y becomes a vector, because you cannot use && with vector values. You could try switching to & instead of && but remember that y >=0 & x >= 0 means the same as all(y >=0 & x >= 0)

Plus de réponses (0)

Catégories

En savoir plus sur General Physics dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by