solution strategies 1. programming with matlab

121
Solution Strategies 1. PROGRAMMING WITH MATLAB

Upload: sheri

Post on 20-Jan-2016

54 views

Category:

Documents


0 download

DESCRIPTION

Solution Strategies 1. PROGRAMMING WITH MATLAB. MATLAB Fundamentals. MATLAB. Matrix Laboratory. Problem-Solving Methodology. State the problem clearly Describe the Input/Output (I/O) Work the problem by hand Algorithm - Numerical Method Develop a MATLAB Solution Debugging and Testing - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Solution Strategies 1. PROGRAMMING WITH MATLAB

Solution Strategies

1. PROGRAMMING WITH MATLAB

Page 2: Solution Strategies 1. PROGRAMMING WITH MATLAB

MATLAB MATLAB FundamentalsFundamentals

Page 3: Solution Strategies 1. PROGRAMMING WITH MATLAB

MATLABMATLAB

Matrix LaboratoryMatrix Laboratory

Page 4: Solution Strategies 1. PROGRAMMING WITH MATLAB

Problem-Solving MethodologyProblem-Solving Methodology

State the problem clearly Describe the Input/Output (I/O) Work the problem by hand Algorithm - Numerical Method Develop a MATLAB Solution Debugging and Testing Documentation

Page 5: Solution Strategies 1. PROGRAMMING WITH MATLAB

Why MATLAB?Why MATLAB? Industry standard software application Wealth of built-in functions and libraries Toolboxes (add-on software modules) –

optimization, neural network, image and signal processing, control systems design, fuzzy logic, etc.

Has own structured programming language Ease of application and testing (pre- and post-

processing without lots of programming and formatting)

Platform independent

Page 6: Solution Strategies 1. PROGRAMMING WITH MATLAB

What is MATLAB?What is MATLAB? Both a computer programming language and a software Began as a set of tools to solve linear algebraic

equations. Has grown to a complete scientific programming suite

Interpretive programming language: Read script files and perform operations; generally not compiled

Enhanced calculator / spreadsheet – much more flexible

Complete visualization package and post-processing analysis suite

Page 7: Solution Strategies 1. PROGRAMMING WITH MATLAB

MATLABMATLAB MATLAB is a numerical analysis system

Can write “programs”, but they are not formally compiled

Should still use structured programming

Should still use comments

Comments are indicated by “%” at the beginning of the line

Page 8: Solution Strategies 1. PROGRAMMING WITH MATLAB

MATLAB WindowsMATLAB Windows Command Window

-- enter commands and data

-- print results Graphics Window

-- display plots and graphs Edit Window

-- create and modify m-files

Page 9: Solution Strategies 1. PROGRAMMING WITH MATLAB

Managing MATLAB EnvironmentManaging MATLAB Environment who or whos -- See the current runtime environment clear -- remove all variables from memory clc -- clear the command window clf -- clear the graphics window save -- save the workspace environment load -- restore workspace from a disk file abort -- CTRL-C help -- help “command”

Really good “help” command

Page 10: Solution Strategies 1. PROGRAMMING WITH MATLAB

MATLAB SyntaxMATLAB Syntax No complicated rules

Perhaps the most important thing to remember is semicolons (;) at the end of a line to suppress output

diary “filename” saves a text record of session

diary off turns it off

Page 11: Solution Strategies 1. PROGRAMMING WITH MATLAB

MATLABMATLAB MATLAB’s basic component is a Vector or Matrix

Even single value variables (Scalars)

All operations are optimized for vector use

Loops run slower in MATLAB than in Fortran (not a vector operation)

“size” command gives size of the matrix

Page 12: Solution Strategies 1. PROGRAMMING WITH MATLAB

Scalars, Vectors, MatricesScalars, Vectors, Matrices MATLAB treat variables as “matrices” Matrix (m n) - a set of numbers arranged in rows (m) and columns

(n) Scalar: 1 1 matrix Row Vector: 1 n matrix Column Vector: m 1 matrix

227150

592342

5231

217

32

025

21732025 275

..

..D

.

.

.

'BC

...B.A

Page 13: Solution Strategies 1. PROGRAMMING WITH MATLAB

>> pians = 3.1416

>> size(pi)ans = 1 1

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

>> size(a)ans = 2 3

a=14163.pi

654

321a

Page 14: Solution Strategies 1. PROGRAMMING WITH MATLAB

Complex variablesComplex variables MATLAB handles complex arithmetic automatically No need to compute real and imaginary parts

separately The unit imaginary number i = is preassigned1

» x=5+2*ix = 5.0000 + 2.0000i» y=5*x+3y = 28.0000 +10.0000i

Page 15: Solution Strategies 1. PROGRAMMING WITH MATLAB

» x=3+5-0.2x = 7.8000» y=3*x^2+5y = 187.5200» z=x*sqrt(y)z = 106.8116» A=[1 2 3; 4 5 6]A = 1 2 3 4 5 6» b=[3;2;5]b = 3 2 5» C=A*bC = 22 52

» who

Your variables are:

A b y C x z

» whos Name Size Bytes Class

A 2x3 48 double array C 2x1 16 double array b 3x1 24 double array x 1x1 8 double array y 1x1 8 double array z 1x1 8 double array

» save

Saving to: matlab.mat

» save matrix1

MATLAB ExampleMATLAB Example

default filename

filename “matrix1”

Page 16: Solution Strategies 1. PROGRAMMING WITH MATLAB

Data typesData types

All numbers are double precision

Text is stored as arrays of characters

You don’t have to declare the type of data (defined when running)

MATLAB is case-sensitive!!!MATLAB is case-sensitive!!!

Page 17: Solution Strategies 1. PROGRAMMING WITH MATLAB

Variable NamesVariable Names Usually, the name is identified with the problem Variable names may consist of up to 31 characters Variable names may be alphabetic, digits, and the

underscore character ( _ ) Variable names must start with a letter

ABC, A1, C56, CVEN_302

day, year, iteration, max

time, velocity, distance, area, density, pressure

Time, TIME, time (case sensitive!!)(case sensitive!!)

Page 18: Solution Strategies 1. PROGRAMMING WITH MATLAB

Initializing VariablesInitializing Variables Explicitly list the values reads from a data file uses the colon (:) operator reads from the keyboard

A = [1; 3; 5; 10]; B = [1 3 5; -6 4 -1]

C = [2 3 5 1; 0 1 … (continuation)

1 -2; 3 5 1 -3]

E = [A; 1; A]; F = [C(2,3); A]

Page 19: Solution Strategies 1. PROGRAMMING WITH MATLAB

Matrix ConcatenationMatrix Concatenation 497y ; 321x

497321yxz

321497

497321 xy ;y xv

497

321y ;x u

Page 20: Solution Strategies 1. PROGRAMMING WITH MATLAB

