联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Matlab编程Matlab编程

日期:2024-12-08 09:24

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.

2. 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 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

2. 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.

3. 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.

2. 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.

3. 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.

2. 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.

3. 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.


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp