137
Motivation How it is useful for: Summary A Layman Approach

Matlab solved problems

Embed Size (px)

Citation preview

Page 1: Matlab solved problems

MotivationHow it is useful for:

Summary

A Layman Approach

Page 2: Matlab solved problems

[email protected]

Command Window

Command History

Workspace

MATLAB GUI

Page 3: Matlab solved problems

[email protected]

Desktop Tools

Command Window

type commands

Workspace

view program variables

clear to clear

double click on a variable to see it in the Array Editor

Command History

view past commands

save a whole session using diary

Page 4: Matlab solved problems

[email protected]

Matrices

• A vector x = [1 2 5 1]

x =

1 2 5 1

• A matrix x = [1 2 3; 5 1 4; 3 2 -1]

x =

1 2 3

5 1 4

3 2 -1

• Transpose y = x.’ y =

1

2

5

1

Page 5: Matlab solved problems

[email protected]

Matrices (Contd…)

• x(i,j) subscription

• whole row

• whole column

y = x(2,3)

y =

4

y = x(3,:)

y =

3 2 -1

y = x(:,2)

y = 2

1

2

Let, x = [ 1 2 3

5 1 4

3 2 -1]

Page 6: Matlab solved problems

[email protected]

Operators (Arithmetic)

+ addition

- subtraction

* multiplication

/ division

^ power

‘ complex conjugate

transpose

.* element-by-element mult

./ element-by-element div

.^ element-by-element power

.‘ transpose

Page 7: Matlab solved problems

[email protected]

Operators (Relational, Logical)

== equal

~= not equal

< less than

<= less than or equal

> greater than

>= greater than or equal

& AND

| OR

~ NOT

1−

pi 3.14159265…

j imaginary unit,

i same as j

Page 8: Matlab solved problems

[email protected]

Generating Vectors from functions

• zeros(M,N) MxN matrix of zeros

• ones(M,N) MxN matrix of ones

• rand(M,N) MxN matrix of uniformly

distributed random numbers

on (0,1)

x = zeros(1,3)

x =

0 0 0

x = ones(1,3)

x =

1 1 1

x = rand(1,3)

x =

0.9501 0.2311 0.6068

Page 9: Matlab solved problems

[email protected]

Operators (in general)

[ ] concatenation

( ) subscription

x = [ zeros(1,3) ones(1,2) ]

x =

0 0 0 1 1

x = [ 1 3 5 7 9]

x =

1 3 5 7 9

y = x(2)

y =

3

y = x(2:4)

y =

3 5 7

Page 10: Matlab solved problems

[email protected]

MATRIX OPERATIONS

Let, A = eye(3)

>> A = [ 1 0 0

0 1 0

0 0 1 ]

>> eig(A)

ans =

1

1

1

>> inv(A)

ans =

1 0 0

0 1 0

0 0 1

>>A'

ans =

1 0 0

0 1 0

0 0 1

>>A*A

ans =

1 0 0

0 1 0

0 0 1

Page 11: Matlab solved problems

[email protected]

MATRIX OPERATIONS (Contd…)

Let, >> A = [1 2 3;4 5 6;7 8 9]

A = [ 1 2 3

4 5 6

7 8 9 ]

>> eig(A)

ans =

16.1168

-1.1168

-0.0000

>> B=A'

B =

1 4 7

2 5 8

3 6 9

>>C=A*B

C =

14 32 50

32 77 122

50 122 194

>> D=A.*B

D =

1 8 21

8 25 48

21 48 81

Page 12: Matlab solved problems

[email protected]

QUESTIONS ?

Page 13: Matlab solved problems

[email protected]

Applications of MATLAB(Lecture 3)

P Bharani Chandra Kumar

Page 14: Matlab solved problems

[email protected]

Overview

Linear algebra

Solving a linear equation

Finding eigenvalues and eigenvectors

Curve fitting and interpolation

Data analysis and statistics

Nonlinear algebraic equations

Page 15: Matlab solved problems

[email protected]

Linear AlgebraSolving a linear system

Find the values of x, y and z for the following equations:

5x = 3y – 2z +10

8y +4z = 3x + 20

2x + 4y - 9z = 9

Step 1: Rearrange equations:

5x - 3y + 2z = 10

- 3x + 8y +4z = 20

2x + 4y - 9z = 9

Step 2: Write the equations in matrix form:

[A] x = b

=

942

483

235

A

=

9

20

10

b

Page 16: Matlab solved problems

[email protected]

Linear Algebra (Contd…)Step 3: Solve the matrix equation in MATLAB:

>> A = [ 5 -3 2; -3 8 4; 2 4 -9];

>> b = [10; 20; 9]

>> x = A\ b

x =

3.442

3.1982

1.1868

% Veification

>> c = A*x

