MCD4140 Practical Session 6
Basic Level Tasks: To be completed as a homework before the practical session.
Write Matlab programs to answer the following questions:
Consider the matrix
3 5 6 9 8 12 17
6 7 11 19 21 6 13
7 8 9 6 12 15 3
8 5 12 13 25 9 12
a) Copy positive numbers into B . The new matrix should be the same size as A. Store 0
where the negative numbers are.
b) Copy negative numbers into C . The new matrix should be the same size as A. Store 0
where the positive numbers are.
[Hint: Use nested for loops]
Using ‘if’, ‘elseif’ and ‘else’ statements write a MATLAB script that takes x and y coordinates as inputs
from the user and computes the angle with respect to the positive x‐axis (counter‐clockwise) as well
as the corresponding quadrant.
1. Angle in the first quadrant when both x and y are positive. 𝜃 ൌ tanିଵ ቀ
2. Angle in second quadrant = 180o
‐ 𝜃 – when x is negative and y is positive.
3. Angle in third quadrant = 180o
+ 𝜃 – when x is negative and y is negative.
4. Angle in fourth quadrant = 360o
‐ 𝜃 – when x is positive and y is negative.
The command window should appear like the following:
Enter x coordinate: ‐5
Enter y coordinate: ‐12
Required angle is 247.38 and is in the 3rd quadrant
Enter x coordinate: 0
Enter y coordinate: 12
Required angle is 90 degrees and falls on the positive‐y axis
Test your code for following coordinates:
A. (x,y) = (5, 12)
B. (x,y) = (0, 12)
C. (x,y) = (‐5, ‐12)
D. (x,y) = (0, ‐12)
Caution: Inputs of x=0 and y=0 should return an `undefined’ error.
Average Level Tasks: To be completed during the practical session, but it is a good
idea to read and understand the questions before coming to the practical session.
The circumference of a circle is given by 𝐶 ൌ 2𝜋𝑟 where r is the radius. The circumference of an ellipse
can be approximated by 𝐸ൌ𝜋 ቂ3ሺ𝑎𝑏ሻ െ ඥሺ3𝑎 𝑏ሻሺ𝑎 3𝑏ሻቃ where a and b are the minor and
major axis lengths.
A. Write an m‐file which prompts the user to specify whether they would like to calculate the
circumference of a circle or an ellipse. If the circle option is chosen, ask the user for a radius.
If the ellipse option is chosen, ask the user for the minor and major axis lengths.
B. Calculate the circumference of the chosen shape. Use fprintf to write a statement containing
the shape chosen, the relevant length(s) and the circumference.
C. Ask the user if they would like to repeat the calculation. If yes is chosen, go through steps A
and B again. If no is chosen, end the code.
Hint: Use a while loop to achieve part C.
Your code should look similar to the following:
Enter either circle (1) or ellipse (2): 1
Enter the radius length: 1
Circle was chosen with a radius of 1. Circumference = 6.283185e+00
Would you like to repeat the calculation? 1=yes, 0=no: 1
The roots of the quadratic equation 𝑎𝑥ଶ 𝑏𝑥 𝑐 ൌ 0 are given by
െ𝑏 േ √𝑏ଶ െ 4𝑎𝑐
where the discriminant of the equation is defined to be ∆ൌ 𝑏ଶ െ 4𝑎𝑐.
Based on the sign of the discriminant, it is possible to characterise the nature of the roots according
to the following relationships:
1. ∆ > 0 : A pair of non‐equal real valued roots
2. ∆ = 0 : A pair of equal real valued roots
3. ∆ < 0 : A pair of non‐equal complex valued roots
a) Write a function that uses a, b and c as inputs to compute the discriminant and the roots of
the quadratic equation.
function [x1, x2, discriminant] = my_quadratic(a,b,c)
b) Write an m‐file that prompts the user to input values of a, b and c and uses the function in
written in part a) to output the roots and its characteristics. Print the roots to 3 decimal places.
Ensure that your program checks that the user enters a non‐zero value for the `a’ coefficient.
Note: You may need to separate the complex variable into real and imaginary terms to display them
as x = g + hi. Look up the real() and imag() functions.
Your output should look similar to the following:
Quadratic Program ‐ What are the quadratic coefficients?
a = 2
b = ‐1
c = 1
For quadratic coefficients a=2.00, b=‐1.00 and c=1.00
A pair of non‐equal complex valued roots exists and are x1=0.250 + 0.661i and x2=0.250 ‐ 0.661i
Higher Level Tasks: To be completed during the practical session, but it is a good idea
to read and understand the questions before coming to the practical session.
Many real world objects travel in a jagged manner that is best represented by piecewise functions.
For example, the velocity of a rocket may change sharply when thrusters are enabled or disabled and
due to various external factors. The velocity of a rocket can be modelled by v(t) where t represents
Write a function that takes a start and end time as inputs and returns the vectors v and t. The vector
t should contain values between start_t and end_t at 0.01 increments. The vector v should contain
v(t) for each value in t.
function [t, v] = VPiecewise(start_t, end_t)
Use the function in an m‐file to plot the velocities for t=‐5 to 80.
Hint: Use if statements to break up the different profile conditions.
Recall that the following Taylor series is used to approximate Cosine:
cosሺ𝑥ሻ ൌ ሺെ1ሻ𝑥ଶ
You have been tasked with developing an M‐file that allows other engineers to quickly determine the
minimum n needed to reduce the truncation error below an error threshold. The truncation error is
the absolute error between the approximation and MATLAB’s cos() function.
Note: You may want to Google the Taylor series to gain a better understanding of it.
Your code should do the following:
1. Ask the user to enter an error threshold value (it should work with vectors)
2. Find the number of terms (minimum n) needed so that the truncation error is below the user
error threshold for x = ‐2π to 2π.
3. Print the minimum n value, the mean truncation error and the maximum truncation error
4. Plot the truncation error against x.
Test your code with the following error thresholds: 0.1, 0.01, 1e‐10.
The answers for the thresholds above should be n=8, 9, 16, respectively. This is a reference to see
whether your code is working correctly.
Hint: Your code may include both while and for loops and/or a created function to calculate the
approximation of Cosine.
5 marks deducted for poor programming practices (missing comments,
unnecessary outputs, no axis labels, inefficient coding, etc.)
END OF ASSESSED QUESTIONS
The remainder of this document contains supplementary and exam‐type questions for extended
learning. Use your allocated lab time wisely!