XJEL1703 – Algorithms and  Numerical Mathematics

3 阅读14分钟

XJEL1703 – Algorithms and 

Numerical Mathematics Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

School of Electronic & 

Electrical Engineering 

FACULTY OF ENGINEERING 

  

Page 2 of 12 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

Report format 

This assignment is split into 5 parts, questions are shaded blue, while examples (if provided) are shaded grey. 

This assignment carries 70% of your total mark on the module and you need to score at least 30% on this 

assignment in order to pass the module, regardless of your score on the previous two assignments. 

  • Answer all the questions in separate document (your report), include your name and student number. 

  • Make your report as organized as you can (e.g use tables for short questions, different colours, fonts 

etc.). 

  • For questions where you do something in MATLAB command line you must copy-paste input/output 

from MATLAB to your report – you can do this directly (copy-paste) or take a print screen and paste 

a picture. 

  • For questions which require you to write a code you should take a photo (snipping tool or print screen) 

of your code in the report (or copy paste it) and also upload corresponding .m file along your report. 

Also add comments into codes (using MATLAB symbol % ) and explain what lines in your code do in 

the report. 

  • You should also add comments explaining what you did and notify anything you found peculiar in 

MATLAB (and give an opinion why that happened). 

 

Contents 

Roots Finding Algorithms ...................................................................................................................................... 5 

Question 1. (15 marks) ....................................................................................................................................... 6 

Question 2. (25 marks) ....................................................................................................................................... 6 

Function fitting - linear and nonlinear regression .................................................................................................. 8 

Question 3. (10 marks) ....................................................................................................................................... 8 

Interpolation ........................................................................................................................................................... 9 

Question 4. (20 marks) ....................................................................................................................................... 9 

Optimising Voltage Stability and Energy Management in a Smart Grid: A MATLAB-Based Analysis ........ 10 

Question 5. (30 marks) ..................................................................................................................................... 10 

  

Page 3 of 12 

Dr D Indjin and Dr A. Demic 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

Assignment hints 

 

This assignment primarily focuses on testing your analytic skills. In the previous assignment you learned how 

to make functions, vary parameters in them and display and analyse your results. 

In this assignment you will also be required to write codes which vary different input parameters of functions 

that we will provide and analyse effect of those parameters, thus your comments are primarily marked. 

 

Generally, there are three types of comments you could make: 

 

 1. Code comments – these comments should be present in the codes itself explaining what particular 

lines do, and you should also provide a sentence or two explaining the entire algorithm and your code 

structure in the report. 

 

  1. Observatory comments – these comments describe what you can observe from your results. They are 

typically not worth many marks, but are a necessary part of your work. For instance in Assignment 1, 

you might’ve commented on graph error vs terms: “The numerical error flattens for 20-30 terms in the 

expansion when x is fixed to 5” or “fzero is MATLAB’s function that finds a root of a function that is 

closest to the initial guess” 

 

 3. Explanatory comments – these comments explain your results, most likely after some observation. 

They are worth the most marks. Anyone can observe some peculiarity on a graph, but can you explain 

it? For example in Assignment 1, an explanatory comment would be: “Numerical error decreases with 

number of terms, however it displays saturation effect when error reaches the scale of 1e-16. This 

saturation effect is purely of numerical nature as 1e-16 is the smallest number MATLAB can represent 

by the default data type we are using, while theoretically the error should still be decreasing with 

addition of more terms in the Maclaurin expansion”. 

 

It is important to have sense of displaying your data. Matlab’s plot function links data points (x,y) linearly, so if 

you have a lot of points, your graph would be smooth, you can use stem function to display points only 

(without linking them linearly) which is recommended if your data has only few points. Matlab has various 

plotting function along with plot, and the important ones are loglog, semilogx and semilogy which scale one 

of the axes or both of them logarithmically. These plotting functions are useful when your inputs are not 

equidistant, and have rapidly increasing or decreasing values (for instance powers of 10). In the following 

questions you will be instructed when to use a specific plot function, however you may, for your own merit, try 

using plot in order to see the difference, and more importantly to check whether you can derive same 

conclusions as in logarithmic plot. 

Note that even though you are allowed to copy-paste specific functions from the notes and use them, you still 

need to include them in your report and Minerva submission. 

  

Page 4 of 12 

Dr D Indjin and Dr A. Demic 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

