## A function, free fall, that takes in h (in metres), and
## returns the final velocity of the ball at the
## time step just before it touches the ground and makes
## a plot of velocity versus time.
function freefall(h)
## constants and initializations
v=0; ## initial velocity(at rest) [m/sec]
y=h; ## initial altitude of the ball from the ground [m]
t=0; ## initial time[sec ]
B1=0.05; ## Coeff of the term prop to v [kg/sec]
B2=6E-4; ## Coeff of the term prop to v^2 [kg/m]
m=0.25; ## Mass of the ball [kg]
g=9.8; ## Gravitational acceleration [m/sec^2]
dt=0.1; ## Time increment [sec]
n=1; ## Initialize the loop index[dimensionless]
## Run the loop or iterate until the vertical component is
## smaller than zero.
while (y(n)>0);
## decrease the altitude in each step
y=[y;y(n)+v(n)*dt]; ## and accumlate the results in the array
## of the vertical displacement.
## increase the time in each step
t=[t;t(n)+dt]; ## and accumlate the results in the array
## of the time for the time axis in the plot.
## increase the vertical velocity
v=[v;v(n)-dt*(g-B1*v(n)/m+B2*v(n)^2/m)]; ## in each step and
## accumlate the results
## in the array of vertical velocity.
n++; ## increase n by 1 in each step
endwhile
vfinal=-v(n) ## magnitude of the final velocity of the ball at the
## time step just before it touches the ground
plot(t,-v,';drag;') ## plot of the magnitude of the velocity versus time.
endfunction
Comments
Post a Comment