Skip to main content

FREE FALL


## 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

Popular posts from this blog

Simple Euler Method

##Usage:Call Octave from terminal ##and then call EulerMethodUmitAlkus.m ##from octave and finally ##press enter. That's all. ##Simple Euler Method ##Constants and initializations x=[]; ## initial empty vector for x y=[]; ## initial empty vector for y x(1)=1; ## initial value of x y(1)=1; ## initial value of y h=1E-3; ## increment in x dery=[]; ## 1st derivative of y wrt x n=1; ## inital loop index for while ## enter the while loop for the interval x=[1,2] while (x(n)<=2) x(n+1)=x(n)+h; dery(n+1)=x(n)*x(n)-2*y(n)/x(n); ##given y(n+1)=y(n)+h*dery(n); ##Euler method n++; endwhile ##exit from the 1st while loop ##Modified Euler Method ##Constant and initializations ymid=[]; ## empty vector function evaluated at x midpoint xmid=[]; ## empty vector func. of midpoints in x ymid(1)=1; ## inital value for ymid. derymid=[]; ## derivative of y at midpoints ##Enter the 2nd while loop n=1; while (x(n)<=2) xmid(n)=x(n)+h/2; derymid(n)=xmid(n)*xmid(n)-2*ymid(...

FACTORIAL

## Function that calculates the factorial of a number ## Usage : f=factorial(n) function f=factorial(n) ## Initialize the output f=1; ## Check whether the input is correct if ( (n<0) || (rem(n,1)~=0) ) printf("n cannot be a negative number. Exiting...\n"); return endif for num=1:n f*=num; endfor endfunction

NEWTON’S METHOD FOR MINIMUM

##Newton's Method to find ##the minimum of the function F(x)=(x-2)^4-9 ##with the initial guess xmin=1.0 ##Constants and initializations xmin=[]; ##The empty array of x that minimizes the F(x) xmin(1)=1.0; ##Initial value of the xmin Fmin=[]; ##Minimum values of F(x) x=0.0:0.1:4.0; ##Only for plotting purposes F=[]; ##Our examined Function evaluated on x-space Fp=[]; ##First derivative of F(x) wrt x Fpp=[]; ##Second derivative o F(x) wrt x NSteps=50; ##Step number of iteration ##Algorithm for n=1:NSteps Fmin(n)=(xmin(n)-2)^4-9; Fp(n)=4*(xmin(n)-2)^3; Fpp(n)=12*(xmin(n)-2)^2; xmin(n+1)=xmin(n)-Fp(n)/Fpp(n); Fmin(n+1)=(xmin(n+1)-2)^4-9; endfor printf("x*, at which F(x) is minimum, is %1.6f\n",xmin(n+1)) printf("Minimum of F(x) is %1.6f\n",Fmin(n+1)) F=(x-2).^4-9; subplot(2,1,1) plot(x,F) title('Newton^,s Method-F(x) vs x'); xlabel('x'); ylabel('F(x)'); text(2,-7,'\downarrow') text(1.7,-5.6,'(xmin,Fm...