The following example illustrates analysis of function with multiple inputs. Imagine you were provided with a 

function that evaluates exponential of x, with specified tolerance tol, the function also returns number of 

iterations needed to satisfy the tolerance tol. Analysis of such function would require you to do the following: 

%Analysis of x 

x=linspace(0,10); % needs to be varied 

tol=1e-6; % needs to be fixed 

for i=1:length(x) 

 [y_x(i) itt_x(i)]=custom_exp_fun(x(i),tol); 

end 

error_x=abs(y_x-exp(x)); % you should have something to compare with 

 

%Analysis of tolerance 

x_fixed=5; % needs to be fixed 

tolerance=10.^(-16:-1); % needs to be varied 

for i=1:length(tolerance) 

 [y_tol(i) itt_tol(i)]=custom_exp_fun(x_fixed,tolerance(i)); 

end 

error_tol=abs(y_tol-exp(x)); 

 

The next step would be plotting these results. Plots (x,error_x) and (x,itt_x) should be done with plot or 

semilogy function while plots (tolerance,error_tol) and (itt_tol,error_tol) should be plotted with semilogx or 

loglog function since the x-axis in the plot is logarithmic, and y-axis is error which is usually very small. 

Note that analysis of different inputs should ideally be in different .m files. In the assignment you will always be 

asked to do it separately. If, in future, you are required to the similar analysis in different type of problem, make 

sure that you do not overwrite variables used in previous variation of input parameters (make sure your main 

code always clears the memory). 

Some of the functions you are provided for this assignment request function input in order to work properly, 

namely zero finding functions and interpolation functions. You may have noticed how to do that in the previous 

assignments by making a function file, however Matlab has a neat trick how to construct an inline function 

handler: 

 

F=@(x) x.^2 – 5*x + 5; % this is a function of x, where x is symbolic 

x=linspace(-10,10); % this is x – axis, it did not overwrite x in the previous 

 function! 

y=F(x); % this will place array x into your function and evaluate 

plot(x,y); % this will plot function F for input x 

fzero(F,5); % you may call other function that needs function input 

Construct @(x) means function of “x”, this approach is equivalent to making the function F in separate .m file 

and it is clearly very convenient when your function is arithmetical. 

The greatest advantage of this trick is that you can use it to make functions out of other functions neatly. In 

many practical cases you will be provided with raw (x,y) data that you may need to interpolate and then do 

Page 5 of 12 

Dr D Indjin and Dr A. Demic 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

some analysis (root finding, differentiation etc.). Interpolation functions usually require you to supply data and 

a variable/array for which you want to find an estimate. Naturally return value is another variable/array which 

you cannot use as an input to root finding function. Trick is to call interpolation function for a symbolic variable 

and make its output as a function of it: 

x_data=[-5 -4 -3 0 50 51 68 98]; % raw x data 

y_data=[-5, -3, -0.5, 3, 8, -5, 10 20]; % raw y data 

New_function = @(x) interp1(x_data,y_data,x,’cubic’); % this creates an 

 % interpolation function 

x_array=-5:100; % create interpolating array with better spacing 

y_array= New_function(x_array); % interpolation of y_data on x_array 

plot(x_array,y_array) % plot of interpolated data 

z1=fzero(New_function,5); % New_funciton is a function so fzero can be called 

z2=fzero(New_function,80); % Find the second zero 

If you interpolated your data directly as y_array2=interp1(x_data,y_data,x_array) you would be able to plot it, 

however you could not use fzero function on it, because y_array2 is an array, and fzero needs a function as an 

input. 

 

 

 

Roots Finding Algorithms 

The root finding algorithms covered in lectures 2 and 3 are numerical methods for finding a value x such that 

f(x) = 0 for a given function f(x). These values of x are described as roots of the function f. 

 

These methods can generally be broken down into bracketing methods, open methods, and combinations of 

these. Bracketing methods such as the bisection method require two initial conditions on either side of the root 

of a continuous function such that they have opposite signs. The interval is then repeatedly bisected until the 

root is found within some tolerance. False position bracketing method determines the next guess not by 

splitting the bracket 代写XJEL1703 – Algorithms and  Numerical Mathematics in half but by connecting the endpoints with a straight line and determining the location of 

the intercept of the straight line. 

Open methods such as Newton’s method or the secant method do not require a defined interval and iteratively 

calculate the derivative of the function to find the root. 

 