>> c =

10.0000

20.0000

9.0000

Page 17: Matlab solved problems

[email protected]

Finding eigenvalues and eigenvectors

Eigenvalue problem in scientific computations shows up as:

A v = λ v

The problem is to find ‘λ’ and ‘v’ for a given ‘A’ so that above eq. is satisfied:

Method 1: Classical method by using pencil and paper:

a) Finding eigenvalues from the determinant eqn.

b) Sole for ‘n’ eigenvectors by substituting the corresponding eigenvalues in above eqn.

0=− IA λ

Linear Algebra (Contd…)

Page 18: Matlab solved problems

[email protected]

Method 2: By using MATLAB:

Step 1: Enter matrix A and type [V, D] = eig(A)

>> A = [ 5 -3 2; -3 8 4; 2 4 -9];

>> [V, D] = eig(A)

V =

-0.1709 0.8729 0.4570

-0.2365 0.4139 -0.8791

0.9565 0.2583 -0.1357

D =

-10.3463 0 0

0 4.1693 0

0 0 10.1770

Linear Algebra (Contd…)

Page 19: Matlab solved problems

[email protected]

Step 2: Extract what you need:

‘V’ is an ‘n x n’ matrix whose columns are eigenvectors

D is an ‘n x n’ diagonal matrix that has the eigenvalues of

‘A’ on its diagonal.

Linear Algebra (Contd…)

Page 20: Matlab solved problems

[email protected]

Cross check:Let us check 2nd eigenvalue and second eigenvector will

satisfy A v = λ v or not:

v2=V(:,2) % 2nd column of V

v2 =

0.8729

0.4139

0.2583

>> lam2=D(2,2) % 2nd eigevalue

lam2 =

4.1693

>> A*v2-lam2*v2

ans = 1.0e-014 *

0.0444

-0.1554

0.0888

Linear Algebra (Contd…)

Page 21: Matlab solved problems

[email protected]

Curve Fitting

What is curve fitting ?

It is a technique of finding an algebraic relationship that “best”

fits a given set of data.

There is no magical function that can give you this relationship.

You have to have an idea of what kind of relationship might exist

between the input data (x) and output data (y).

If you do not have a firm idea but you have data that you trust,

MATLAB can help you to explore the best possible fit.

Page 22: Matlab solved problems

[email protected]

Curve Fitting (Contd…)

Example 1 : straight line (linear) fit:

Step 1: Plot raw data:

Enter the data in MATLAB and plot it:

>> x = [ 5 10 20 50 100];

>> y = [15 33 53 140 301];

>> plot (x,y,’o’)

>> grid

301140533315Y

1005020105x

Page 25: Matlab solved problems

[email protected]

Curve Fitting (Contd…)

Example 2 : Comparing different fits:

x = 0: pi/30 : pi/3

y = sin(x) + rand (size(x))/100

Step 1: Plot raw data:

>> plot (x,y,’o’)

>> grid

Step 2: Use basic fitting to do a quadratic and cubic fit

Step 3 : Choose the best fit based on the residuals

Page 27: Matlab solved problems

[email protected]

Interpolation

What is interpolation ?

It is a technique of finding a functional relationship between

variables such that a given set of discrete values of the variables

satisfy that relationship.

Usually, we get a finite set of data points from experiments.

When we want to pass a smooth curve through these points or

find some intermediate points, we use the technique of

interpolation.

Interpolation is NOT curve fitting, in that it requires the

interpolated curve to pass through all the data points.

Data can be interpolated using Splines or Hermite interpolants.

Page 28: Matlab solved problems

[email protected]

Interpolation (Contd…)

MATLAB provides the following functions to facilitate

interpolation:

interp1 : One data interpolation i.e. given yi and xi, finds yj at

desired xj from yj = f(xj).

ynew = interp1(x,y,xnew, method)

interp2 : Two dimensional data interpolation i.e. given zi at

(xi,yi) from z = f(x,y).

znew = interp2(x,y,z,xnew,ynew, method)

interp3 : Three dimensional data interpolation i.e. given vi at

(xi,yi,zi) from v = f(x,y,z).

vnew = interp2(x,y,z,v,xnew,ynew,znew,

method)

spline : ynew = spline(x,y,xnew, method)

Page 29: Matlab solved problems

[email protected]

Interpolation (Contd…)

Example:

x = [1 2 3 4 5 6 7 8

9]

y = [1 4 9 16 25 36 49

64 81]

Find the value of 5.5?

Method 1: Linear Interpolation

MATLAB Command :

>> yi=interp1(x,y,5.5,'linear')

yi = 30.5000

Page 30: Matlab solved problems

[email protected]

Interpolation (Contd…)

Method 2: Cubic Interpolation

MATLAB Command :

