Modelling,
Simulation & Control
Hans-Petter Halvorsen, M.Sc.
Lessons
1. Solving Differential Equations
2. Interpolation/Curve Fitting
3.
4.
5.
6.
7.
Numerical Differentiation/Integration
Optimization
Transfer Functions/State-space Models
Discrete Systems
Frequency Response
Do as many Exercises
as possible!
Course Manuals available as PDF Files
Part I: Introduction to MATLAB
Part II: Modelling, Simulation and Control
Part III: Advanced Topics and Simulink
Course Manuals available as PDF Files
Self-paced Tutorials with lots of Exercises and Video resources
Learning by Doing!
What is MATLAB?
MATLAB is a tool for technical computing,
computation and visualization in an integrated
environment.
MATLAB is an abbreviation for MATrix
LABoratory
It is well suited for Matrix manipulation and
problem solving related to Linear Algebra,
Modelling, Simulation and Control Applications
Popular in Universities, Teaching and Research
The MATLAB Environment (IDE)
Script Editor
Workspace
Current
Folder
Plot Window
Command Window
Installation
http://www.mathworks.com/academia/student_version
2 different options:
MATLAB and Simulink Student Suite (NOK699)
Included: MATLAB + Simulink + Statistics Toolbox +
Optimization Toolbox + Symbolic Math Toolbox + Control
System Toolbox + Signal Processing Toolbox + Image
Processing Toolbox, ...
MATLAB Student (NOK350+)
Includes MATLAB only. Add-on products must be purchased
separately (NOK70/Toolbox if you buy them at the same time,
else NOK200/Toolbox). Select between 55 different Toolboxes
Lesson 1
Solving ODEs in MATLAB
- Ordinary Differential Equations
Example:
Differential Equations
Note!
Where
T is the Time constant
The Solution can be proved to be (will not be
shown here):
T = 5;
a = -1/T;
x0 = 1;
t = [0:1:25];
x = exp(a*t)*x0;
Use the following:
plot(t,x);
grid
Students: Try this example
Differential Equations
Problem with this method:
We need to solve the ODE before we can plot it!!
T = 5;
a = -1/T;
x0 = 1;
t = [0:1:25];
x = exp(a*t)*x0;
plot(t,x);
grid
Using ODE Solvers in MATLAB
Example:
Step 1: Define the differential equation as a MATLAB function (mydiff.m):
function dx = mydiff(t,x)
T = 5;
a = -1/T;
dx = a*x;
clear
clc
x0
Step 2: Use one of the built-in ODE
solver (ode23, ode45, ...) in a Script.
tspan = [0 25];
x0 = 1;
tspan
[t,x] = ode23(@mydiff,tspan,x0);
plot(t,x)
Students: Try this example. Do you get the same result?
Higher Order ODEs
Mass-Spring-Damper System
Example (2.order differential equation):
In order to use the ODEs in MATLAB we need reformulate a higher
order system into a system of first order differential equations
Mass-Spring-Damper System
Higher Order ODEs
In order to use the ODEs in MATLAB we need reformulate a higher
order system into a system of first order differential equations
We set:
This gives:
Finally:
Now we are ready to solve
the system using MATLAB
Step 1: Define the differential equation as a MATLAB function
(mass_spring_damper_diff.m):
function dx = mass_spring_damper_diff(t,x)
k
m
c
F
=
=
=
=
1;
5;
1;
1;
Students: Try with different
values for k, m, c and F
Students: Try this example
dx = zeros(2,1); %Initialization
dx(1) = x(2);
dx(2) = -(k/m)*x(1)-(c/m)*x(2)+(1/m)*F;
Step 2: Use the built-in
ODE solver in a script.
clear
clc
tspan = [0 50];
x0 = [0;0];
[t,x] = ode23(@mass_spring_damper_diff,tspan,x0);
plot(t,x)
...
[t,x] = ode23(@mass_spring_damper_diff,tspan,x0);
plot(t,x)
...
[t,x] = ode23(@mass_spring_damper_diff,tspan,x0);
plot(t,x(:,2))
For greater flexibility we want to be able to change the parameters
k, m, c, and F without changing the function, only changing the
script. A better approach would be to pass these parameters to the
function instead.
Step 1: Define the differential equation as a MATLAB function
(mass_spring_damper_diff.m):
function dx = mass_spring_damper_diff(t,x, param)
k
m
c
F
=
=
=
=
param(1);
param(2);
param(3);
param(4);
dx = zeros(2,1);
dx(1) = x(2);
dx(2) = -(k/m)*x(1) - (c/m)*x(2) + (1/m)*F;
Students: Try this example
Step 2: Use the built-in ODE solver in a script:
clear
clc
close all
tspan = [0 50];
x0 = [0;0];
k = 1;
m = 5;
c = 1;
F = 1;
param = [k, m, c, F];
[t,x] = ode23(@mass_spring_damper_diff,tspan,x0, [], param);
plot(t,x)
Students: Try this example
Whats next?
Learning by Doing!
MATLAB for Students Self-paced Tutorials with lots of
Exercises and Video resources
Do as many Exercises as possible! The
only way to learn MATLAB is by doing
Exercises and hands-on Coding!!!
Lesson 2
Interpolation
Curve Fitting
Example
Interpolation
Given the following Data Points:
x
15
10
(Logged
Data from
a given
Process)
x=0:5;
y=[15, 10, 9, 6, 2, 0];
plot(x,y ,'o')
grid
Students: Try this example
Problem: We want to find the interpolated value for, e.g., x=3.5
Interpolation
We can use one of the built-in Interpolation functions in MATLAB:
x=0:5;
y=[15, 10, 9, 6, 2, 0];
plot(x,y ,'-o')
grid on
new_x=3.5;
new_y = interp1(x,y,new_x)
MATLAB gives us the
answer 4.
From the plot we see this
is a good guess:
Students: Try this example
new_y =
4
Curve Fitting
In the previous section we found interpolated points,
i.e., we found values between the measured points
using the interpolation technique.
It would be more convenient to model the data as a
mathematical function y=f(x).
Then we can easily calculate any data we want based
on this model.
Data
Mathematical Model
Example:
Curve Fitting
Linear Regression
Given the following Data Points:
15
10
Based on the
Data Points we
create a Plot in
MATLAB
x=0:5;
y=[15, 10, 9, 6, 2, 0];
plot(x,y ,'o')
grid
Students: Try this example
Based on the plot we assume a linear relationship:
We will use MATLAB in order to find a and b.
Example
Curve Fitting
Linear Regression
Based on the plot we assume a linear relationship:
We will use MATLAB in order to find a and b.
Students: Try this example
clear
clc
x=[0, 1, 2, 3, 4 ,5];
y=[15, 10, 9, 6, 2 ,0];
n=1; % 1.order polynomial
p = polyfit(x,y,n)
Next: We will then plot and
validate the results in MATLAB
p =
-2.9143
14.2857
Example
Curve Fitting
Linear Regression
We will plot and validate
the results in MATLAB
clear
clc
close all
x
0
15
10
x=[0, 1, 2, 3, 4 ,5];
y=[15, 10, 9, 6, 2 ,0];
n=1; % 1.order polynomial
p=polyfit(x,y,n);
a=p(1);
b=p(2);
ymodel = a*x+b;
plot(x,y,'o',x,ymodel)
We see this gives a good
model based on the data
available.
Students: Try this example
15
10
Curve Fitting
Linear Regression
Problem: We want to find the interpolated
value for, e.g., x=3.5
3 ways to do this:
Use the interp1 function (shown
earlier)
... (see previus examples)
Implement y=-2.9+14.3
new_x=3.5;
and calculate y(3.5)
Use the polyval function new_y = interp1(x,y,new_x)
new_y = a*new_x + b
Students: Try this example
new_y = polyval(p, new_x)
Curve Fitting
Polynomial Regression
1.order:
p = polyfit(x,y,1)
2.order:
p = polyfit(x,y,2)
3.order:
p = polyfit(x,y,3)
etc.
Students: Try to find models based on the given data
using different orders (1. order 6. order models).
Plot the different models in a subplot for easy
comparison.
15
10
Curve Fitting
clear
clc
close all
x=[0, 1, 2, 3, 4 ,5];
y=[15, 10, 9, 6, 2 ,0];
for n=1:6 % n = model order
p = polyfit(x,y,n)
As expected, the higher order
ymodel = polyval(p,x);
models match the data better
and better.
subplot(3,2,n)
Note! The fifth order model
plot(x,y,'o',x,ymodel)
matches exactly because there
title(sprintf('Model order %d', n));
were only six data points
available.
end
n > 5 makes no sense because
we have only 6 data points
Whats next?
Learning by Doing!
MATLAB for Students Self-paced Tutorials with lots of
Exercises and Video resources
Do as many Exercises as possible! The
only way to learn MATLAB is by doing
Exercises and hands-on Coding!!!
Lesson 3
Numerical Differentiation
Numerical Integration
Numerical Differentiation
A numerical approach to the derivative of a function y=f(x) is:
Note! We will use MATLAB in order to find the numeric solution not the analytic solution
Numerical Differentiation
Example:
We know for this simple
example that the exact
analytical solution is:
Given the following values:
x
-2
-1
0
1
2
y
4
1
0
1
4
Numerical Differentiation
Example:
MATLAB Code:
x=-2:2;
y=x.^2;
numeric
% Exact Solution
dydx_exact = 2*x;
exact
% Numerical Solution
dydx_num = diff(y)./diff(x);
Numerical
Solution
% Compare the Results
dydx = [[dydx_num, NaN]', dydx_exact']
plot(x,[dydx_num, NaN]', x, dydx_exact')
dydx =
Students: Try this example.
Try also to increase number of data points, x=-2:0.1:2
-3
-1
1
3
NaN
Exact
Solution
-4
-2
0
2
4
Numerical Differentiation
x=-2:0.1:2
x=-2:2
The results become
more accurate when
increasing number of
data points
Numerical Integration
An integral can be seen as the area under a curve.
Given y=f(x) the approximation of the Area (A) under the curve can be found
dividing the area up into rectangles and then summing the contribution from all
the rectangles (trapezoid rule ):
Numerical Integration
Example:
We know that the exact solution is:
We use MATLAB (trapezoid rule):
x=0:0.1:1;
y=x.^2;
plot(x,y)
% Calculate the Integral:
avg_y=y(1:length(x)-1)+diff(y)/2;
A=sum(diff(x).*avg_y)
A = 0.3350
Students: Try this example
Numerical Integration
Example:
We know that the exact solution is:
In MATLAB we have several built-in functions we can use for numerical integration:
clear
clc
close all
x=0:0.1:1;
y=x.^2;
Students: Try this example.
Compare the results. Which
gives the best method?
plot(x,y)
% Calculate the Integral (Trapezoid method):
avg_y = y(1:length(x)-1) + diff(y)/2;
A = sum(diff(x).*avg_y)
% Calculate the Integral (Simpson method):
A = quad('x.^2', 0,1)
% Calculate the Integral (Lobatto method):
A = quadl('x.^2', 0,1)
Whats next?
Learning by Doing!
MATLAB for Students Self-paced Tutorials with lots of
Exercises and Video resources
Do as many Exercises as possible! The
only way to learn MATLAB is by doing
Exercises and hands-on Coding!!!
Lesson 4
Optimization
Optimization
Optimization is important in modelling, control and simulation applications.
Optimization is based on finding the minimum of a given criteria function.
Example:
Students: Try this example
We want to find for what value of x the function has its minimum value
clear
clc
x = -20:0.1:20;
y = 2.*x.^2 + 20.*x - 22;
plot(x,y)
grid
i=1;
while ( y(i) > y(i+1) )
i = i + 1;
end
x(i)
y(i)
(-5,72)
The minimum of the function
Optimization
Example:
Students: Try this example
function f = mysimplefunc(x)
f = 2*x.^2 + 20.*x -22;
x_min =
-5
y =
-72
We got the same results as
previous slide
Note! if we have more than 1 variable,
we have to use e.g., the fminsearch
function
clear
clc
close all
x = -20:1:20;
f = mysimplefunc(x);
plot(x, f)
grid
x_min = fminbnd(@mysimplefunc, -20, 20)
y = mysimplefunc(x_min)
Whats next?
Learning by Doing!
MATLAB for Students Self-paced Tutorials with lots of
Exercises and Video resources
Do as many Exercises as possible! The
only way to learn MATLAB is by doing
Exercises and hands-on Coding!!!
Lesson 5
Transfer Functions
State-space models
Transfer functions
Differential
Equations
Laplace
H(s)
Input
Example:
Output
Transfer
Functions
A Transfer function is the ratio between the
input and the output of a dynamic system
when all the others input variables and
initial conditions is set to zero
Numerator
Denumerator
Transfer functions
1.order Transfer function:
Step Response:
1.order Transfer function with Time Delay:
Example:
Transfer functions
MATLAB:
clear
clc
close all
% Transfer Function
num = [4];
den = [2, 1];
H = tf(num, den)
% Step Response
step(H)
Students: Try this example
Transfer functions
2.order Transfer function:
Example:
MATLAB:
clear
clc
close all
% Transfer Function
num = [2];
den = [1, 4, 3];
H = tf(num, den)
% Step Response
step(H)
Students: Try this
example.
Try with different
values for K, a, b
and c.
State-space models
A set with linear differential equations:
Can be structured like this:
Which can be stated
on the following
compact form:
State-space models
Example:
MATLAB:
clear
clc
close all
Note! The
system is
unstable
% State-space model
A = [1, 2; 3, 4];
B = [0; 1];
C = [1, 0];
D = [0];
ssmodel = ss(A, B, C, D)
% Step Response
step(ssmodel)
% Transfer function
H = tf(ssmodel)
Students: Try this example
State-space models
Mass-Spring-Damper System
Example:
Students: Find the State-space model and find the step
response in MATLAB.
Try with different values for k, m, c and F.
Discuss the results
Mass-Spring-Damper System
State-space models
This gives:
We set:
Finally:
Note! we have set F = u
k = 5;
c = 1;
m = 1;
A =
B =
C =
D =
sys
[0 1; -k/m -c/m];
[0; 1/m];
[0 1];
[0];
= ss(A, B, C, D)
step(sys)
This gives:
Whats next?
Learning by Doing!
MATLAB for Students Self-paced Tutorials with lots of
Exercises and Video resources
Do as many Exercises as possible! The
only way to learn MATLAB is by doing
Exercises and hands-on Coding!!!
Lesson 6
Discrete Systems
Discrete Systems
When dealing with computer simulation, we need
to create a dicrete version of our system.
This means we need to make a discrete version of
our continous differential equations.
Actually, the built-in ODE solvers in MATLAB use
different discretization methods
The Interpolation, Curve Fitting, etc. is alos based on
a set of discrete values (data points or
measurements)
The same with Numerical Differentiation and
Numerical Integration
Discrete values
etc.
x
15
10
Discrete Systems
Discrete Approximation of the time derivative
Euler backward method:
Euler forward method:
Discrete Systems
Discretization Methods
Euler backward method:
More Accurate!
Euler forward method:
Simpler to use!
Other methods are Zero Order Hold (ZOH), Tustins method, etc.
Discrete Systems
Different Discrete Symbols and meanings
Previous Value:
Present Value:
Next (Future) Value:
Note! Different Notation is used in different litterature!
Example:
Discrete Systems
Given the following continuous system (differential equation):
Where u may be the Control Signal from e.g., a PID Controller
We will use the Euler forward method :
Students: Find the discrete differential equation (pen and
paper) and then simulate the system in MATLAB, i.e., plot
the Step Response of the system. Tip! Use a for loop
Solution:
Discrete Systems
Given the following continuous system:
We will use the Euler forward method :
Solution:
Discrete Systems
Students: Try this example
MATLAB Code:
% Simulation of discrete model
clear, clc, close all
% Model Parameters
a = 0.25;b = 2;
% Simulation Parameters
Ts = 0.1; %s
Tstop = 20; %s
uk = 1; % Step in u
x(1) = 0; % Initial value
% Simulation
for k=1:(Tstop/Ts)
x(k+1) = (1-a*Ts).*x(k) + Ts*b*uk;
end
% Plot the Simulation Results
k=0:Ts:Tstop;
plot(k, x)
grid on
Students: An alternative solution is to
use the built-in function c2d() (convert
from continous to discrete).
Try this function and see if you get the
same results.
Solution:
Discrete Systems
Students: Try this example
MATLAB Code:
% Find Discrete model
clear, clc, close all
% Model Parameters
a = 0.25;
b = 2;
Ts = 0.1; %s
%
A
B
C
D
State-space model
= [-a];
= [b];
= [1];
= [0];
model = ss(A,B,C,D)
model_discrete = c2d(model, Ts, 'forward')
step(model_discrete)
grid on
Euler Forward method
Whats next?
Learning by Doing!
MATLAB for Students Self-paced Tutorials with lots of
Exercises and Video resources
Do as many Exercises as possible! The
only way to learn MATLAB is by doing
Exercises and hands-on Coding!!!
Lesson 7
Frequency Response
Frequency Response
Example:
Air Heater
Imput Signal
Output Signal
Dynamic
System
Amplitude
Frequency
Gain
Phase Lag
The frequency response of a system expresses how a sinusoidal signal of
a given frequency on the system input is transferred through the
system.
Frequency Response - Definition
and the same for Frequency 3, 4, 5, 6, etc.
The frequency response of a system is defined as the steady-state response
of the system to a sinusoidal input signal.
When the system is in steady-state, it differs from the input signal only in
amplitude/gain (A) (forsterkning) and phase lag () (faseforskyvning).
Example:
Frequency Response
clear
clc
close all
% Define Transfer function
num=[1];
den=[1, 1];
H = tf(num, den)
% Frequency Response
bode(H);
grid on
The frequency response is an important tool
for analysis and design of signal filters and
for analysis and design of control systems.
Whats next?
Learning by Doing!
MATLAB for Students Self-paced Tutorials with lots of
Exercises and Video resources
Do as many Exercises as possible! The
only way to learn MATLAB is by doing
Exercises and hands-on Coding!!!
Hans-Petter Halvorsen, M.Sc.
University College of Southeast Norway
www.usn.no
E-mail: hans.p.halvorsen@hit.no
Blog: http://home.hit.no/~hansha/