In this assignment you will apply various algorithms to polynomial functions to calculate their roots. 

  

Page 6 of 12 

Dr D Indjin and Dr A. Demic 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

Question 1. (15 marks) 

1.1. Using the code for the bisection method provided in Lecture 2 calculate the real roots 

of the function f(x) = x4

 -2x - 2 using 5 iterations. To determine the intervals where the 

function changes sign use the graphical method. Discuss interval width and number of 

iterations. 

 (5 marks) 

 

1.2. Modify your bisection method code so that the program finds the roots of the function 

given in 1.1 to an error value less than the provided parameter named tolerance and 

returns the number of bisection iterations necessary for convergence. 

 The modification requires you to set number of iterations as an output of your function, 

 and tolerance as an input. Check the code for false position method function in Lecture 

 2 notes which is already written in such format. 

 Write a main code where you: 

 - Test your modified function for 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 = 10−6 and find all roots of f(x) 

 - Focus on one of the roots and plot number of iterations vs range of tolerance values 

 with bisection method 

 - Focus on one of the roots and plot number of iterations vs range of tolerance values 

 with false position method 

 Comment on your observation and analyse the effect of tolerance on both functions. 

 Hint: For making the graphs, you need to call your function for multiple values of 

 tolerance input. Doing this automatically (via for or while loop) is strongly 

 preferred. To create an array of tolerance values you may use this: 

 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 = 10. ^(−16: −1) . This code creates array consisting of 

 10−16, 10−15 … 10−1 . You may also try different range as 10. ^(−20: −1) to 

 check what happens for very strict tolerance. 

 Note: Instead of saving f(x) as an inline function as suggested in the notes, you may 

 also use function handlers in MATLAB. You may define f(x) at the start of your 

 main code as:  = @(  )  4 − 2 ∗   − 2. The symbol @ is called handler, (x) 

 means ‘function of x’. 

 

 (10 marks) 

 

Question 2. (25 marks) 

 

2.1. Plot the function f(x) = x4

 – 2x2

 + x between -2 and 2. How many roots does this 

function have? Find these roots using MATLAB roots built-in program (use command 

help roots in the command window to learn more about MATLAB roots program). 

 

(2 marks) 

  

Page 7 of 12 

Dr D Indjin and Dr A. Demic 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

2.2. Read about Matlab built-in fzero program (use command help fzero in the 

command window, material from Lecture 3 notes and/or on internet). Test the Matlab 

program fzero finding real roots of f(x) = x4

 – 2x2

 + x. 

 

(3 marks) 

 

2.3. Review Newton’s method function code from the lab notes. Focus on mynewtontol 

function specifically and write a MATLAB code that finds all roots of the given function 

automatically. In order to do this you need to make array for the x-axis and send each 

point of x(i) as initial guess to mynewtontol function, your output (the roots) will also be 

an array. Use tolerance of 1×10-6

 

 - Use your code to find the roots of the function f(x) = x4

 - 2x - 2. Plot the function for 

visual check of your code. What do you notice about the output of your code? Why do 

you have repetitive roots? Check MATLAB’s round and unique function and combine 

them in order to filter repetitive values. What are the issues with this filtration? 

 

  • In order to avoid repetition of the roots, modify your code so that you send initial 

guess only when your function changes sign doing, therefore, the incremental search 

algorithm and rerun your code. What do you notice now about the output of your code? 

 

  • Furthermore test your code for the function f(x) = x2

 - 2x +1. Plot the function to 

check where the root is. 

 

  • Discuss incremental search and bracketing procedure and what are potential 

problems. Illustrate potential incremental search hazards plotting in MATLAB different 

functions of your choice. 

 

(10 marks) 

 

2.4. Write a MATLAB program that determines how many iterations Newton’s method takes 

to have the tolerance 1×10-6

 with various initial values for the root x0. You will need to 

make x-axis array, send it to mynewtontol function and output number of iterations for 

every guess x(i). 

 

  • Test your code for the function f(x) = x4

 - 2x - 2 and plot number of iterations needed 

for different guesses. What do you notice? 

 

  • Review the theory of Newton’s method and plot f(x) / f’(x). Compare this figure with 

your iterations figure, what do you notice? Can you explain why this happened? 

 

  • Test your code for the function f(x) = x2

 - 2x +1 and repeat the procedure you did with 