>> yi = interp1(x,y,5.5,’cubic')

yi =

30.2479

Method 3: Spline Interpolation

MATLAB Command :

>> yi = interp1(x,y,5.5,’spline')

yi =

30.2500

Note: 5.5*5.5=

Page 31: Matlab solved problems

[email protected]

Data Analysis and statistics

It includes various tasks, such as finding mean, median,

standard deviation, etc.

MATLAB provides an easy graphical interface to do such type of

tasks.

As a first step, you should plot your data in the form you wish.

Then go to the figure window and select data statistics from the

tools menu.

Any of the statistical measures can be seen by checking the

appropriate box.

Page 32: Matlab solved problems

[email protected]

Data Analysis and statistics (Contd…)

Example:

x = [1 2 3 4 5 6 7 8

9]

y = [1 4 9 16 25 36 49

64 81]

Find the minimum value, maximum value, mean, median?

Page 33: Matlab solved problems

[email protected]

Data Analysis and statistics (Contd…)

Page 34: Matlab solved problems

[email protected]

Data Analysis and statistics (Contd…)

Page 35: Matlab solved problems

[email protected]

Data Analysis and statistics (Contd…)

Page 36: Matlab solved problems

[email protected]

Data Analysis and statistics (Contd…)

It can be performed directly by using MATLAB commands also:

Consider:

x = [1 2 3 4 5]

mean (x) : Gives arithmetic mean of ‘x’ or the avg. data.

MATLAB usage: mean (x) gives 3.

median (x) : gives the middle value or arithmetic mean of two middle

Numbers.

MATLAB usage: median (x) gives 3.

Std(x): gives the standard deviation

Max(x)/min(x): gives the largest/smallest value

Page 37: Matlab solved problems

[email protected]

Solving nonlinear algebraic equations

Step 1: Write the equation in the standard form:

f(x) = 0

Step 2: Write a function that computes f(x).

Step 3: Use the built-in function fzero to find the solution.

Example 1: Solve

Solution:

x= fzero('sin(x)-exp(x)+5',1)

x =

1.7878

5sin −=

xex

Page 38: Matlab solved problems

[email protected]

Solving nonlinear algebraic equations

(contd…)

5sin −=

xex

• Example 2: Solve

Solution:

x= fzero(‘x*x-2*x+4',1)

x =

1.7878

0422=+− xx

Page 39: Matlab solved problems

[email protected]

QUESTIONS ?

Page 40: Matlab solved problems

[email protected]

Optimization Techniques

through MATLAB

(Lecture 4)

P Bharani Chandra Kumar

Page 41: Matlab solved problems

[email protected]

Overview

Unconstrained Optimization

Constrained Optimization

Constrained Optimization through gradients

Page 42: Matlab solved problems

[email protected]

Why Optimize!

Engineers are always interested in finding the

‘best’ solution to the problem at hand

Fastest

Fuel Efficient

Optimization theory allows engineers to

accomplish this

Often the solution may not be easily obtained

In the past, it has been surrounded by certain

mistakes

Page 43: Matlab solved problems

[email protected]

The Greeks started it!Queen Dido of Carthage (7 century

BC)

– Daughter of the king of Tyre

– Agreed to buy as much land as

she could “enclose with one

bull’s hide”

– Set out to choose the largest

amount of land possible, with

one border along the sea

• A semi-circle with side

touching the ocean

• Founded Carthage

– Fell in love with Aeneas but

committed suicide when he left.

Page 44: Matlab solved problems

[email protected]

The Italians Countered

Joseph Louis Lagrange (1736-1813)

His work Mécanique Analytique (Analytical

Mechanics) (1788) was a mathematical

masterpiece

Invented the method of ‘variations’ which

impressed Euler and became ‘calculus of

variations’

Invented the method of multipliers

(Lagrange multipliers)

Sensitivities of the performance index to

changes in states/constraints

Became the ‘father’ of ‘Lagrangian’

Dynamics

Euler-Lagrange Equations

Page 45: Matlab solved problems

[email protected]

The Multi-Talented Mr. Euler

Euler (1707-1783)

Friend of Lagrange

Published a treatise which became

the de facto standard of the

‘calculus of variations’

The Method of Finding Curves

that Show Some Property of

Maximum or Minimum

He solved the brachistachrone

(brachistos = shortest, chronos =

time) problem very easily

Minimum time path for a bead

on a string, Cycloid

Page 46: Matlab solved problems

[email protected]

Hamilton and Jacobi

William Hamilton (1805-1865)

Inventor of the quaternion

Karl Gustav Jacob Jacobi (1804-

1851)

Discovered ‘conjugate points’ in

the fields of extremals

Gave an insightful treatment to

the second variation

Jacobi criticized Hamilton’s work

Hamilton-Jacobi equation

Became the basis of Bellman’s

work 100 years later

Page 47: Matlab solved problems

[email protected]

What to Optimize?

Engineers intuitively know what they are

interested in optimizing

Straightforward problems

Fuel

Time

Power

Effort

More complex

Maximum margin

Minimum risk

The mathematical quantity we optimize is called

a cost function or performance index

Page 48: Matlab solved problems

[email protected]

Optimization through MATLAB

Consider initially the problem of finding a minimum

to the function:

MATLAB function FMINCON solves problems of the form:

min F(X)

subject to: A*X <= B, Aeq*X = Beq (linear constraints)

C(X) <= 0, Ceq(X) = 0 (nonlinear constraints)

LB <= X <= UB

Page 49: Matlab solved problems

[email protected]

X = FMINCON(FUN,X0,A,B) starts at X0 and finds a minimum

X to the function FUN, subject to the linear inequalities A*X <= B.

X=FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to

the linear equalities:

Aeq*X = Beq as well as A*X <= B.

(Set A=[ ] and B=[ ] if no inequalities exist.)

Optimization through MATLAB

(Contd…)

Page 50: Matlab solved problems

[email protected]

X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB) defines a set of

lower and upper bounds on the design variables, X, so that the

solution is in the range LB <= X <= UB.

Use empty matrices for LB and UB if no bounds exist.

Set LB(i) = -Inf if X(i) is unbounded below; and set UB(i) = Inf if X(i)

is unbounded above.

X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON) subjects

the minimization to the constraints defined in NONLCON.

The function NONLCON accepts X and returns the vectors C and

Ceq, representing the nonlinear inequalities and equalities

respectively.

Optimization through MATLAB

(Contd…)

Page 51: Matlab solved problems

[email protected]

Unonstrained Optimization : Example

Consider the above problem with no constraints:

Solution by MATLAB:

Step 1: Create an inline object of the function to be minimizedfun = inline('exp(x(1)) * (4*x(1)^2 + 2*x(2)^2 +

4*x(1)*x(2) + 2*x(2) + 1)');

Step 2: Take a guess at the solution:

x0 = [-1 1];

Step 3: Solve using fminunc function:

[x, fval] = fminunc(fun, x0);

)12424()( 22++++= yxyyxexf

x

Page 52: Matlab solved problems

[email protected]

Unconstrained Optimization : Example

(Contd…)

>> x =

0.5000 -1.0000

>> fval =

1.3028e-010

Page 53: Matlab solved problems

[email protected]

Constrained Optimization : Example

Consider initially the problem of finding a minimum

to the function:

Subjected to:

1.5 + x(1).x(2) - x(1) - x(2) < = 0

- x(1).x(2) < = 10

)12424()( 22++++= yxyyxexf

x

Page 54: Matlab solved problems

[email protected]

Constrained Optimization : Example

(contd…)

Solution using MATLAB:

Step 1: Write the m-file for objective function:

function f = objfun(x)

% objective function

f=exp(x(1)) * (4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) +

2*x(2) + 1);

