Instructions
• This coursework has two parts:
1) Question (1) to (7).
2) A Python program (py file) to implement simulations for Question (8).
• Your solutions must include neatly drawn labelled diagrams (where applicable),
correct use of mathematical notation, sufficient comments and workings for the
marker(s) to easily follow your process. Where practicable, you should also show
how you have checked your answers.
• Python program must be clearly described with sufficient comments to explain the
steps in the program.
• Marks are awarded for clear, legible presentation of work.
Page 3 of 5
System description: Mechanical mass-spring-damper system
The coursework deals with modelling and analysis of the mechanical mass-springdamper system shown in Figure 1.
Figure 1: Nonlinear mass-spring-damper system
The variables 𝑥1(𝑡) and 𝑥2(𝑡) represent the positions of mass 𝑚1 and 𝑚2. The force
𝑓(𝑡) is the system input, whilst the output is the position 𝑥2
(𝑡).
Here the masses are 𝑚1 = 1 𝑘𝑔 and 𝑚2 = 1 𝑘𝑔 and the damper 𝑏 = 1 𝑁𝑠/𝑚. The
spring is nonlinear, and the force (𝑁), 𝐹𝑠(𝑡), required to stretch the spring is:
𝐹𝑠(𝑡) = 2𝑥1
2
(𝑡) Eq.(1)
PART A (Modelling)
Question 1 (2 marks)
Provide a real-life example where a general mass-spring-damper system can be
found.
Question 2 (10 marks)
Using a free-body-diagram, show that the differential equations representing the
system in Figure 1 are given by:
𝑑
2𝑥1(𝑡)
𝑑𝑡
2 +
𝑑𝑥1(𝑡)
𝑑𝑡 + 2𝑥1
2
(𝑡) −
𝑑𝑥2(𝑡)
𝑑𝑡 = 0
Eq.(2)
𝑑
2𝑥2
(𝑡)
𝑑𝑡
2 +
𝑑𝑥2
(𝑡)
𝑑𝑡 −
𝑑𝑥1
(𝑡)
𝑑𝑡 = 𝑓(𝑡)
Eq.(3)
Question 3 (10 marks)
Linearise the system for the point 𝑥1
(0) = 1, 𝑥2(0) = 0, 𝑓(0) = 0, and show that the
linearised differential equations are given by:
𝑑
2𝛿𝑥1(𝑡)
𝑑𝑡
2 +
𝑑𝛿𝑥1(𝑡)
𝑑𝑡 + 2(1 + 2𝛿𝑥1(𝑡)) −
𝑑𝛿𝑥2(𝑡)
𝑑𝑡 = 0
Eq.(4)
𝑑
2𝛿𝑥2
(𝑡)
𝑑𝑡
2 +
𝑑𝛿𝑥2
(𝑡)
𝑑𝑡 −
𝑑𝛿𝑥1
(𝑡)
𝑑𝑡 = 𝛿𝑓(𝑡)
Eq.(5)
Note: 𝛿𝑥1(𝑡) = 𝑥1(𝑡) − 1, where 1 is the linearisation point.
Page 4 of 5
PART B (Analytical and numerical methods)
Remark: The remaining questions will be based on the linearised system given in
Equation Eq.(6) and Equation Eq.(7).
For the remaining questions, replace the linear variable 𝛿𝑥1(𝑡) with 𝑥1(𝑡), 𝛿𝑥2(𝑡) in
Eq.(4) and Eq.(5) with 𝑥2(𝑡) and 𝛿𝑓(𝑡) with 𝑓(𝑡) (i.e. ignoring the linearisation point). In
other words, the remaining questions are based on the result of the linearisation
process, which is given by:
𝑑
2𝑥1(𝑡)
𝑑𝑡
2 +
𝑑𝑥1(𝑡)
𝑑𝑡 + 2(1 + 2𝑥1(𝑡)) −
𝑑𝑥2(𝑡)
𝑑𝑡 = 0
Eq.(6)
𝑑
2𝑥2
(𝑡)
𝑑𝑡
2 +
𝑑𝑥2
(𝑡)
𝑑𝑡 −
𝑑𝑥1
(𝑡)
𝑑𝑡 = 𝑓(𝑡)
Eq.(7)
Question 4 (6 marks)
Apply Laplace transform on the linearised system in equations Eq.(6)-Eq.(7). Assume
zero initial conditions, i.e. 𝑥1
(0) = 0, 𝑥̇1
(0) = 0, 𝑥2
(0) = 0, 𝑥̇2
(0) = 0.
Question 5 (7 marks)
Using the results from Question (4),
a) Obtain the transfer function for the linearised system (i.e. equations Eq.(6) and
Eq.(7)). Note that the input of the system is 𝑓(𝑡) and the output is 𝑥2(𝑡).
(5 marks)
b) What is the order of the system? Justify your answer.
(2 marks)
Question 6 (12 marks)
Using the transfer function from Question (5)
a) Obtain and clearly list all the poles and zeros of the linearised system.
(Remark: there should be two zeros and four poles. Two of the poles are at
s = −0.3522 ± 1.7214i and one at s = 0. You need to find the other one real
pole. You can use calculator to find these values.)
(Remark 2: the location of the remaining pole is between -2 and 0).
(4 marks)
b) Determine if the system is stable. Justify your answer.
(3 marks)
c) Draw the “𝑠-plane”.
(5 marks)
Question 7 (3 marks)
Use Final Value Theorem to predict the value of 𝑥2(𝑡) (if available) when the input is
a unit impulse. Justify your answer.
Page 5 of 5
Question 8 (50 marks)
Using Equation (6) and Equation (7), create a simulation of the system using both:
a) Euler method, and
b) Heun (Runge-Kutta second order) method
Assume that the input force 𝑓(𝑡) is a unit impulse (duration of 0.1 sec from 𝑡 = 0).
For each method (25 marks × 𝟐 = 𝟓𝟎 marks):
i. Write your own Python code that creates the simulation of the system
(10 marks)
ii. Select an appropriate step size ℎ = Δ𝑡. Explain your reasoning.
(Remark: As a guidance, this value must be chosen (iteratively?) such that
the steady state error is less than 1%).
(7 marks)
iii. Select an appropriate end time for the simulation. Explain your reasoning.
(2 marks)
iv. Calculate the error (𝐸𝑡) and percentage error (|𝜖𝑡
|%) and discuss the results.
Remark: Use the final value from Question (7) as the exact numerical solution
(3 marks)
v. Plot the output responses (i.e. plot the output position 𝑥2
(𝑡) against time in
seconds) and discuss the results in terms of general system behaviour (e.g.
underdamped or overdamped etc).
(3 marks)
Important remark for Question 8:
- Write your own Python code to implement both numerical methods to simulate
the system.
- Python program must be clearly described with sufficient comments to explain
the steps in the program, especially addressing items (i) to (v) from Question (8).
- Use a single Python file to implement both methods.
- You can use an existing/example program to check your solution.
- However, do not submit the existing/example program as your submission.
- To avoid compatibility issues when marking the Python code, please use Spyder
4.2.5 (Python 3.8). (You can download Spyder through Anaconda navigator – see
the webpage: https://www.anaconda.com/products/individual).
END OF QUESTION PAPER