the previous function. What do you notice now? Formulate mathematical condition 

when the issue you noticed with the first function occurs. 

Page 8 of 12 

Dr D Indjin and Dr A. Demic 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

2.5. Write a MATLAB program that determines how many iterations Newton’s method takes 

to satisfy various tolerances tol. In this task tolerance needs to be an array (for 

example from 1 to 1×10-16), while initial guess is fixed. Do this also with bisection 

function code which you used in Assignment 2. 

 - Run your code for the function f(x) = x4

 - 2x – 2, use x0 = 1 as initial guess in 

Newton’s method, for bisection method choose interval [1 3]. Plot (use semilogx 

function) number of iterations needed for different tolerances obtained from both 

methods on the same graph. What do you notice? 

 

 (3 marks) 

 

Function fitting - linear and nonlinear regression 

 

Determining the relationship between variables involved in a process is often an important part of engineering. 

If an engineer is required to develop an understanding of underlying mechanisms or is attempting to optimise a 

device, it is useful to establish how one characteristic depends on something else such as time. 

A mathematical expression that describes the experimental data is called an approximating function. There are 

two approaches to determining an approximating function: 

 

 - The approximating function graphs as a smooth curve. In this case, the plotted curve will generally not 

pass through all the data points, but we seek to minimize the resulting error to get the best fit. A plot of 

the data on linear, semilog, or log-log coordinates can often suggest an appropriate form for the 

approximating function. 

 

  • The approximating function passes through all data points. However, if there is some scatter in the 

data points, this approximating function may not be satisfactory. 

 

 

Question 3. (10 marks) 

3.1. Given that (x,y) = (-15,-980), (-8,-620), (-6,-70), (-4,80), (-2,100), (0,90), (2,0), (4,-80), 

(6,-90), (8,10), (10,225), use linear least-squares regression curve fitting approach to fit 

a line y = a0 +a1x to this data and find coefficients a0 and a1 by using mylinregr from 

your notes. Plot (use stem function) original data y(x) and the linear fit (use plot 

function) on the same graph and discuss the accuracy of the linear fit. 

 

 (5 marks) 

3.2. Repeat the curve fitting procedure as in 3.1. to find the best fit to polynomials of third, 

fourth and fifth degrees using MATLAB built-in polyfit function (check polyval as well). 

Plot the raw data and curves fit (on the same graph) and discuss the accuracy of each 

polynomial fit. 

 

 (5 marks) 

Page 9 of 12 

Dr D Indjin and Dr A. Demic 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

Interpolation 

Question 4. (20 marks) 

 

4.1. The population of a region between 1920 and 2000 is given in the table below. Using 

Lagrange interpolation technique, determine the population in 1925. What would be the 

difference between population in 1945 determined by Lagrange interpolation and 

estimated by linear regression? Plot the data (stem plot), Lagrange interpolation 

function and linear regression line on the same graph. Estimate what the population will 

be in 2015 by Lagrange method. Is your answer reasonable? Outline the potential 

hazards of extrapolation. 

(10 marks) 

Year Population 

(millions) 

1920 105 

1930 120 

1940 130 

1950 150 

1960 180 

1970 205 

1980 225 

1990 250 

2000 280 

 

 4.2. Using inverse interpolation technique based on the Lagrange interpolation and a 

method for root finding by your choice (check assignment 2 for bisection, fzero or use 

Newton’s method that is in question 3 of this assignment): 

a) Determine year and month when the population of the region was exactly 210 million. 

Plot inverse interpolation function for different years. 

 

Hint: You want to find zero of function lagrange(x_data,y_data,x)-210, check out the hint 

prior to question one. 

 

b) Determine years (and the corresponding populations) when Lagrange interpolation and 

quadratic regression will anticipate same populations. Plot inverse interpolation function 

for different years. 

(10 marks) 

 

 

 

 

 

  

Page 10 of 12 

Dr D Indjin and Dr A. Demic 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

Optimising Voltage Stability and Energy Management in a Smart Grid: A 

MATLAB-Based Analysis 

Question 5. (30 marks) 

An urban smart grid provides power under variable load conditions, affecting voltage stability. Voltage 

fluctuations impact sensitive electronics and increase wear on infrastructure. Engineers need robust methods 

for forecasting voltage trends, identifying critical thresholds, and optimising control settings. 

 

 Below is voltage data recorded hourly over 24 hours under varying load demands: 

 

Time (hours) Voltage (V) 

0 230 

1 225 

2 220 

3 218 

4 215 

5 210 

6 205 

7 208 

8 212 

9 217 

10 222 

11 227 

12 230 

13 235 

14 240 

15 238 

16 234 

17 230 

18 228 

19 226 

20 224 

21 223 

22 221 

23 220 

24 218 

 

 

Task 1: Polynomial Regression and Signal Smoothing (10 marks) 

  1. Polynomial Regression: Fit polynomial regression models of the 3rd, 4th, and 5th degrees to the 

voltage data using MATLAB’s polyfit and polyval functions. Plot each polynomial fit with the original 

data to determine which model best represents voltage trends over time. 

Plot: Original voltage data (scatter or stem plot) and polynomial regression curves (3rd, 4th, and 5th 

degree) on the same graph. 

Page 11 of 12 

Dr D Indjin and Dr A. Demic 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

  1. Residual Analysis: Calculate and plot the residuals (errors) for each polynomial fit to analyse which 

degree most accurately captures voltage variations. Identify which model most effectively handles 

fluctuations and discuss the potential effects of overfitting. 

 

Plot: Separate plot showing residuals for each polynomial degree (3rd, 4th, and 5th) against time. 

 

  1. Control System Smoothing: For the best-fitting polynomial, use it to predict voltage values at halfhour

intervals (e.g., 0.5, 1.5, etc.). Comment on how this finer resolution could improve real-time control 

system decisions for grid stability. 

 

Plot: Plot the best-fitting polynomial regression model at half-hour intervals (a smoothed version of the 

voltage curve). 

 

Task 2: Root Finding and Threshold-Based Voltage Control (10 marks) 

 

  1. Threshold Root Finding: Set a critical voltage threshold at 215 V, below which the grid’s stability is 

compromised. Using root-finding methods (bisection and false position), determine the precise times 

when the voltage crosses this threshold. 

 

Plot: Original voltage data with a horizontal line at the critical threshold of 215 V. Mark points where the 

voltage crosses this threshold were found using root-finding methods. 

 

  1. Tolerance vs. Iterations Analysis: For both the bisection and false position methods, vary the 

tolerance levels and plot the number of iterations required to converge. Use a logarithmic scale for 

tolerance to analyse convergence behaviour. Discuss which method achieves faster convergence and 

is more suitable for grid control applications. 

 

Plot: Logarithmic plot (semiology) showing tolerance values on the x-axis and the number of iterations 

on the y-axis for both the bisection and false position methods. 

 

  1. Adaptive Control Recommendation: Based on your findings, propose an optimal tolerance setting 

and identify the most suitable root-finding method for real-time grid monitoring. Explain how these 

recommendations would improve grid reliability. 

 

Plot: Summary plot showing the times when voltage crossed the threshold for various tolerances to 

support control system recommendations. 

 

Task 3: Energy Estimation and Power Quality Integration (10 marks) 

 

  1. Numerical Integration for Energy: Calculate the total energy supplied by the grid over 24 hours by 

integrating the voltage data with the trapezoidal rule. Vary the segment count from 1 to 50 and plot the 

integration error versus the number of segments to identify when the integration error stabilises. 

 

Plot: Semilogarithmic plot showing the number of segments on the x-axis and the integration error on 

the y-axis. 

 

  1. Romberg Integration Comparison: Apply Romberg integration for the same calculation, varying the 

tolerance levels to 1×10−6, 1×10−8, and 1×10−10. Plot the number of iterations for each tolerance and 

compare efficiency with the trapezoidal rule. 

Page 12 of 12 

Dr D Indjin and Dr A. Demic 

XJEL1703 – Algorithms and Numerical Mathematics 

Roots Finding, Linear and Polynomial Regression, Interpolation, Integration – Assignment 2 

 

Plot: Semilogarithmic plot showing tolerance on the x-axis and the number of Romberg iterations 

required for each tolerance. 

 

  1. Optimal Integration Method for Power Quality Monitoring: The most effective integration technique 

for continuous power quality monitoring in the grid is recommended based on error analysis and 

efficiency. Discuss how this could impact long-term energy management and infrastructure reliability. 

 

Plot: Comparative plot (semiology) of the trapezoidal and Romberg integration methods, showing 

integration error or iterations needed for each tolerance level. 

 WX:codinghelp