Step 2: Write the m-file for constraints:function [c, ceq] = confun(x)

% Nonlinear inequality constraints:

c = [1.5 + x(1)*x(2) - x(1) - x(2);

-x(1)*x(2) - 10];

% no nonlinear equality constraints:

ceq = [];

Page 55: Matlab solved problems

[email protected]

Constrained Optimization : Example

(contd…)

Step 3: Take a guess at the solution

x0 = [-1 1];

options =

optimset('LargeScale','off','Display','iter');

% We have no linear equalities or inequalities or

bounds,

% so pass [] for those arguments

[x,fval,exitflag,output] =

fmincon('objfun',x0,[],[],[],[],[],[],'confun',options)

;

Page 56: Matlab solved problems

[email protected]

max Directional

Iter F-count f(x) constraint Step-size derivative Procedure

1 3 1.8394 0.5 1 0.0486

2 7 1.85127 -0.09197 1 -0.556 Hessian modified twice

3 11 0.300167 9.33 1 0.17

4 15 0.529834 0.9209 1 -0.965

5 20 0.186965 -1.517 0.5 -0.168

6 24 0.0729085 0.3313 1 -0.0518

7 28 0.0353322 -0.03303 1 -0.0142

8 32 0.0235566 0.003184 1 -6.22e-006

9 36 0.0235504 9.032e-008 1 1.76e-010 Hessian modified

Optimization terminated successfully:

% A solution to this problem has been found at:

x

x =

-9.5474 1.0474

Page 57: Matlab solved problems

[email protected]

% The function value at the solution is:

fval

fval =

0.0236

% Both the constraints are active at the solution:

[c, ceq] = confun(x)

c =

1.0e-014 *

0.1110

-0.1776

ceq =

[]

Page 58: Matlab solved problems

