Las ecuaciones del movimiento son bastante sencillas
y=y0+v0y*t-0.5*g*t^2, para el movimiento en vertical
x=v0x*t para el movimiento horizontal
donde :
- y0 es la altura inicial del punto de disparo
- v0y es la componente en el eje y de la velocidad
- v0x es la componente en el eje x de la velocidad
- g es la aceleración de la gravedad
- y0
- pendiente de disparo
- g (si no cambiamos de planeta pues 9.81 m/sg)
lo primero que necesitamos es saber el tiempo que tarda en caer el cuerpo que lanzamos, resolvemos la ecuación y0+v0y*t-0.5*g*t^2=0, que nos da dos raices, seleccionamos el valor mayor.
Ya tenemos el tiempo que tarda el disparo en caer al suelo.
El código es el que sigue:
% modelizacion de un tiro parabólico
clc % limpiamos la pantalla
% datos de entrada
y0=0.5; % altura inicial [m]
pendiente=30; % pendiente en grados
g= -9.81; % aceleracion de la gravedad [m/sg^2] en negativo
v0=15 % velocidad inicial [m/s]
% calculos
% componentes de la velocidad
vy0=v0*sin(deg2rad(pendiente)); % velocidad inicial en y [m/sg]
vx0=v0*cos(deg2rad(pendiente)); % velocidad inicial en x [m/sg]
% valores del vector tiempo
[t1,t2]=grado2(g*0.5,vy0,y0); % obtenemos el tiempo que tarda en caer
tmax=max(t1,t2); % como tenemos dos soluciones obtenemos el tiempo maximo
t=linspace(0,tmax,100); %vector de valores del tiempo 100 valores
% valores de altura
y=y0+vy0*t+0.5*g*t.^2;
% valores de x
x=vx0*t;
% ploteamos dominio del espacio
figure (1)
plot(x,y)
axis equal
xlabel('Distancia [m]')
ylabel('Altura [m]')
% ploteamos dominio del tiempo
figure (2)
plot(t,y)
xlabel('tiempo [sg]')
ylabel('Altura [m]')
Nos ayudamos de una función que soluciona ecuaciones de segundo grado, que es grado2, este es el código:
function [ x1,x2 ] = grado2( a,b,c )
%Solución de la ecuacion
% y=ax^2+bx+c
delta=b^2-4*a*c;
fprintf('El valor de delta es %.2f \n',delta)
if delta<0
fprintf('Los valores de las raices son complejos \n')
x1=(-b+i*sqrt(-delta))/(2*a);
x2=(-b-i*sqrt(-delta))/(2*a);
return
else
fprintf('Los valores de las raices son reales \n')
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
end
end
Los reultados en forma de gráfica son:
Dominio del tiempo |
Dominio del espacio |
Gracias muy buen aporte
ResponderEliminar