41

12

10

52

F

410

123

101

521

C

Colon OperatorColon Operator Creating new matrices from an existing matrix

C = [1,2,5; -1,0,1; 3,2,-1; 0,1,4]

F = C(:, 2:3) = [2,5; 0,1; 2,-1; 1,4]

Page 21: Solution Strategies 1. PROGRAMMING WITH MATLAB

123

101E

410

123

101

521

C

Colon OperatorColon Operator Creating new matrices from an existing matrix

C = [1,2,5; -1,0,1; 3,2,-1; 0,1,4]

E = C(2:3,:) = [-1 0 1; 3 2 -1]

Page 22: Solution Strategies 1. PROGRAMMING WITH MATLAB

Colon OperatorColon Operator Creating new matrices from an existing matrix

C = [1,2,5; -1,0,1; 3,2,-1; 0,1,4]

G = C(3:4,1:2) = [3,2; 0,1]

10

23G

410

123

101

521

C

Page 23: Solution Strategies 1. PROGRAMMING WITH MATLAB

Colon OperatorColon Operator Variable_name = a:step:b

time = 0.0:0.5:2.5

time = [0.0, 0.5, 1.0, 1.5, 2.0, 2.5]

Negative increment

values = 10:-1:2

values = [10, 9, 8, 7, 6, 5, 4, 3, 2]

Page 24: Solution Strategies 1. PROGRAMMING WITH MATLAB

linspace Function linspace Function linspace(x1, x2) gives 100 evenly spaced values

between x1 and x2

x = linspace(x1,x2) linspace(a,b,n) generate n equally spaced points

between a and b

x = linspace(a,b,n)

» linspace(0,2,11)

ans =

Columns 1 through 7

0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000

Columns 8 through 11

1.4000 1.6000 1.8000 2.0000

Page 25: Solution Strategies 1. PROGRAMMING WITH MATLAB

logspace Functionlogspace Function logspace(a,b,n) generates a logarithmically

equally spaced row vector

x = logspace(a,b,n) logspace(a,b) generates 50 logarithmically

equally spaced points

x = logspace(a,b)

» logspace(-4,2,7)

ans =

0.0001 0.0010 0.0100 0.1000 1.0000 10.0000 100.0000

Page 26: Solution Strategies 1. PROGRAMMING WITH MATLAB

Special MatricesSpecial Matrices

1111

1111ones(2,4)

111

111