[email protected]

QUESTIONS ?

Page 59: Matlab solved problems

[email protected]

System Identification(Lecture 5)

P Bharani Chandra Kumar

Page 60: Matlab solved problems

[email protected]

Overview

Introduction

Basic questions about system identification

Common terms used in system identification

Basic information about dynamical systems

Basic steps for system identification

An exciting example

Page 61: Matlab solved problems

[email protected]

Introduction

What is system identification?

Can you Say

What is this!

Cold Water Hot Water

Water

Heater

Page 62: Matlab solved problems

[email protected]

What is system identification?

Determining system dynamics from input-output

data

Generate enough data for estimation and

validation

Select range for estimation and validation

Select order of the system

Check for best fit and determine the system

dynamics

Page 63: Matlab solved problems

[email protected]

Basic questions about system

identification

What is system identification?

� It enables you to build mathematical models of a

dynamic system based on measured data.

� You adjust the parameters of a given model until its

output coincides as well as possible with the

measured output.

How do you know if the model is any good?

� A good test is to compare the output of the model to

measured data that was not used for the fit.

Page 64: Matlab solved problems

[email protected]

Basic questions about system

identification (contd…)

What models are most common?

� The most common models are difference-equation

descriptions, such as ARX and ARMAX models, as

well as all types of linear state-space models.

• Do you have to assume a model of a particular

type?

� For parametric models, you specify the model

structure. This can be as easy as selecting a single

integer -- the model order -- or it can involve several

choices.

Page 65: Matlab solved problems

[email protected]

Basic questions about system

identification (contd…)

What does the System Identification Toolbox

contain?

� It contains all the common techniques used to

adjust parameters in all kinds of linear models.

• How do I get started?

� If you are a beginner, browse through The

Graphical User Interface. Use the graphical user

interface (GUI) and check out the built-in help

functions.

Page 66: Matlab solved problems

[email protected]

Basic questions about system

identification (contd…)

Is this really all there is to system identification?

� There is a great deal written on the subject of

system identification.

� However, the best way to explore system

identification is by working with real data.

� It is important to remember that any estimated

model, no matter how good it looks on your screen,

is only a simplified reflection of reality.

Page 67: Matlab solved problems

[email protected]

Common terms used in system

identification

Estimation data: The data set that is used to create

a model of the data.

Validation data: The data set (different from

estimation data) that is used to validate the model.

Model views: The various ways of inspecting the

properties of a model, such as zeros and poles, as

well as transient and frequency responses.

Page 68: Matlab solved problems

[email protected]

Common terms used in system

identification (contd…)

Model sets or model structures are families of

models with adjustable parameters.

Parameter estimation is the process of finding the

"best" values of these adjustable parameters.

The system identification problem is to find both

the model structure and good numerical values of

the model parameters.

Page 69: Matlab solved problems

[email protected]

Common terms used in system

identification (contd…)

• This is a matter of using numerical search to find

those numerical values of the parameters that give

the best agreement between the model's (simulated

or predicted) output and the measured output.

• Nonparametric identification methods: Techniques

to estimate model behavior without necessarily

using a given parameterized model set.

• Model validation is the process of gaining

confidence in a model.

Page 70: Matlab solved problems

[email protected]

Basic information about dynamical

systems

Page 71: Matlab solved problems

[email protected]

Basic Steps for System

Identification

Import data from the MATLAB workspace.

Plot the data using Data Views.

Preprocess the data using commands in the

Preprocess menu.

For example, you can remove constant offsets or

linear trends (for linear models only), filter data, or

select regions of interest.

Page 72: Matlab solved problems

[email protected]

Basic Steps for System

Identification (contd…)

Select estimation and validation data.

Estimate models using commands in the Estimate

menu.

Validate models using Models Views.

Export models to the MATLAB workspace for

further processing .

Page 73: Matlab solved problems

[email protected]

QUESTIONS ?

Page 74: Matlab solved problems

[email protected]

Solution of Ordinary Differential

Equations and Engineering Computing

(Lecture 6)

P Bharani Chandra Kumar

Page 75: Matlab solved problems

[email protected]

Solution of Ordinary Differential

Equaions

Page 76: Matlab solved problems

[email protected]

Overview

Introduction

Examples

Page 77: Matlab solved problems

[email protected]

Introduction

DSOLVE Symbolic solution of ordinary differential equations.

DSOLVE('eqn1','eqn2', ...) accepts symbolic equations representing ordinary differential equations and initial conditions.

Several equations or initial conditions may be grouped together, separated by commas, in a single input argument.

By default, the independent variable is 't'.

The independent variable may be changed from 't' to some other symbolic variable by including that variable as the last input argument.

Page 78: Matlab solved problems

[email protected]

Introduction (contd…)

