I am Terry K . I am a Mechanical Engineering Assignment Expert at matlabassignmentexperts.com. I hold a Ph.D. Matlab, University of North Carolina, USA. I have been helping students with their homework for the past 5 years. I solve assignments related to Mechanical Engineering.
Visit matlabassignmentexperts.com or email info@matlabassignmentexperts.com.
You can also call on +1 678 648 4277 for any assistance with Mechanical Engineering Assignments.
1. For any help regarding Mechanical Engineering Assignment Help
Visit :- https://www.matlabassignmentexperts.com/,
Email :- info@matlabassignmentexperts.com or
call us at :- +1 678 648 4277 matlabassignmentexperts.com
2. All m-files that you create in this homework should have enough comments of your codes (brief explanations),
and should be submitted to the MIT Server class site.
Problem 1 : Calculate the trajectory of a ball dropping and bouncing without no drag force
A ball starts to drop from a height of 1 meter. Only vertical motion is considered. When the ball hits on the
ground, it re-bounces with coefficient of restitution (COR) e 0.8 . The only force
acting on the ball is a gravitational force, and the equation of motion with the initial conditions can be expressed as
below:
& &
at h(t)
d
2
ht g,
dt2 &
h01, 0 h0 0
Write an m-file (ball3_your_kerberos_name.m) to numerically (without integrating the equation of
motion) simulate the trajectory of the ball until ball hits on the ground three times.
Plot the trajectory of the ball ht in time.
Note: In order to simulate the trajectory of the ball, Euler forward method is introduced.
xt t xt x
&
tt
or
xtn1 xtn x
&
tn t
x
&
t t x
&
t &
x
&
tt
&
& x
&
tn1 x
&
tn &
x
&
tn t wheret tn1 tn
Simulate the motion of the ball with t 0.01sec
Problem 2 : Calculate the trajectory of a ball dropping and bouncing with Stokes’drag
Problems
matlabassignmentexperts.com
3. We assume that the velocity of the ball dropping and bouncing is low enough, and introduce Stokes’ drag which
resists movement of the ball, and linearly proportional to speed. The equation of motion can be expressed as
below: 2 &
&
at h(t)
d
2
ht & &
g bht g bvt, h01, v0 h, 0
dt
write an m-file (ball3stokes_your_kerberos_name.m) with b 0.8 to numerically (without
integrating the equation of motion) simulate the trajectory of the ball until ball hits on
the ground three times. Plot the trajectory of the ball
ht in time.
Problem 3 : Calculate the trajectory of a ball dropping and bouncing with quadratic drag
Consider the case where the drag is quadratic to velocity instead. The equation of motion can be expressed as
below:
2
&
at h(t)
d
2
ht g ch
&
th
&
t g cvtvt
dt
&
h01, v0 h
&
0 0
Write an m-file(ball3quadratic_your_kerberos_name.m) with c 0.5 to
numerically (without integrating the equation of motion) simulate the trajectory of the ball until
ball hits on the ground three times. Plot the trajectory of the ball
ht
in time.
Problem 4 : Calculate a more accurate trajectory of the ball with a given spatial resolution (Bonus, very
difficult)
Go back to Problem 3.1. The result shows ball bounces when it is not exactly at the ground (either above or
below) due to the finite precision of our numerical simulation. We will look to
how to get a better simulation for the motion of the ball. We can take smaller time step size t and that will
definitely produce accurate trajectory (try). However, it requires much more computation to do simulation with
smaller t . Therefore, we introduce adaptive time step size
especially in the region close to the ground. Write an m-file
(ball3spatial_your_kerberos_name.m) to simulate the motion of the ball that
htb 0.01 where tb : is the time when the ball bounces. (Hint:
What we meant by
satisfies
matlabassignmentexperts.com
4. adapative time step size is the following. Modify the algorithm when the ball bounces. If you
find that the ball goes below ground and h tb 0.01 is not satisfied, take the ball back one
time step and then reinitiate Euler procedure with a smaller time interval (say 1
t ). Then try
2
again in that region. Repeat this procedure until you can satisfy the criterion. Discuss it with TA)
matlabassignmentexperts.com
5. Problem 1 : Calculate the trajectory of a ball dropping and bouncing without no drag force
First, the function can be defined as below. No input argument and two output arguments (time
‘t’ and trajectory ‘h’)
function [t,h]=ball3
%
% Problem 3.1 Trajectory of the ball dropping and bouncing
% until the ball hits 3 times on the ground
% Second, you should define some constants used in simulation: gravity, time step size, coefficients of restitution, and
whatever you need.
% Define constants
g=9.81; % gravity (m/sec^2)
dt=0.01; % time step[temporal resolution] (sec) H=1;
% initial height when ball start dropping COR=0.8;
% coefficient of restitution
Third, variables you used in the simulation are declared such as the height, velocity and so on, but it is not really
required. (Variable declarations in MATLAB are more flexible than any other languages.)
% Initialize numerical simulation variables (It is not required)
t=[]; % time (sec)
h=[]; % height of the ball (m)
v=[]; % velocity of the ball (m/sec)
matlabassignmentexperts.com
Solutions
6. Fourth, the initial conditions for solving differential equations of the ball dropping and bouncing should be assigned
to the initialized variables above. For example, the first element in the matrix which stores height information has
initial height when the ball starts dropping. (like h(1)=1;)
% Assign initial conditions
t(1)=0; % t0=0
h(1)=H; % h(t0=0)=H=1m
v(1)=0; % v(t0=0)=0 (no initial velocity)
a=-g; % a=-g, and always constant
Following diagram gives better understanding for relationship between the matrix defined in MATLAB, and the function
or the variable symbolized in mathematics. Note that index of matrices should be always a positive integer. Therefore,
how to translate symbolic expression into MATLAB language will be explained later.
indicates single
element of the
given matrix
v(dt) v(2dt)
v v(0)
h h(0)
h(1)
h(dt) h(2dt) h(n×dt)
h(2) h(3) h(n)
v(1)
v(n×dt)
v(2) v(3) v(n)
t
t(1) t(2) t(3) t(n)
0 dt 2dt n×dt
indicates symbolic
expression of functions
or variables
Fifth, we define the index variable to indicate current position in the matrices. It is used for indicating the relative
position to current position, or for moving current position to calculate next height of the ball bouncing.
matlabassignmentexperts.com
7. % set index number i to 1 (initial condition for i=1)
i=1;
Sixth, we should run the MATLAB codes for solving differential equations until ball hits on the ground. In each bounce,
new initial conditions are given to MATLAB, and it then runs same codes again for solving differential equation. So, we
repeat the MATLAB codes up to 3th bounce, which means MATLAB codes for solving differential equations and
providing new initial conditions are repeated three times. Therefore, we first use ‘for’ loop since we already know how
many loops we need to calculate ball trajectory up to 3th bounce.
% repeat calculating velocity and height of the ball
% until the ball hits 3 times on the ground for
nbounce=1:3
Seventh, in the ‘for’ loop, the routine to solve differential equation numerically should be inserted. Only one second
derivative of the motion equation associated with the gravity is given in the problem 3.1. It is a little complicated to
solve the second order differential equation directly, but one second order differential equation can be separated into
two first order differential equations as below:
2 g v & g
d h
dt2
dh
dt
dv
dt
Based on Euler method, the first differential equations can be converted to the discrete difference equation as follow:
vt
dt dt t
dh ht t htht t ht
t tt t
vtt ht t htht t ht vtt
Note that we assume t is small enough to accept numerical errors which happen during the numerical simulation. In
the same way, the second differential equation can be also translated.
matlabassignmentexperts.com
8. g dv
vt tvt
vt tvt
dt dt t t tt t
gt vt tvtvt t vt gt
Now, we should describe MATLAB version of difference equations, based on the difference equations and relationship between symbolic
expression and MATLAB language.
ht t ht vtt
hn+1=hn+vn*dt
vt t vt gt vn+1=vn-g*dt
t dt, t n*dt, t t n+1*dt
Where ht hn, ht t hn+1
vt vn, vt t vn+1
By increasing index number (i=i+1), we can calculate the height of the ball bouncing until the ball hits on the ground.
However, how many loops we need before ball bouncing is not known. (Even though we calculate it mathematically,
computer cannot do.) Therefore, ‘while’ is used to calculate every heights of the ball with the given time step as long
as the ball hits on the ground, or the calculated height of the ball is still either positive or zero. If the height of the ball we
calculated is negative number, ‘while’ loop is terminated since negative height of the ball doesn’t make sense physically.
% if current height h(i) has negative number, terminate 'while' loop
% (it does not physically make sense.) while h(i)>=0
% calculate time for given index number t(i+1)=t(i)+dt;
% calculate velocity of the ball at given time t(i+1)
v(i+1)=v(i)+a*dt;
% calculate height of the ball at given time t(i+1)
h(i+1)=h(i)+v(i)*dt;
% index 'i' increases by 1 to calculate next height i=i+1;
end
Eighth, we are supposed to give new initial conditions when the ball bounces. First, we eliminate
matlabassignmentexperts.com
9. the last height we obtained since it has negative value. That’s why the index number should go one step back (i=i-1).
Then, we assume that this current position is approximately where the ball is bounced. We observe how much the new
ball’s velocity is changed, compared with the ball’s velocity before the ball bouncing. The coefficient of restitution
(COR) is given in the homework, and the definition of the COR is as below:
CR v v
1b 2b
v2 a v1a
where
v1b : Velocity of the first object before impact
v1a : Velocity of the first object after impact
v2b : Velocity of the second object before impact
v2a : Velocity of the second object after impact
In the case of ball bouncing, v2b v2a 0 (for the ground), and v1a ev1b , e 0 (for the ball),
since the second object (ground) is not moving and the direction of the first object (ball) velocity is opposite after ball
bouncing. The relation between the velocities of the ball both before and after the impact is
C v2a v1a
0ev1b 0.8 ev C v
e CR 0.8
R 1b R 1b
v v
1b 2b 1bv 0
Therefore, new ball’s velocity has opposite sign of old ball’s velocity, and is reduced by the ratio of COR. Last ‘end’
command makes program go back to ‘for’ loop, and run 3 times.
matlabassignmentexperts.com
10. % delete current height related values and
% go back to the last height by decreasing i by 1
% (The last position where the ball is above the ground) t(i)=[];
v(i)=[]; h(i)=[];
i=i-1;
% Assume that the ball bounce slightly above the ground,
% the initial velocity of the ball after bouncing is calculated with
% the final velocity of the ball before bouncing
% and coefficient of restitution v(i)=-COR*v(i);
% index 'i' increases by 1 to calculate next height
% with new condition after the ball bouncing.
end
Trajectory plot for the ball bouncing is shown in the end of Problem 3.3 solution.
Problem 2 : Calculate the trajectory of a ball dropping and bouncing with Stokes’ drag In this problem, all
the codes you developed in the previous problem are used here except for the acceleration part. In problem 3.1, the
acceleration is only gravity, and constant everywhere. However, the new drag called Stoke’s drag is introduced in
this problem, and it should be plugged into acceleration calculation.
at g bvt ant g bvnt an=-g-b*vn
matlabassignmentexperts.com
11. % if current height h(i) has negative number, terminate 'while' loop
% (it does not physically make sense.) while h(i)>=0
% calculate time for given index number
t(i+1)=t(i)+dt;
% calculate acceleration of the ball at given time t(i+1)
a(i+1)=-g-b*v(i);
% calculate velocity of the ball at given time t(i+1)
v(i+1)=v(i)+a(i)*dt;
% calculate height of the ball at given time t(i+1)
h(i+1)=h(i)+v(i)*dt;
% index 'i' increases by 1 to calculate next height i=i+1;
end
In addition, initial condition for the acceleration should be also considered.
a0 g bv0 a1=-g-b*v1
% Assign initial conditions
t(1)=0; % t0=0
h(1)=H; % h(t0=0)=H=1m
matlabassignmentexperts.com
12. v(1)=0; % v(t0=0)=0 (no initial velocity)
a(1)=-g-b*v(1); % a(t0=0)=-g-bv(t0=0)
In the section of defining constants, Stokes’drag coefficient is also defined as below.
% Define constants
b=0.8; % constant for acceleration induced by stokes' drag (1/sec)
Trajectory plot for the ball bouncing is shown in the end of Problem 3.3 solution.
Problem 3 : Calculate the trajectory of a ball dropping and bouncing with quadratic drag
In the same way, the ball bouncing with quadratic drag can be also calculated by modifying the codes for calculating
the acceleration and adding the initial condition of the ball bouncing in problem 3.2
at g vtvt ant g vntvnt
% if current height h(i) has negative number, terminate 'while' loop
% (it does not physically make sense.) while h(i)>=0
% calculate time for given index number t(i+1)=t(i)+dt;
% calculate acceleration of the ball at given time t(i+1) a(i+1)=-g-
c*v(i)*abs(v(i));
% calculate velocity of the ball at given time t(i+1)
v(i+1)=v(i)+a(i)*dt;
% calculate height of the ball at given time t(i+1)
h(i+1)=h(i)+v(i)*dt;
% index 'i' increases by 1 to calculate next height i=i+1;
end
a0 g cv0v0 a 1=-g-c*v1*absv1
% Assign initial conditions
matlabassignmentexperts.com
13. t(1)=0;
h(1)=H;
v(1)=0;
% t0=0
% h(t0=0)=H=1m
% v(t0=0)=0 (no initial velocity)
a(1)=-g-c*v(1)*abs(v(1)); % a(t0=0)=-g-cv(t0=0)|(v(t0=0)|
In the section of defining constants, quadratic drag coefficient is also defined as below.
% Define constants
c=0.5; % constant for acceleration induced by quadratic drag (1/m)
All the plots for the ball bouncing in problem 3.1-3.3 are generated. Following codes are for plotting three trajectories
of the ball bouncing with different drag conditions.
>> [t1,h1]=ball3;
>> [t2,h2]=ball3stokes;
>> [t3,h3]=ball3quadratic;
>> plot(t1,h1,'r',t2,h2,’b’,t3,h3,'g');
>> grid on;
>> legend('bfNo drag','bfStokes'' drag','bfQuadratic drag');
>> xlabel('bfTime (sec)');
>> ylabel('bfHeight (m)');
>> title('bfTrajectories of the Ball Bouncing');
matlabassignmentexperts.com
14. Trajectories of the Ball Bouncing
0 0.2 0.4 0.6 1.2 1.4 1.6 1.8
0.8 1
Time (sec)
0
No drag Stokes' drag Quadratic drag
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
Height
(m)
Problem 4 : Calculate more accurate bouncing time of the ball with given spatial resolution
Go back to the solution in problem 3.1. What we are interested in is the part of determining the bouncing time within the
given tolerance (or spatial resolution) by changing step size. Following algorithm describes how to find the step size to
satisfy the spatial resolution criterion.
1. Current index number is set to the last one. (i=i-1)
2. Define new variable of the step size as ‘dtt’, and set it to the same value of ‘dt’
3. Check if the next height is positive and greater than the given time resolution, the next time is set to the ball bouncing
time, and the next velocity becomes the final velocity before the ball hits on the ground.
4. If the next height is negative, the current step size decreases by the factor of 2 (0.5dtt). Otherwise, the current step
size is increases by the factor of 1.5 (1.5dtt).
ht ht
dtt dtt *1 0.5
matlabassignmentexperts.com
15. 5. Calculate the next height with new time step ‘dtt’ .
6. Go back to Step 3.
The above algorithm is implemented by MATLAB, and shown as below:
% go back to the last height by decreasing i by 1
% (The last position where the ball is above the ground) i=i-1;
% define new time step (adaptive time step) dtt=dt;
% if h(t) satisfies spatial resolution condition,
% terminate 'while' loop. while h(i+1)>0.001 ||
h(i+1)<0
dtt=dtt+dtt/2*sign(h(i+1));
% calculate time for given couter number t(i+1)=t(i)+dtt;
% recalculate velocity of the ball v(i+1)=v(i)+a*dtt;
% recalculate the height of ball
h(i+1)=h(i)+v(i)*dtt;
end
% index 'i' increases by 1 with accepting new height
% with given spatial resolution i=i+1;
% Assume that the ball bounces on the ground,
% the initial velocity of the ball after bouncing is calculated with
% the final velocity of the ball before bouncing
% and coefficient of resititution v(i)=-COR*v(i);
% go back to calculate next height
matlabassignmentexperts.com
16. The following codes and plot is for generating trajectory of the ball bouncing with the enough spatial resolution.
>> [t,h]=ball3spatial; plot(t,h);
>> grid on;
>> xlabel('bfTime (sec)');
>> ylabel('bfHeight (m)');
>> title( ...
'bfTrajectories of the Ball Bouncing with Given Spatial
Resolution');
Height
(m)
Trajectories of the Ball Bouncing with Given Spatial Resolution
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Time (sec)
matlabassignmentexperts.com