111

)3(ones

00

00

00

zeros(3,2)

100

010

001

)3(eye

Page 27: Solution Strategies 1. PROGRAMMING WITH MATLAB

bababa

baa

bba

bababaab

aa

baab

; nsubtractio and Addition

\ \ division Left\

/ ;* ; division and tionMultiplica/ *

Negation

^ tionExponentia^

Form MATLABOperation Symbol

Scalar Arithmetic OperationsScalar Arithmetic Operations

Example: x = (a + b*c)/d^2

count = count + 1

(Matrix inverse)

In order of priority

Page 28: Solution Strategies 1. PROGRAMMING WITH MATLAB

Order of Precedence of Order of Precedence of Arithmetic OperationsArithmetic Operations

1. Parentheses, starting with the innermost pair

2. Exponentiation, from left to right

3. Multiplication and division with equal precedence, from left to right

4. Addition and subtraction with equal precedence, from left to right

Examples: factor = 1 + b/v + c/v^2

slope = (y2 - y1)/(x2 - x1)

loss = f * length/dia * (1/2 * rho * v^2)

func = 1 + 0.5*(3*x^4 + (x + 2/x)^2)

Page 29: Solution Strategies 1. PROGRAMMING WITH MATLAB

Order of Precedence of Order of Precedence of Arithmetic OperationsArithmetic Operations

The priority order can be overridden with parentheses

» y = -7.3^2

y =

-53.2900

» y=(-7.3)^2

y =

53.2900

» a=3; b=5; c=2;

» s1 = a-b*c

s1 =

-7

» s2=(a-b)*c

s2 =

-4

Exponentiation has higher priority than negation

Multiplication has higher priority than subtraction

Page 30: Solution Strategies 1. PROGRAMMING WITH MATLAB

Array OperationsArray Operations An array operation is performed

element-by-element

B(5);* A(5) C(5)B(4);* A(4) C(4)B(3);* A(3) C(3)B(2);* A(2) C(2)B(1);* A(1) C(1)

MATLAB: C = A.*B;

Page 31: Solution Strategies 1. PROGRAMMING WITH MATLAB

] ,[]^ ,^[] ,[].^ ,[

] ,[]^ ,^[] ,[.^

] ,[]^ ,^[].^ ,[.^tionexponentia Array.^

].,.[]\ ,\[] ,[\]. ,[division left Array\.

].,.[]/ ,/[] ,/[]. ,[division right Array./

] ,[] ,[*]. ,[tionmultiplica Array*.

] ,[] ,[] ,[nsubtractio Array-

] ,[] ,[] ,[addition Array

] ,[] ,[nsubtractio array-Scalar-

] ,[] ,[addition array-Scalar

ExampleFormOperationSymbol

812543254235

24395323523

8643234324BA

71430667257835873A.\B

4001375057835873A./B

1863263A.*B

343864BA

9123864BA

32638bA

97364bA

Element-by-Element OperationsElement-by-Element Operations

Page 32: Solution Strategies 1. PROGRAMMING WITH MATLAB

But a*b gives an error (undefined) because dimensions are incorrect. Need to use .*

Vector and Matrix operationsVector and Matrix operations

11

7

3

ba

6

4

2

b

5

3

1

a

30

12

2

6*5

4*3

2*1

b.*a

Page 33: Solution Strategies 1. PROGRAMMING WITH MATLAB

Vectorized Matrix OperationsVectorized Matrix Operations

9243813B).^3(F

15122783.^AE

5.06.175.02B/.AD

240122B.*AC

2541B

1832A

Page 34: Solution Strategies 1. PROGRAMMING WITH MATLAB

Array Operations for Array Operations for m m n Matrices n Matrices

510515

2015105

2015105

5.*AB

1213

4321

4321

1 - 21 3-4;:-1:1 -4;:1A

18127

642781

642781

3.^AC

Page 35: Solution Strategies 1. PROGRAMMING WITH MATLAB

Matrix TransposeMatrix Transpose

4)2(3)1)(2()3)(4(

2-

1

3

324'y*x

639

426

8412

213

3

2

4

y'*x

2-

1

3

y' ;

3

2

4

'x

213y ; 324x

Page 36: Solution Strategies 1. PROGRAMMING WITH MATLAB

Built-in FunctionsBuilt-in Functions All the standard operators +, , *, /, ^

Sqrt( ), abs( ), sin( ), cos( ), exp( ), tanh( ), acos( ), log( ), log10( ), etc.

These operators are vectorized

exp(4)

exp(5)

exp(3)

exp(a) ;

sin(4)

sin(5)

sin(3)

)asin( ;

4

5

3

a

Page 37: Solution Strategies 1. PROGRAMMING WITH MATLAB

Built-in FunctionsBuilt-in Functions Certain functions, such as exponential and square

root, have matrix definition also Use “help expm” and “help sqrtm” for details

>> A = [1 3 5; 2 4 6; -3 2 -1]A = 1 3 5 2 4 6 -3 2 -1>> B = sqrt(A)B = 1.0000 1.7321 2.2361 1.4142 2.0000 2.4495 0 + 1.7321i 1.4142 0 + 1.0000i>> C = sqrtm(A)C = 2.1045 + 0.0000i 0.1536 - 0.0000i 1.8023 + 0.0000i 1.7141 - 0.0000i 1.1473 + 0.0000i 1.7446 + 0.0000i -2.0484 + 0.0000i 1.3874 + 0.0000i 0.5210 - 0.0000i

(element by element)

(C*C = A)

Page 38: Solution Strategies 1. PROGRAMMING WITH MATLAB

MATLAB GraphicsMATLAB Graphics One of the best things about MATLAB is

interactive graphics “plot” is the one you will be using most often Many other 3D plotting functions -- plot3,

mesh, surfc, etc. Use “help plot” for plotting options To get a new figure, use “figure” logarithmic plots available using semilogx,

semilogy and loglog

Page 39: Solution Strategies 1. PROGRAMMING WITH MATLAB

plot(x,y) defaults to a blue line

plot(x,y,’ro’) uses red circles

plot(x,y,’g*’) uses green asterisks

If you want to put two plots on the same graph, use “hold on”

plot(a,b,’r:’) (red dotted line)hold onplot(a,c,’ko’) (black circles)

Plotting CommandsPlotting Commands

Page 40: Solution Strategies 1. PROGRAMMING WITH MATLAB

Bungee JumperBungee Jumper

You are asked to plot the velocity of a bungee jumper as a function of time during the free-fall part of the jump

Page 41: Solution Strategies 1. PROGRAMMING WITH MATLAB

Newton’s Second Law

Exact (Analytic) SolutionExact (Analytic) Solution

2d

2d

vm

cg

dt

dv

vcmgdt

dvm

Exact Solution

t

m

gc

c

mgtv d

d

tanh)(

Page 42: Solution Strategies 1. PROGRAMMING WITH MATLAB

Free-Falling Bungee JumperFree-Falling Bungee Jumper Use built-in functions sqrt & tanh

>> g = 9.81; m = 75.2; cd = 0.24;

>> t = 0:1:20t =

Columns 1 through 15

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Columns 16 through 21

15 16 17 18 19 20

>> v=sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t)v =

Columns 1 through 9

0 9.7089 18.8400 26.9454 33.7794 39.2956 43.5937 46.8514 49.2692

Columns 10 through 18

51.0358 52.3119 53.2262 53.8772 54.3389 54.6653 54.8956 55.0579 55.1720

Columns 19 through 21

55.2523 55.3087 55.3484

Page 43: Solution Strategies 1. PROGRAMMING WITH MATLAB

Plot the velocity versus time curve>> plot(t,v); grid on

>> title('Free Falling Bungee Jumper')

>> xlabel('time t (second)'); ylabel('velocity v (m/s)')

>> print –djpeg bungee.jpg

How to change line thickness, line color, font size, symbols,

marker size, etc.?

Page 44: Solution Strategies 1. PROGRAMMING WITH MATLAB

Color, Symbols, and Line TypesColor, Symbols, and Line Types Use “help plot” to find available Specifiers

b blue . point - solid

g green o circle : dotted

r red x x-mark -. dashdot

c cyan + plus -- dashed

m magenta * star

y yellow s square

k black d diamond

v triangle (down)

^ triangle (up)

< triangle (left)

> triangle (right)

p pentagram

h hexagram

Colors Symbols Line Types

Page 45: Solution Strategies 1. PROGRAMMING WITH MATLAB

» x=0:0.1:5;» y=2*x.^3-12*x.^2+8*x-6;» H=plot(x,y,'b',x,y,'r*');» set(H,'LineWidth',3,'MarkerSize',12)» xlabel('x'); ylabel('y');» title('f(x)=2x^3-12x^2+8x-6');» print -djpeg075 poly.jpg

element-by-element operations x.^n

Adjust line thickness, font size, marker size, etc.

Page 46: Solution Strategies 1. PROGRAMMING WITH MATLAB

» x=0:0.1:10;» y=sin(2.*pi*x)+cos(pi*x);» H1=plot(x,y,'m'); set(H1,'LineWidth',3); hold on;» H2=plot(x,y,'bO'); set(H2,'LineWidth',3,'MarkerSize',10); hold off;» xlabel('x'); ylabel('y');» title('y = sin(2\pix)+cos(\pix)');» print -djpeg075 function.jpg

Page 47: Solution Strategies 1. PROGRAMMING WITH MATLAB

» x=0:0.1:3; y1=exp(-x); y2=sqrt(x);» H=plot(x,y1,'b-',x,y2,'r--');» set(H,'LineWidth',3)» xlabel('x'); ylabel('y'); title('MATLAB Plots');» H1=text(1.8,0.2,'exp(-x)'); set(H1,'FontSize',18);» H2=text(1.8,1.3,'sqrt(x)'); set(H2,'FontSize',18);

Page 48: Solution Strategies 1. PROGRAMMING WITH MATLAB

plot (x, y) plot(x1, y1, x2, y2)

plot (x, y, ‘color symbol line style’)

» x = linspace(0, 2*pi);» y = sin (2.*x);» z = cos (0.5*x);» plot (x, y)» plot (x, y, x, z)» figure (2)» plot (x, y, 'r o -'); grid on» hold on» plot (x, z, 'b * :')

(red, circle, solid line)

(blue, star, dotted line)

figure or figure (#) : open a figure

Plotting CommandsPlotting Commands

Page 49: Solution Strategies 1. PROGRAMMING WITH MATLAB

» xlabel (Time)» ylabel (Temperature)» title (Temperature Record : 1900 - 2000)» text (17, 120, Record High )» text (85, -40, Record Low )» axis ([0 100 -50 140])» hold off

xlabel ( label ) ylabel ( label )title ( title of the plot )text ( x_location, y_location, text )axis ( [ x_min x_max y_min y_max ] )

- text string

Graphics CommandsGraphics Commands Axis, Labels, and Title

Page 50: Solution Strategies 1. PROGRAMMING WITH MATLAB

Programming with Programming with MATLABMATLAB

Page 51: Solution Strategies 1. PROGRAMMING WITH MATLAB

Newton’s Second Law

Euler’s method

To obtain good accuracy, it is necessary to use many small steps

Extremely laborious and time-consuming to implement by hand

Numerical SolutionNumerical Solution

2d2d v

m

cg

dt

dvvcmg

dt

dvm

)()()()( i1i2

id

i1i tttvm

cgtvtv

Page 52: Solution Strategies 1. PROGRAMMING WITH MATLAB

M-Files: Scripts and FunctionsM-Files: Scripts and Functions You can create and save code in text files using

MATLAB Editor/Debugger or other text editors (called m-files since the ending must be .m)

M-file is an ASCII text file similar to FORTRAN or C source codes ( computer programs)

A script can be executed by typing the file name, or using the “run” command

Difference between scripts and functionsDifference between scripts and functions

Scripts share variables with the main workspace

Functions do not

Page 53: Solution Strategies 1. PROGRAMMING WITH MATLAB

Script FilesScript Files

Script file – a series of MATLAB commands saved on a file, can be executed by

typing the file name in the Command Window invoking the menu selections in the Edit Window:

Debug, Run

Create a script file using menu selection:

File, New, M-file

Page 54: Solution Strategies 1. PROGRAMMING WITH MATLAB

Compute the velocity of a free-falling bungee jumper at a specific time

Open the editor with: File, New, M-file

Save the file as bungee_jumper.m Type bungee_jumper in command window

Script File – Bungee JumperScript File – Bungee Jumper

g = 9.81; m = 68.1 ; t = 20; cd = 0.25;

v = sqrt(g*m/cd) * tanh(sqrt(g*cd/m)*t)

» bungee_jumper

v =

51.6416

Type the name of the script file

Page 55: Solution Strategies 1. PROGRAMMING WITH MATLAB

Function FileFunction File Function file: M-file that starts with the word function

Function can accept input arguments and return outputs

Analogous to user-defined functions in programming languages such as Fortran, C, …

Save the function file as function_name.m

User help function in command window for additional information

Page 56: Solution Strategies 1. PROGRAMMING WITH MATLAB

FunctionsFunctions One variable

function y = function_name(input arguments) More than one output variables

function [y, z] = function_name(input arguments)

Examples: function y = my_func (x)

y = x^3 + 3*x^2 -5 * x +2 ;

function area = integral (f, a, b)

ya = feval (f, a); yb = feval(f, b);

area = (b-a)*(ya+yb)/2;

Page 57: Solution Strategies 1. PROGRAMMING WITH MATLAB

function t = trap_ex(a, b)t = (b - a) * (a^(-3) + b^(-3)) / 2;

Approximate the integral of f(x) = 1/x3

using basic trapezoid rule

Filename: trap_ex.m

» y = trap_ex (1, 3)y = 1.0370

)(

33

b

a 3 b

1

a

1

2

abdx

x

1y

a b

Page 58: Solution Strategies 1. PROGRAMMING WITH MATLAB

Script File for IntegralScript File for Integral

1. Save integral (f, a, b) in script file integral.m

2. Save function my_func(x) in script my_func.m

3. Run script file

>> area = integral(‘my_func’, 1, 10)

>> area = integral(‘my_func’, 3, 6)

)b(f)a(f2

abdx)x(f

b

a

area

a b

f(x)

x

Page 59: Solution Strategies 1. PROGRAMMING WITH MATLAB

feval - evaluate function specified by string

function y = my_func(x)% function 1/x^3y = x.^(-3);

function q = basic_trap(f, a, b)% basic trapezoid rule ya = feval(f, a);yb = feval(f, b);q = (b - a)* (ya + yb)/2;

my_func.m

basic_trap.m

» y = basic_trap ('my_func', 1,3)y = 1.0370

Page 60: Solution Strategies 1. PROGRAMMING WITH MATLAB

Composite Trapezoid RuleComposite Trapezoid Rule

function I = Trap(f, a, b, n)% find the integral of f using

% composite trapezoid rule

h=(b - a)/n; S = feval(f, a);

for i = 1 : n-1

x(i) = a + h*i;

S = S + 2*feval(f, x(i));

end

S = S + feval(f, b); I =h*S/2;

Filename: comp_trap.m

x

f

a b

Page 61: Solution Strategies 1. PROGRAMMING WITH MATLAB

Composite Trapezoid RuleComposite Trapezoid Rule» I=comp_trap('my_func',1,3,1)I = 1.0370» I=comp_trap('my_func',1,3,2)I = 0.6435» I=comp_trap('my_func',1,3,4)I = 0.5019» I=comp_trap('my_func',1,3,8)I = 0.4596» I=comp_trap('my_func',1,3,16)I = 0.4483» I=comp_trap('my_func',1,3,100)I = 0.4445» I=comp_trap('my_func',1,3,500)I = 0.4444» I=comp_trap('my_func',1,3,1000)I = 0.4444

one segment

two segments

four segments

eight segments

16 segments

100 segments

500 segments

1000 segments

Page 62: Solution Strategies 1. PROGRAMMING WITH MATLAB

Function File – Bungee JumperFunction File – Bungee Jumper Create a function file freefallvel.m

function velocity = freefallvel(m,cd,t)

% freefallvel(m,cd,t) computes the free-fall velocity (m/s)

% of an object with second-order drag

% input:

% m = mass (kg)

% cd = second-order drag coefficient (kg/m)

% t = time (sec)

% output:

% velocity = downward velocity (m/s)

g = 9.81; % acceleration of gravity

velocity = sqrt(g*m/cd) * tanh(sqrt(g*cd/m)*t);

Page 63: Solution Strategies 1. PROGRAMMING WITH MATLAB

Function File – Bungee JumperFunction File – Bungee Jumper Run freefallvel.m Input: mass (m), drag coef. (cd), and time (t)

>> vel1 = freefallvel(100,0.25,8)

vel1 =

53.1878

>> vel2 = freefallvel(100,0.25,20)

vel2 =

62.4038

>> vel3 = freefallvel(70,0.25,20)

vel3 =

52.3512

Page 64: Solution Strategies 1. PROGRAMMING WITH MATLAB

Function FileFunction File To invoke the help comments Type help freefallvel

>> help freefallvel

freefallvel(m,cd,t) computes the free-fall velocity (m/s)

of an object with second-order drag

input:

m = mass (kg)

cd = second-order drag coefficient (kg/m)

t = time (sec)

output:

velocity = downward velocity (m/s)

Page 65: Solution Strategies 1. PROGRAMMING WITH MATLAB

Function M-FilesFunction M-Files Function M-file can return more than one result Example – mean and standard deviation of a vector

Textbook refers function M-files as simply M-files

function [mean, stdev] = stats(x)

% calculate the mean and standard deviation of a vector x

n = length(x);

mean = sum(x)/n;

stdev = sqrt(sum((x-mean).^2/(n-1)));

>> x=[1.5 3.7 5.4 2.6 0.9 2.8 5.2 4.9 6.3 3.5];

>> [m,s] = stats(x)m = 3.6800s = 1.7662

Page 66: Solution Strategies 1. PROGRAMMING WITH MATLAB

Data FilesData Files MAT Files -- memory efficient binary format -- preferable for internal use by MATLAB program

ASCII files -- in ASCII characters -- useful if the data is to be shared (imported or

exported to other programs)

Page 67: Solution Strategies 1. PROGRAMMING WITH MATLAB

MATLAB InputMATLAB Input To read files in

if the file is an ascii table, use “load”

if the file is ascii but not a table, file I/O needs “fopen” and “fclose”

Reading in data from file using fopen depends on type of data (binary or text)

Default data type is “binary”

Page 68: Solution Strategies 1. PROGRAMMING WITH MATLAB

Save FilesSave Files 8-digit text format (variable list) save <fname> <vlist> - ascii 16-digit text format save <fname> <vlist> - double Delimit elements with tabs save <fname> <vlist> - double - tabs

Example: Vel = [1 3 5; -6 2 -3]

save velocity.dat Vel -ascii

1.0000000e+000 3.0000000e+000 5.0000000e+000 -6.0000000e+000 2.0000000e+000 -3.0000000e+000

Page 69: Solution Strategies 1. PROGRAMMING WITH MATLAB

Load FilesLoad Files Read velocity into a matrix “velocity.dat”

>> load velocity.dat

>> velocity

velocity = 1 3 5

-6 2 -3

1.0000000e+000 3.0000000e+000 5.0000000e+000 -6.0000000e+000 2.0000000e+000 -3.0000000e+000

Page 70: Solution Strategies 1. PROGRAMMING WITH MATLAB

Create an ASCII file temperature.dat

read “Time” and “Temperature” from temperature.dat >> load temperature.dat >> temperature

% Time Temperature 0.0 75.0 0.5 73.2 1.0 72.6 1.5 74.8 2.0 79.3 2.5 83.2

Load FilesLoad Files

Note: temperature is a 62 matrix

Page 71: Solution Strategies 1. PROGRAMMING WITH MATLAB

Matlab automatically prints the results of any calculation (unless suppressed by semicolon ;)

Use “disp” to print out text to screen

disp (x.*y)

disp (´Temperature =´)

sprintf - display combination

Make a string to print to the screen

output = sprintf(‘Pi is equal to %f ’, pi)

MATLAB OutputMATLAB Output

Page 72: Solution Strategies 1. PROGRAMMING WITH MATLAB

Formatted OutputFormatted Outputfprintf (format-string, var, ….)

%[flags] [width] [.precision] type

Examples of “type” fields

%d display in integer format

%e display in lowercase exponential notation

%E display in uppercase exponential notation

%f display in fixed point or decimal notation

%g display using %e or %f, depending on which is shorter

%% display “%”

Page 73: Solution Strategies 1. PROGRAMMING WITH MATLAB

Numeric Display FormatNumeric Display Format

blank, ,format

00e897931415926535.3decimals 15e longformat

00e1416.3decimals 4eshort format

14.3decimals 2bankformat

89791415926535.3decimals 14longformat

1416.3defaultshortformat

ExampleDisplayCommand MATLAB

x = [5 -2 3 0 1 -2]; format +

x = [+ + + ] (+/ sign only)

Page 74: Solution Strategies 1. PROGRAMMING WITH MATLAB

fprintf( ) of Scalarfprintf( ) of Scalartemp = 98.6;

fprintf(‘The temperature is %8.1f degrees F.\n’, temp);

The temperature is 98.6 degrees F.

fprintf(‘The temperature is %8.3e degrees F.\n’, temp);

The temperature is 9.860e+001 degrees F.

fprintf(‘The temperature is %08.2f degrees F.\n’, temp);

The temperature is 00098.60 degrees F.

Page 75: Solution Strategies 1. PROGRAMMING WITH MATLAB

fprintf( ) of fprintf( ) of MatricesMatrices

Score = [1 2 3 4; 75 88 102 93; 99 84 95 105]

Game 1 score: Houston: 75 Dallas: 99

Game 2 score: Houston: 88 Dallas: 84

Game 3 score: Houston: 102 Dallas: 95

Game 4 score: Houston: 93 Dallas: 105

fprintf(‘Game %1.0f score: Houston: %3.0f Dallas: %3.0f \n’,Score)

fprintf control codes

\n Start new line \t Tab

Page 76: Solution Strategies 1. PROGRAMMING WITH MATLAB

Interactive input FunctionInteractive input Function The input function allows you to prompt the user

for values directly from the command window

Enter either “value” or “string”

n = input(‘promptstring’)

function [name, sid, phone, email] = register

name = input('Enter your name: ','s');

sid = input('Enter your student ID: ');

phone = input('Enter your Telphone number: ','s');

email = input('Enter your Email address: ','s');

string

value

Page 77: Solution Strategies 1. PROGRAMMING WITH MATLAB

Interactive input FunctionInteractive input Function>> [name,sid,phone,email] = register

Enter your name: John Doe

Enter your student ID: 12345678

Enter your Telphone number: 987-6543

Enter your Email address: [email protected]

name =

John Doe

sid =

12345678

phone =

987-6543

email =

[email protected]

Page 78: Solution Strategies 1. PROGRAMMING WITH MATLAB

Interactive M-FileInteractive M-File An interactive M-file for free-falling bungee jumper

Use input and disp functions for input/output

function velocity = freefallinteract

% freefallinteract()

% compute the free-fall velocity of a bungee jumper

% input: interactive from command window

% output: velocity = downward velocity (m/s)

g=9.81; % acceleration of gravity

m = input('Mass (kg): ');

cd = input('Drag coefficient (kg/m): ');

t = input('Time (s): ');

disp(' ')

Disp(' Time (sec) Velocity (m/s)')

vel = sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t);

disp([t; vel]’)

Page 79: Solution Strategies 1. PROGRAMMING WITH MATLAB

Interactive M-FileInteractive M-File>> freefallinteractMass (kg): 68.1Drag coefficient (kg/m): 0.25Time (s): 0:1:20 Time (sec) Velocity (m/s) 0 0 1.00000000000000 9.69390882443538 2.00000000000000 18.72918884569727 3.00000000000000 26.61481920987979 4.00000000000000 33.11182503524822 5.00000000000000 38.21539929282603 6.00000000000000 42.07622705649872 7.00000000000000 44.91452141487036 8.00000000000000 46.95749512898513 9.00000000000000 48.40575663656585 10.00000000000000 49.42136691869133 11.00000000000000 50.12817751224155 12.00000000000000 50.61747935192882 13.00000000000000 50.95496525479742 14.00000000000000 51.18714999440651 15.00000000000000 51.34661085699085 16.00000000000000 51.45599493149866 17.00000000000000 51.53096657108546 18.00000000000000 51.58232303937885 19.00000000000000 51.61748925270473 20.00000000000000 51.64156286339497

Page 80: Solution Strategies 1. PROGRAMMING WITH MATLAB

Common Program StructuresCommon Program Structures

Sequence Selection Repetition

Page 81: Solution Strategies 1. PROGRAMMING WITH MATLAB

Structured ProgrammingStructured ProgrammingModular Design Subroutines (function M-files) called by a main

program

Top-Down Design a systematic development process that begins with

the most general statement of a program’s objective and then successively divides it into more detailed segments

Structured Programming deals with how the actual code is developed so

that it is easy to understand, correct, and modify

Page 82: Solution Strategies 1. PROGRAMMING WITH MATLAB

The hierarchy of flowcharts dealing with a student’s GPA

•Modular design

•Top-down design

•Structural Programming

Page 83: Solution Strategies 1. PROGRAMMING WITH MATLAB

Structured ProgrammingStructured Programming

The ideal style of programming is StructuredStructured or ModularModular programming

Break down a large goal into smaller tasks Develop a module for each task A module has a single entrance and exit Modules can be used repeatedly A subroutinesubroutine (function M-file)(function M-file) may contain several

modules

Page 84: Solution Strategies 1. PROGRAMMING WITH MATLAB

A Structured Program for A Structured Program for Building an Apartment ComplexBuilding an Apartment Complex

• Excavation• Foundation• Framing subroutine - floor 1• Framing subroutine - floor 2• One-bedroom subroutine• Two-bedroom subroutine• Kitchen subroutine• Bathroom subroutine• etc.

Excavation routine

Foundation routine

Framing routine

bedroom routine

Page 85: Solution Strategies 1. PROGRAMMING WITH MATLAB

Framing routineFraming routine• measure wood• cut wood• assemble pieces• put frame in place• attach frame

Each of these mayalso have subroutines

Modular DesignModular Design

Subroutines (Function M-files) called by a main program

Page 86: Solution Strategies 1. PROGRAMMING WITH MATLAB

Algorithm DesignAlgorithm Design

The sequence of logical steps required to

perform a specific task (solve a problem)

Each step must be deterministic The process must always end after a finite

number of steps An algorithm cannot be open-ended The algorithm must be general enough to deal

with any contingency

Page 87: Solution Strategies 1. PROGRAMMING WITH MATLAB

Structured ProgrammingStructured Programming

Sequential paths Sequence – all instructions (statements) are

executed sequentially from top to bottom * A strict sequence is highly limiting

Non-sequential paths Decisions (Selection) – if, else, elseif Loops (Repetition) – for, while, break

Page 88: Solution Strategies 1. PROGRAMMING WITH MATLAB

Selection Selection ((IFIF)) Statements Statements The most common form of selection

structure is simple if statement The if statement will have a condition

associated with it The condition is typically a logical

expression that must be evaluated as either “true” or “false”

The outcome of the evaluation will determine the next step performed

Page 89: Solution Strategies 1. PROGRAMMING WITH MATLAB

Logical IF StatementsLogical IF Statements If (condition) executable_statements

end

-1 1x

1

y

if (x < = -1.0 | x > = 1.0) y = 0.endif (x > -1.0 & x < 0.) y = 1. + xendif (x > = 0. & x < 1.0) y = 1.- xend

Page 90: Solution Strategies 1. PROGRAMMING WITH MATLAB

Relation OperatorsRelation Operators

MATLAB == ~= < <= > >= & | ~

Interpretation is equal to is not equal to is less than is less than or equal to is greater than is greater than or equal to and, true if both are true or, true if either one is true not

Page 91: Solution Strategies 1. PROGRAMMING WITH MATLAB

Logical ConditionsLogical Conditions ~ (not) – logical negation of an expression ~ expression If the expression is true, the result is false.

Conversely, if the expression is false, the result is true.

& (and) – logical conjunction on two expressions

expression1 & expression2

If both expressions are true, the result is true. If either or both expressions are false, the result is false.

| (or) – logical disjunction on two expressions

expression1 | expression2

If either or both expressions are true, the result is true

Page 92: Solution Strategies 1. PROGRAMMING WITH MATLAB

Logical OperatorsLogical Operators 0 - 1 matrix 0: false ; 1: True

011ans cb | ba

001ans cb & ba

111ans b~a

011ans ba

234c 153b 642a

Page 93: Solution Strategies 1. PROGRAMMING WITH MATLAB

True Table for Logical OperatorsTrue Table for Logical Operators Order of priority of logical operators

x y ~x x&y x|y

T T F T T

T F F F T

F T T F F

F F T F F

Highest Lowest

Page 94: Solution Strategies 1. PROGRAMMING WITH MATLAB

Example of a Complex DecisionExample of a Complex Decision

If a=-1, b=2, x=1, and y=‘b’, evaluate

a * b > 0 & b == 2 & x > 7 | ~(y > ‘d’)

1. Expression 1: a*b = -2 > 0 (false)

2. Expression 2: b = 2 (true)

3. Expression 3: x = 1 > 7 (false)

4. Expression 4: ‘b’ > ‘d’ (false)

5. Expression 5: ~(Expression 4) (true)

6. Expression 6: (Expression 1) & (Expression 2) (false)

7. Expression 7: (Expression 6) & (Expression 3) (false)

8. Expression 8: (Expression 7) | (Expression 5) (true)

Page 95: Solution Strategies 1. PROGRAMMING WITH MATLAB

Complex DecisionComplex Decision A step-by-step evaluation of a complex decision

Page 96: Solution Strategies 1. PROGRAMMING WITH MATLAB

Nested IF StatementNested IF Statement

if (condition) statement blockelseif (condition) another statement blockelse another statement blockend

Structures can be nested within each other

Page 97: Solution Strategies 1. PROGRAMMING WITH MATLAB

How to use Nested IFHow to use Nested IF If the condition is true the

statements following the statement block are executed.

If the condition is not true, then the control is transferred to the next

else, elseif, or end statement at the same if level.

Page 98: Solution Strategies 1. PROGRAMMING WITH MATLAB

Else and ElseifElse and Elseifif temperature > 100

disp(‘Too hot - equipment malfunctioning.’)

elseif temperature > 75

disp(‘Normal operating range.’)

elseif temperature > 60

disp(‘Temperature below desired operating range.’)

else

disp(‘Too Cold - turn off equipment.’)

end

Page 99: Solution Strategies 1. PROGRAMMING WITH MATLAB

Nested IF StatementsNested IF Statements nested if (if, if else, if elseif)

-1 1x

1

y

if (x < = -1.0)

y = 0.

elseif (x < = 0.)

y = 1. + x

elseif (x < = 1.0)

y = 1. - x

else

y=0.

end

Page 100: Solution Strategies 1. PROGRAMMING WITH MATLAB

M-file: Evaluate CVEN 302 GradeM-file: Evaluate CVEN 302 Grade function cven302_gradename = input('Enter Student Name: ','s');sid = input('Enter Student ID: ');HW = input('Enter Homework Average (30%): ');Exam1 = input('Enter Exam I score (20%): ');Exam2 = input('Enter Exam II score (20%): ');Final = input('Enter Final Exam score (30%): ');Average= HW*0.3 + Exam1*0.2 + Exam2*0.2 + Final*0.3; fprintf('Your Semester Average is: %6.2f \n',Average)if Average >= 90 Grade = 'A';elseif Average >= 80 Grade = 'B';elseif Average >= 70 Grade = 'C';elseif Average >= 60 Grade = 'D';else Grade = 'F';endfprintf('Your Semester Grade is : '), disp(Grade)

Page 101: Solution Strategies 1. PROGRAMMING WITH MATLAB

>> cven302_grade

Enter Student Name: Jane Doe

Enter Student ID: 1234567

Enter Homework Average (30%): 96

Enter Exam I score (20%): 88

Enter Exam II score (20%): 92

Enter Final Exam score (30%): 85

Your Semester Average is: 90.30

Your Semester Grade is : A

>> cven302_grade

Enter Student Name: John Doe

Enter Student ID: 9876543

Enter Homework Average (30%): 62

Enter Exam I score (20%): 84

Enter Exam II score (20%): 80

Enter Final Exam score (30%): 91

Your Semester Average is: 78.70

Your Semester Grade is : C

Decisions (Selections)Decisions (Selections) if … elseif if … elseif

StructureStructure

Page 102: Solution Strategies 1. PROGRAMMING WITH MATLAB

RepetitionRepetition

for i=1:mfor j=1:n

a(i,j)=(i+1)^2*sin(0.2*j*pi);end

end

Do loopsDo loops

Use “script file” for all do loops

Page 103: Solution Strategies 1. PROGRAMMING WITH MATLAB

For LoopsFor Loopsfor index = start : step : finish statementsend

for k = 1:length(d)

if d(k) < 30

velocity(k) = 0.5 - 0.3*d(k).^2;

else

velocity(k) = 0.6 + 0.2*d(k)-0.01*d(k).^2

end

end

Ends after a specified number

of repetitions

Page 104: Solution Strategies 1. PROGRAMMING WITH MATLAB

For LoopFor Loopfunction A = for_loop(m,n)

for i = 1:m

for j = 1:n

A(i,j) = 50*exp(-0.2*i)^2*sin(0.1*j*pi);

end

end

>> A = for_loop(8,6)

A =

10.3570 19.7002 27.1150 31.8756 33.5160 31.8756

6.9425 13.2054 18.1757 21.3669 22.4664 21.3669

4.6537 8.8519 12.1836 14.3226 15.0597 14.3226

3.1195 5.9336 8.1669 9.6007 10.0948 9.6007

2.0910 3.9774 5.4744 6.4356 6.7668 6.4356

1.4017 2.6661 3.6696 4.3139 4.5359 4.3139

0.9396 1.7872 2.4598 2.8917 3.0405 2.8917

0.6298 1.1980 1.6489 1.9384 2.0381 1.9384

Page 105: Solution Strategies 1. PROGRAMMING WITH MATLAB

For LoopFor Loop M-file for computing the factorial n! MATLAB has a built-in function factorial(n) to compute n!

function fout = factor(n)

% factor(n):

% Computes the product of all the integers from 1 to n.

x=1;

for i = 1:n

x = x*i;

end

fout = x;

>> factor(12)

ans =

479001600

>> factor(100)

ans =

9.332621544394410e+157

Page 106: Solution Strategies 1. PROGRAMMING WITH MATLAB

While LoopsWhile Loops

while expression statementsend

The statements are executed while the real part of the expression has all non-zero elements.

If the statement is true, the statements are executed

If the statement is always true, the loop becomes an “infinite loop”

The “break” statement can be used to terminate the “while” or “for” loop prematurely.

Ends on the basis of a logical condition

Page 107: Solution Strategies 1. PROGRAMMING WITH MATLAB

While LoopWhile Loop Compute your checking account balancefunction checking

% Compute balance in checking account

Balance = input('Current Checking Account Balance ($) = ');

Deposit = input('Monthly Deposit ($) = ');

Subtract = input('Monthly Subtractions ($) = ');

Month = 0;

while Balance >= 0

Month = Month + 1;

Balance = Balance + Deposit - Subtract;

if Balance >= 0

fprintf('Month %3d Account Balance = %8.2f \n',Month,Balance)

else

fprintf('Month %3d Account Closed \n',Month)

end

end

Page 108: Solution Strategies 1. PROGRAMMING WITH MATLAB

While LoopWhile Loop>> checking

Current Checking Account Balance ($) = 8527.20

Monthly Deposit ($) = 1025.50

Monthly Subtractions ($) = 1800

Month 1 Account Balance = 7752.70

Month 2 Account Balance = 6978.20

Month 3 Account Balance = 6203.70

Month 4 Account Balance = 5429.20

Month 5 Account Balance = 4654.70

Month 6 Account Balance = 3880.20

Month 7 Account Balance = 3105.70

Month 8 Account Balance = 2331.20

Month 9 Account Balance = 1556.70

Month 10 Account Balance = 782.20

Month 11 Account Balance = 7.70

Month 12 Account Closed

Page 109: Solution Strategies 1. PROGRAMMING WITH MATLAB

Nesting and IndentationNesting and Indentation Example: Roots of a Quadratic Equation

a

acbbx

cbxax

2

4

02

2

If a=0, b=0, no solution (or trivial sol. c=0)

If a=0, b0, one real root: x=-c/b

If a0, d=b2 4ac 0, two real roots

If a0, d=b2 4ac <0, two complex roots

Page 110: Solution Strategies 1. PROGRAMMING WITH MATLAB

Nesting and IndentationNesting and Indentationfunction quad = quadroots(a,b,c)% Computes real and complex roots of quadratic equation% a*x^2 + b*x + c = 0% Output: (r1,i1,r2,i2) - real and imaginary parts of the% first and second rootif a == 0 % weird cases if b ~= 0 % single root r1 = -c/b else % trivial solution error('Trivial or No Solution. Try again') end % quadratic formulaelsed = b^2 - 4*a*c; % discriminant if d >= 0 % real roots r1 = (-b + sqrt(d)) / (2*a) r2 = (-b - sqrt(d)) / (2*a) else % complex roots r1 = -b / (2*a) r2 = r1 i1 = sqrt(abs(d)) / (2*a) i2 = -i1 endend

Page 111: Solution Strategies 1. PROGRAMMING WITH MATLAB

Roots of Quadratic EquationRoots of Quadratic Equation>> quad = quadroots(5,3,-4)

r1 =

0.6434

r2 =

-1.2434

>> quad = quadroots(5,3,4)

r1 =

-0.3000

r2 =

-0.3000

i1 =

0.8426

i2 =

-0.8426

>> quad = quadroots(0,0,5)

??? Error using ==> quadroots

Trivial or No Solution. Try again

(two real roots)

(two complex roots)

(no root)

Page 112: Solution Strategies 1. PROGRAMMING WITH MATLAB

Passing Functions to M-FilePassing Functions to M-File Use built-in “feval” and “inline” functions to

perform calculations using an arbitrary function

outvar = feval(‘funcname’, arg1, arg2, …)

Funcname = inline(‘expression’, var1, var2, ...)

>> fx=inline('exp(-x)*cos(x)^2*sin(2.*x)')

fx =

Inline function:

fx(x) = exp(-x)*cos(x)^2*sin(2.*x)

>> y = fx(2/3*pi)

y =

-0.0267

No need to store in

separate M-file

Page 113: Solution Strategies 1. PROGRAMMING WITH MATLAB

Bungee Jumper: Euler’s MethodBungee Jumper: Euler’s Methodfunction [x, y] = Euler(f, tspan, y0, n)% solve y' = f(x,y) with initial condition y(a) = y0% using n steps of Euler's method; step size h = (b-a)/n% tspan = [a, b]a = tspan(1); b = tspan(2); h = (b - a) / n;x = (a+h : h : b);y(1) = y0 + h*feval(f, a, y0);for i = 2 : n y(i) = y(i-1) + h*feval(f, x(i-1), y(i-1));endx = [ a x ];y = [y0 y ];

function f = bungee_f(t,v)

% Solve dv/dt = f for bungee jumper velocity

g = 9.81; m = 68.1; cd = 0.25;

f = g - cd*v^2/m;

Use “feval” for function evaluation

Page 114: Solution Strategies 1. PROGRAMMING WITH MATLAB

MATLAB M-File: Bungee JumperMATLAB M-File: Bungee Jumper[t,v] = bungee_exact; hold on; % Exact Solution

[t1,v1] = Euler('bungee_f',[0 20],0,10); % Euler method

h1=plot(t1,v1,'g-s');

set(h1,'LineWidth',3,'MarkerSize',10);

[t2,v2] = Euler('bungee_f',[0 20],0,20); %Euler method

h2 = plot(t2,v2,'k:d');

set(h2,'LineWidth',3,'MarkerSize',10);

[t3,v3] = Euler('bungee_f',[0 20],0,100); %Euler method

h3 = plot(t3,v3,'mo'); hold off;

set(h3,'LineWidth',3,'MarkerSize',5);

h4 = title('Bungee Jumper'); set(h4,'FontSize',20);

h5 = xlabel('Time (s)'); set(h5,'FontSize',20);

h6 = ylabel('Velocity (m/s)'); set(h6,'FontSize',20);

h7 = legend('Exact Solution','\Delta t = 2 s','\Delta t = 1 s‘, '\Delta t = 0.2s',0);

set(h7,'FontSize',20);

Page 115: Solution Strategies 1. PROGRAMMING WITH MATLAB

Bungee Jumper VelocityBungee Jumper Velocity

Page 116: Solution Strategies 1. PROGRAMMING WITH MATLAB

M-File: Bichromatic WavesM-File: Bichromatic Waves Filename waves.m (script file)

% Plot Bi-chromatic Wave Profilea1 = 1; a2 = 1.5; c1 = 2.0; c2 = 1.8;time = 0:0.1:100;wave1 = a1 * sin(c1*time);wave2 = a2 * sin(c2*time) + a1;wave3 = wave1 + wave2;plot(time,wave1,time,wave2,time,wave3)axis([0 100 -2 4]);xlabel ('time'); ylabel ('wave elevation');title ('Bi-chromatic Wave Profile')text(42,-1.2, 'wave 1')text(42, 2.7, 'wave 2')text(59, 3.6, 'waves 1+2')

Page 117: Solution Strategies 1. PROGRAMMING WITH MATLAB
Page 118: Solution Strategies 1. PROGRAMMING WITH MATLAB

MATLAB SubplotsMATLAB Subplots Filename waves2.m (script file)

% Plot Bi-chromatic Wave Profile% Display the results in three subplotsclf % clear the graphics windowa1 = 1; a2 = 1.5; c1 = 2.0; c2 = 1.8;time = 0:0.1:100;wave1 = a1 * sin(c1*time);wave2 = a2 * sin(c2*time);wave3 = wave1 + wave2;subplot(3,1,1) % top figureplot(time,wave1,'m'); axis([0 100 -3 3]); ylabel('wave 1');subplot(3,1,2) % middle figureplot(time,wave2,'g'); axis([0 100 -3 3]); ylabel('wave 2');subplot(3,1,3) % bottom figureplot(time,wave3,'r'); axis([0 100 -3 3]);xlabel(’time'); ylabel('waves 1&2');

Page 119: Solution Strategies 1. PROGRAMMING WITH MATLAB
Page 120: Solution Strategies 1. PROGRAMMING WITH MATLAB

subplot ( m, n, p ) --

breaks the figure window into m by n small figures, select the p-th figure for the current plot

» figure (3)» subplot (3, 2, 1)» plot (t,wv1)» subplot (3, 2, 2)» plot (t,wv2)» subplot (3, 2, 4)» plot (t, wv1+wv2)» subplot (3, 2, 6)» plot (t, wv1-wv2)

MATLAB SubplotsMATLAB Subplots

1 2

3 4

5 6

Page 121: Solution Strategies 1. PROGRAMMING WITH MATLAB

» x=0:0.1:10; y1=sin(pi*x); y2=sin(0.5*pi*x); y3=y1+y2;» z1=cos(pi*x); z2=cos(0.5*pi*x); z3=z1-z2;» subplot(3,2,1); H1=plot(x,y1,'b'); set(H1,'LineWidth',2);» subplot(3,2,2); H2=plot(x,z1,'b'); set(H2,'LineWidth',2);» subplot(3,2,3); H3=plot(x,y2,'m'); set(H3,'LineWidth',2);» subplot(3,2,4); H4=plot(x,z2,'m'); set(H4,'LineWidth',2);» subplot(3,2,5); H5=plot(x,y3,'r'); set(H5,'LineWidth',2);» subplot(3,2,6); H6=plot(x,z3,'r'); set(H6,'LineWidth',2);

Subplot (m,n,p)

Multiple plots