The letter 'D' denotes differentiation with respect to the independent variable, i.e. usually d/dt.

A "D" followed by a digit denotes repeated differentiation; e.g., D2 is d^2/dt^2.

Any characters immediately following these differentiation operators are taken to be the dependent variables; e.g., D3y denotes the third derivative of y(t).

Note that the names of symbolic variables should not contain the letter "D".

Page 79: Matlab solved problems

[email protected]

Introduction (contd…)

Initial conditions are specified by equations like 'y(a)=b' or 'Dy(a) = b' where y is one of the dependent variables and a and b are constants.

If the number of initial conditions given is less than the number of dependent variables, the resulting solutions will obtain arbitrary constants, C1, C2, etc.

Three different types of output are possible. For one equation and one output, the resulting solution is returned, with multiple solutions to a nonlinear equation in a symbolic vector.

Page 80: Matlab solved problems

[email protected]

Introduction (contd…)

If no closed-form (explicit) solution is found, an implicit solution is attempted. When an implicit solution is returned, a warning is given.

If neither an explicit nor implicit solution can be computed, then a warning is given and the empty sym is returned.

In some cases concerning nonlinear equations, the output will be an equivalent lower order differential equation or an integral.

Page 81: Matlab solved problems

[email protected]

Examples

1) dsolve('Dx = -a*x') returns

ans: exp(-a*t)*C1

2) x = dsolve('Dx = -a*x','x(0) = 1','s') returns

ans: x = exp(-a*s)

3) y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0') returns

ans: y =

[ sin(t)]

[ -sin(t)]

Page 82: Matlab solved problems

[email protected]

Examples (contd…)

4) S = dsolve('Df = f + g','Dg = -f + g','f(0) = 1','g(0) = 2')

Ans: S.f = exp(t)*cos(t)+2*exp(t)*sin(t)

S.g = -exp(t)*sin(t)+2*exp(t)*cos(t)

5) dsolve('Df = f + sin(t)', 'f(pi/2) = 0')

Ans: -1/2*cos(t)- 1/2*sin(t)+1/2*exp(t)/(cosh(1/2*pi)+

sinh(1/2*pi))

Page 83: Matlab solved problems

[email protected]

Engineering Computing

Page 84: Matlab solved problems

[email protected]

Outline of lecture

MATLAB as a calculator revisited

Concept of M-files

Decision making in MATLAB

Use of IF and ELSEIF commands

Example: Real roots of a quadratic

Page 85: Matlab solved problems

[email protected]

MATLAB as a calculator

MATLAB can be used as a ‘clever’ calculator

This has very limited value in engineering

Real value of MATLAB is in programming

Want to store a set of instructions

Want to run these instructions sequentially

Want the ability to input data and output

results

Want to be able to plot results

Want to be able to ‘make decisions’

Page 86: Matlab solved problems

[email protected]

Example

Can do using MATLAB as a calculator

>> x = 1:10;

>> term = 1./sqrt(x);

>> y = sum(term);

Far easier to write as an M-file

∑=

+++==

n

i iy

1

...3

1

2

1

1

11

Page 87: Matlab solved problems

[email protected]

How to write an M-file

File → New → M-file

Takes you into the file editor

Enter lines of code (nothing happens)

Save file (we will call ours bharani.m)

Run file

Edit (ie modify) file if necessary

Page 88: Matlab solved problems

[email protected]

Bharani.m Version 1

n = input(‘Enter the upper limit: ‘);

x = 1:n; % Matlab is case sensitive

term = sqrt(x);

y = sum(term)

What happens if n < 1 ?

Page 89: Matlab solved problems

[email protected]

Bharani.m Version 2

n = input(‘Enter the upper limit: ‘);

if n < 1

disp (‘Your answer is meaningless!’)

end

x = 1:n;

term = sqrt(x);

y = sum(term)

Jump to here if TRUE

Jump to here if FALSE

Page 90: Matlab solved problems

[email protected]

Decision making in MATLAB

For ‘simple’ decisions?

IF … END (as in last example)

More complex decisions?

IF … ELSEIF … ELSE ... END

Example: Real roots of a quadratic equation

Page 91: Matlab solved problems

[email protected]

Roots of ax2+bx+c=0

Roots set by discriminant

∆ < 0 (no real roots)

∆ = 0 (one real root)

∆ > 0 (two real roots)

MATLAB needs to make

decisions (based on ∆)

a

acbbx

2

42−±−

=

acb 42−=∆

Page 92: Matlab solved problems

[email protected]

One possible M-file

Read in values of a, b, c

Calculate ∆

IF ∆ < 0

Print message ‘ No real roots’→ Go END

ELSEIF ∆ = 0

Print message ‘One real root’→ Go END

ELSE

Print message ‘Two real roots’

