issue using indices...maybe?

조회 수: 2 (최근 30일)
Susan Chestnutt
Susan Chestnutt 2021년 2월 11일
댓글: Susan Chestnutt 2021년 2월 11일
Hello everyone,
I have made this code to solve system of equations so when t=0 x should be at target distance.
I shared it with my professor today and she said she thinks it's something to do with the indices...and I am unable to figure it out. The plot should end at the target distance x_t at y=0 and as you can see it hits the target just below y=0. Any help is greatly appriciated.
g = -32.2; % Gravatational constant
%% Please enter angle and target distance.
a = 45 ; % User input for angle
x_t = 4; % User input target distance
y_o = .5; % Initial y position at launch 6 in.
% System of equations to be solved
syms v t
eqn1 = x_t == v * cosd (a) *t;
eqn5 = 0 == y_o + v * sind (a) * t + 1/2 *g * t^2;
eqns =[eqn1,eqn5];
% Solve
sol = solve(eqns,v,t);
vS = vpa(sol.v)/1i^2;
tS = vpa(sol.t)/1i^2;
% Extracting only positive roots for subsequent equations
vpos = vS(vS>=0);
tpos = tS(tS>=0);
% Time step and matrices length
dt=.01;
t_i = 0:dt:tpos;
numt = length(t_i);
y = zeros(1,numt);
x = zeros(1,numt);
% Simulate the trajectory
vy = vpa(vpos * sind(a));
for i = 2 :numt
y(1)= y_o;
vy (i) = vy(i-1) + g * dt;
x (i) = x (i-1) + vpos * cosd(a) * dt;
y (i) = y (i-1) + vy(i) * dt + 1/2 * g * dt.^2;
end
%% Plotting the balls path
plot (x,y)
xlim ([0,12.5])
xticks ([0:1:12.5])
ylim auto
hold off
grid on
xlabel ('distance')
ylabel ('Height')
title Projectile Motion
tpos
vpos

채택된 답변

James Tursa
James Tursa 2021년 2월 11일
편집: James Tursa 2021년 2월 11일
You are doing a numeric itegration to generate the plotting points. Numeric integration will build up errors over time, so the fact that your plot doesn't end at 0 exactly is to be expected. You could decrease the step size of your integration, or use a higher order numeric integration scheme, or simply plug some t values into your x and y equations directly to generate the plotting points. E.g., try this and then zoom in on the end point:
t = linspace(0,tpos,1000);
x = vpos * cosd(a) * t;
y = y_o + vpos * sind(a) * t + 1/2 * g * t.^2;
figure
plot(x,y,'.-')
grid on
  댓글 수: 1
Susan Chestnutt
Susan Chestnutt 2021년 2월 11일
Thank you, you are amazing!!!! And don't forget to smile, you deserve it

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Integrated Circuits에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by