END

Page 93: Matlab solved problems

[email protected]

M-file (bharani.m)

%================================================

% Demonstration of an m-file

% Calculate the real roots of a quadratic equation

%================================================

clear all; % clear all variables

clc; % clear screen

coeffts = input('Enter values for a,b,c (as a vector): ');

% Read in equation coefficients

a = coeffts(1);

b = coeffts(2);

c = coeffts(3);

delta = b^2 - 4*a*c; % Calculate discriminant

Page 94: Matlab solved problems

[email protected]

M-file (bharani.m) (contd…)

% Calculate number (and value) of real roots

if delta < 0

fprintf('\nEquation has no real roots:\n\n')

disp(['discriminant = ', num2str(delta)])

elseif delta == 0

fprintf('\nEquation has one real root:\n')

xone = -b/(2*a)

else

fprintf('\nEquation has two real roots:\n')

x(1) = (-b + sqrt(delta))/(2*a);

x(2) = (-b – sqrt(delta))/(2*a);

fprintf('\n First root = %10.2e\n\t Second root = %10.2f', x(1),x(2))

end

Page 95: Matlab solved problems

[email protected]

Conclusions

MATLAB is more than a calculator

its a powerful programming environment

• Have reviewed:

– Concept of an M-file

– Decision making in MATLAB

– IF … END and IF … ELSEIF … ELSE … END

– Example of real roots for quadratic equation

Page 96: Matlab solved problems

[email protected]

QUESTIONS ?

Page 97: Matlab solved problems

Graphics

By

G Satish

Page 98: Matlab solved problems

Outline

� 2-D plots

� 3-D plots

� Handle objects

Page 99: Matlab solved problems

2-D plots

Page 100: Matlab solved problems

Simple plot

>> a=[1 2 3 4]

>> plot(a)

Page 101: Matlab solved problems

Overlay plots

� using plot command

>> t=0:pi/10:2*pi;

>> y=sin(t); z=cos(t);

>> plot(t,y,t,z)

Page 102: Matlab solved problems

Overlay plots(contd…)

� using hold command

>> plot(t,sin(t));

>> grid

>> hold

>> plot(t,sin(t))

Page 103: Matlab solved problems

Overlay plots(contd..)

� using line command

>> t=linspace(0,2*pi,10)

>> y=sin(t); y2=t; y3=(t.^3)/6+(t.^5)/120;

>> plot(t,y1)

>> line(t,y2,’linestyle’,’--’)

>> line(t,y3,’marker’,’o’)

Page 104: Matlab solved problems

Overlay plots

Page 105: Matlab solved problems

Style options

>> t=0:pi/10:2*pi;

>> y=sin(t); z=cos(t);

>>plot(t,y,’go-’,t,z,’b*--’)

Page 106: Matlab solved problems
Page 107: Matlab solved problems

Style options

b blue . point - solid

g green o circle : dotted

r red x x-mark -. dashdotc cyan + plus -- dashed

m magenta * stary yellow s square

k black d diamond

v triangle (down)^ triangle (up)

< triangle (left)> triangle (right)

p pentagramh hexagram

Page 108: Matlab solved problems

Labels, title, legend and other text objects

>> a=[1 2 3 4]; b=[ 1 2 3 4]; c=[4 5 6 7]

>> plot(a,b,a,c)

>> grid

>> xlabel(‘xaxis’)

>> ylabel(‘yaxis’)

>> title(‘example’)

>> legend(‘first’,’second’)

>> text(2,6,’plot’)

Page 109: Matlab solved problems

Modifying plots with the plot editor

� To activate this tool go to figure window and click on the left-leaning arrow

� Now you can select and double click on any object in the current plot to edit it.

� Double clicking on the selected object brings up a property editor window where you can select and modify the current properties of the object

Page 110: Matlab solved problems

Subplots

>> t=linspace(0,2*pi,10); y=sin(t); z=cos(t);

>> figure

>> subplot(2,1,1)

>> subplot(2,1,2)

>> subplot(2,1,1); plot(t,y)

>> subplot(2,1,2); plot(t,z)

Page 111: Matlab solved problems
Page 112: Matlab solved problems

Logarthmic plots

>> x=0:0.1:2*pi;

>>subplot(2,2,1)

>> semilogx(x,exp(-x));

>> grid

>> subplot(2,2,2)

>> semilogy(a,b);

>> grid

>> subplot(2,2,3)

>> loglog(x,exp(-x));

>> grid

Page 113: Matlab solved problems

Zoom in and zoom out

>> figure

>> plot(t,sin(t))

>> axis([0 2 -2 2])

Page 114: Matlab solved problems
Page 115: Matlab solved problems

Specialised plotting routines

>> stem(t,sin(t));

>> bar(t,sin(t))

>> a=[1 2 3 4]; stairs(a);

Page 116: Matlab solved problems

3-D plots

Page 117: Matlab solved problems

Simple 3-D plot

� Plot of a parametric space curve

>> t=linspace(0,1,100);

>> x=t; y=t; z=t.^3;

>> plot3(x,y,z); grid

Page 118: Matlab solved problems

View

>> t=linspace(0,6*pi,100);

>> x=cos(t); y=sin(t); z=t;

>> subplot(2,2,1); plot3(x,y,z);

>> subplot(2,2,2); plot3(x,y,z); view(0,90);

>> subplot(2,2,3); plot3(x,y,z); view(0,0);

>> subplot(2,2,4); plot3(x,y,z); view(90,0);

Page 119: Matlab solved problems

View (contd…)

Page 120: Matlab solved problems

Mesh plots

>> x=linspace(-3,3,50);

>> [X,Y]= meshgrid(x,y);

>> Z=X.*Y.*(X.^2-Y.^2)./(X.^2+Y.^2);

>> mesh(X,Y,Z);

>> figure(2)

Page 121: Matlab solved problems

Mesh plots(cont…)

Page 122: Matlab solved problems

Surface plots

>> u = -5 : 0.2 : 5;

>> [X,Y] = meshgrid(u,u);

>> Z=cos(X).*cos(Y).*exp(-sqrt(X.^2+Y.^2)/4);

>> surf(X,Y,Z)

Page 123: Matlab solved problems

Surface plots (contd…)

Page 124: Matlab solved problems

Handle Graphics

Page 125: Matlab solved problems

Handle Graphics Objects

� Handle Graphics is an object-oriented structure for creating, manipulating and displaying graphics

� Graphics in Matlab consist of objects

� Every graphics objects has:

– a unique identifier, called handle

– a set of characteristics, called properties

Page 126: Matlab solved problems

Getting object handles

There are two ways for getting object handles

• By creating handles explicitly at the object-creation level commands

• By using explicit handle return functions

Page 127: Matlab solved problems

Getting object handles

� By creating handles explicitly at the object-

creation level commands

>> hfig=figure

>> haxes=axes(‘position’,[0.1 0.1 0.4 0.4])

>> t=linspace(0,pi,10);

>> hL = line(t,sin(t))

>> hx1 = xlabel(‘Angle’)

Page 128: Matlab solved problems

� By using explicit handle return functions

>> gcf gets the handle of the current

figure

>> gca gets handle of current axes

>> gco returns the current object in the

current figure

Getting object handles

Page 129: Matlab solved problems

� Example

>> figure

>> axes

>> line([1 2 3 4],[1 2 3 4])

>> hfig = gcf

>> haxes = gca

Click on the line in figure

>>hL=gco

Getting object handles

Page 130: Matlab solved problems

Getting properties of objects

� The function ‘get’ is used to get a property

value of an object specified by its handle

� get(handle,’PropertyName’)

� The following command will get a list of all

property names and their current values of an

object with handle h

� get(h)

Page 131: Matlab solved problems

Getting properties of objects

� Example

>> h1=plot([ 1 2 3 4]);returns a line

object

>> get(h1)

>> get(h1,’type’)

>> get(h1,’linestyle’)

Page 132: Matlab solved problems

Setting properties of objects

� The properties of the objects can be set by

using ‘set’ command which has the following

command form

� Set(handle, ‘PropertyName’,Propertyvalue’)

� By using following command you can see the

the list of properties and their values

� Set(handle)

Page 133: Matlab solved problems

Setting properties of objects

� example

>> t=linspace(0,pi,50);

>> x=t.*sin(t);

>> hL=line(t,x);

Page 134: Matlab solved problems

Setting properties of objects

>> set(hL,’linestyle’,’--’);

Page 135: Matlab solved problems

Setting properties of objects

>> set(hL,’linewidth’,3,’marker’,’o’)

Page 136: Matlab solved problems

Setting properties of objects

>> yvec = get(hL,’ydata’);

>> yvec(15:20) = 0;

>> yvec(40:45) = 0;

>> set(hL, ’ydata’, yvec)

Page 137: Matlab solved problems

Creating subplots using axes command

>> hfig=figure

>> ha1=axes(‘position’,[0.1 0.5 0.3 0.3])

>> line([1 2 3 4],[1 2 3 4])

>> ha2=axes(‘position’[0.5 0.5 0.3 0.3])

>> line([1 2 3 4],[ 1 10 100 1000])

>> ha3=axes(‘position’,[0.1 0.1 0.3 0.3])

>> line([1 2 3 4],[0.1 0.2 0.3 0.4])

>> ha4=axes(‘position’,[0.5 0.1 0.3 0.3])

>> line([1 2 3 4],[10 10 10 10])