Programming with MATLAB

Slides:



Advertisements
Similar presentations
A number of MATLAB statements that allow us to control the order in which statements are executed in a program. There are two broad categories of control.
Advertisements

Introduction to Matlab
M AT L AB Programming: scripts & functions. Scripts It is possible to achieve a lot simply by executing one command at a time on the command line (even.
Flow Charts, Loop Structures
Programming with MATLAB
Engineering H192 - Computer Programming The Ohio State University Gateway Engineering Education Coalition Lect 19P. 1Winter Quarter MATLAB: Script and.
ITEC113 Algorithms and Programming Techniques
Chapter 8 and 9 Review: Logical Functions and Control Structures Introduction to MATLAB 7 Engineering 161.
ECIV 301 Programming & Graphics Numerical Methods for Engineers Lecture 4 Programming and Software EXCEL and MathCAD.
Week 6 - Programming I So far, we’ve looked at simple programming via “scripts” = programs of sequentially evaluated commands Today, extend features to:
Branches and Loops Selim Aksoy Bilkent University Department of Computer Engineering
Program Design and Development
Dr. Jie Zou PHY Introduction to MATLAB Programming with MATLAB 1 1 Applied Numerical Methods with MATLAB for Engineers and Scientists, 2nd ed., Steven.
Division Example 2x - 3y + 4z = 10 x + 6y - 3z = 4 -5x + y + 2z = 3 A*X = B where A = B = >> X = A\B X =
ECIV 301 Programming & Graphics Numerical Methods for Engineers Lecture 3 Programming and Software.
Introduction to MATLAB MECH 300H Spring Starting of MATLAB.
Introduction to Array The fundamental unit of data in any MATLAB program is the array. 1. An array is a collection of data values organized into rows and.
Programming For Nuclear Engineers Lecture 12 MATLAB (3) 1.
Chapter Seven Advanced Shell Programming. 2 Lesson A Developing a Fully Featured Program.
1 MATLAB 基礎. 2 MATLAB  Workspace: environment (address space) where all variables reside  After carrying out a calculation, MATLAB assigns the result.
MATLAB 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.
M-files While commands can be entered directly to the command window, MATLAB also allows you to put commands in text files called M- files. M-files are.
INTRO TO PROGRAMMING Chapter 2. M-files While commands can be entered directly to the command window, MATLAB also allows you to put commands in text files.
MATLAB File Management. MATLAB User File Management Matlab provides a group of commands to manage user files. For more information, type help iofun. pwd.
Engineering Analysis ENG 3420 Fall 2009 Dan C. Marinescu Office: HEC 439 B Office hours: Tu-Th 11:00-12:00.
Introduction to Matlab 1. Outline: What is Matlab? Matlab Screen Variables, array, matrix, indexing Operators Plotting Flow Control Using of M-File Writing.
REVIEW 2 Exam History of Computers 1. CPU stands for _______________________. a. Counter productive units b. Central processing unit c. Copper.
1 Computer Programming (ECGD2102 ) Using MATLAB Instructor: Eng. Eman Al.Swaity Lecture (3): MATLAB Environment (Chapter 1)
MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group.
1 Chapter 4: Selection Structures. In this chapter, you will learn about: – Selection criteria – The if-else statement – Nested if statements – The switch.
ENGR 1320 Final Review - Programming Major Topics: – Functions and Scripts – Vector and Matrix Operations in Matlab Dot product Cross product – Plotting.
Input, Output, and Processing
MATLAB Tutorial EE 327 Signals and Systems 1. What is MATLAB? MATLAB – Matrix Laboratory The premier number-crunching software Extremely useful for signal.
What is MATLAB? MATLAB is one of a number of commercially available, sophisticated mathematical computation tools. Others include Maple Mathematica MathCad.
Vectors and Matrices In MATLAB a vector can be defined as row vector or as a column vector. A vector of length n can be visualized as matrix of size 1xn.
Matlab Programming for Engineers Dr. Bashir NOURI Introduction to Matlab Matlab Basics Branching Statements Loops User Defined Functions Additional Data.
1. Exam Topics Difference between computers and calculators John creates a new device. It will compute the orbit of all the planets in the solar system.
What does C store? >>A = [1 2 3] >>B = [1 1] >>[C,D]=meshgrid(A,B) c) a) d) b)
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 2 Input, Processing, and Output.
Part 1 Chapter 3 Programming with MATLAB PowerPoints organized by Dr. Michael R. Gustafson II, Duke University and Prof. Steve Chapra, Tufts University.
Chapter 3 MATLAB Fundamentals Introduction to MATLAB Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Introduction to Matlab Module #4 Page 1 Introduction to Matlab Module #4 – Programming Topics 1.Programming Basics (fprintf, standard input) 2.Relational.
Chapter 4 Controlling Execution CSE Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,
CSE123 Lecture 3 Files and File ManagementScripts.
Lecture 26: Reusable Methods: Enviable Sloth. Creating Function M-files User defined functions are stored as M- files To use them, they must be in the.
Introduction to Matlab  Matlab is a software package for technical computation.  Matlab allows you to solve many numerical problems including - arrays.
CSC 1010 Programming for All Lecture 3 Useful Python Elements for Designing Programs Some material based on material from Marty Stepp, Instructor, University.
Structured Programming II: If Statements By the end of this class you should be able to: implement branching in a program describe and use an “if” statement.
Introduction to MATLAB 1.Basic functions 2.Vectors, matrices, and arithmetic 3.Flow Constructs (Loops, If, etc) 4.Create M-files 5.Plotting.
1 Lecture 4 Post-Graduate Students Advanced Programming (Introduction to MATLAB) Code: ENG 505 Dr. Basheer M. Nasef Computers & Systems Dept.
NET 222: COMMUNICATIONS AND NETWORKS FUNDAMENTALS ( NET 222: COMMUNICATIONS AND NETWORKS FUNDAMENTALS (PRACTICAL PART) Tutorial 2 : Matlab - Getting Started.
Interduction to MATLAB (part 2) Manal Alotaibi Mathematics department College of science King saud university.
Internet & World Wide Web How to Program, 5/e © by Pearson Education, Inc. All Rights Reserved.
Solution Strategies 1. PROGRAMMING WITH MATLAB. MATLAB Fundamentals.
INTRODUCTION TO PROGRAMMING Chapter 2. M-files While commands can be entered directly to the command window, MATLAB also allows you to put commands in.
EEE 161 Applied Electromagnetics
Matlab Training Session 4: Control, Flow and Functions
Programming with MATLAB
MATLAB DENC 2533 ECADD LAB 9.
MATLAB: Structures and File I/O
Matlab review Matlab is a numerical analysis system
MATLAB (Lecture 2) BY:MAHA ALMOUSA.
Loop Statements & Vectorizing Code
Topics Introduction to Value-returning Functions: Generating Random Numbers Writing Your Own Value-Returning Functions The math Module Storing Functions.
244-2: MATLAB/Simulink FUNDAMENTALS
Basic Concepts of Algorithm
Matlab Basics.
Loop Statements & Vectorizing Code
MATLAB (Lecture 2) BY:MAHA ALMOUSA.
Programming The ideal style of programming is Structured or
Presentation transcript:

Programming with MATLAB Chapter 3 Programming with MATLAB

Numerical Solution 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

M-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 functions Scripts share variables with the main workspace Functions do not

Script 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

Script File – Bungee Jumper 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 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

Function 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

Functions Examples: function y = my_func (x) One output 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;

Approximate the integral of f(x) = 1/x3 using basic trapezoid rule a b Filename: trap_ex.m function t = trap_ex(a, b) t = (b - a) * (a^(-3) + b^(-3)) / 2; » y = trap_ex (1, 3) y = 1.0370

Script File for Integral f(x) area x a b 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)

feval - evaluate function specified by string function y = my_func(x) % function 1/x^3 y = x.^(-3); my_func.m function q = basic_trap(f, a, b) % basic trapezoid rule ya = feval(f, a); yb = feval(f, b); q = (b - a)* (ya + yb)/2; basic_trap.m » y = basic_trap ('my_func', 1,3) y = 1.0370

Composite Trapezoid Rule Filename: comp_trap.m 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; f x a b

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

Function 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);

Function 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

Function File To invoke the help comments Type 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)

Function 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.6800 s = 1.7662

Data Files MAT Files ASCII 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)

MATLAB 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”

Save 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

Load 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

Note: temperature is a 62 matrix Load Files Create an ASCII file temperature.dat read “Time” and “Temperature” from temp.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 Note: temperature is a 62 matrix

MATLAB Output 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)

Formatted Output fprintf (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 “%”

Numeric Display Format x = [5 -2 3 0 1 -2]; format + x = [+  + + ] (+/ sign only)

fprintf( ) of Scalar temp = 98.6; fprintf(‘The temperature is %8.1f degrees F.\n’, temp); The temperature is 98.6 degrees F. fprintf(‘The temperature is %08.2f degrees F.\n’, temp); The temperature is 00098.60 degrees F. fprintf(‘The temperature is %8.3e degrees F.\n’, temp); The temperature is 9.860e+001 degrees F.

fprintf( ) of Matrices Score = [1 2 3 4; 75 88 102 93; 99 84 95 105] fprintf(‘Game %1.0f score: Houston: %3.0f Dallas: %3.0f \n’,Score) 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 control codes \n Start new line \t Tab

Interactive input Function The input function allows you to prompt the user for values directly from the command window Enter either “value” or “stream” 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'); value string

Interactive 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: JohnDoe@tamu.edu name = John Doe sid = 12345678 phone = 987-6543 email = JohnDoe@tamu.edu

Interactive 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: ve;ocity = 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('Velocity (m/s):') vel = sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t); disp([t;vel]’)

Interactive M-File >> freefallinteract Mass (kg): 68.1 Drag coefficient (kg/m): 0.25 Time (s): 0:1:20 Velocity (m/s): 0 0 1.0000 9.6939 2.0000 18.7292 3.0000 26.6148 4.0000 33.1118 5.0000 38.2154 6.0000 42.0762 7.0000 44.9145 8.0000 46.9575 9.0000 48.4058 10.0000 49.4214 11.0000 50.1282 12.0000 50.6175 13.0000 50.9550 14.0000 51.1871 15.0000 51.3466 16.0000 51.4560 17.0000 51.5310 18.0000 51.5823 19.0000 51.6175 20.0000 51.6416

CVEN 302-501 Homework No. 2 Chapter 3 Problems 3.1 (25), 3.4 (25) Due Wed. 09/10/2008 at the beginning of the period

Common Program Structures Sequence Selection Repetition

Structured Programming Modular 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

The hierarchy of flowcharts dealing with a student’s GPA Modular design Top-down design Structural Programming

Structured Programming The ideal style of programming is Structured or Modular 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 subroutine (function M-file) may contain several modules Subroutines (Function M-files) called by a main program

Algorithm 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

Structured 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

Selection (IF) 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

Logical IF Statements If (condition) executable_statements end if (x < = -1.0 | x > = 1.0) y = 0. end if (x > -1.0 & x < 0.) y = 1. + x if (x > = 0. & x < 1.0) y = 1.- x y 1 x -1 1

Relation Operators MATLAB Interpretation == ~= < <= > >= & | ~ 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

Logical Conditions ~ (not) – logical negation of an 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

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

True Table for Logical Operators Order of priority of logical operators Highest Lowest 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

Example of a Complex Decision If a=-1, b=2, x=1, and y=‘b’, evaluate A * b > 0 & b == 2 & x > 7 | ~(y > ‘d’) Expression 1: A*b = -2 > 0 (false) Expression 2: b = 2 (true) Expression 3: x = 1 > 7 (false) Expression 4: ‘b’ > ‘d’ (false) Expression 5: ~(Expression 4) (true) Expression 6: (Expression 1) & (Expression 2) (false) Expression 7: (Expression 6) & (Expression 3) (false) Expression 8: (Expression 7) | (Expression 5) (true)

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

Nested IF Statement if (condition) statement block elseif (condition) Structures can be nested within each other if (condition) statement block elseif (condition) another statement block else end

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

Else and Elseif if 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

Nested IF Statements nested if (if, if else, if elseif) if (x < = -1.0) y = 0. elseif (x < = 0.) y = 1. + x elseif (x < = 1.0) y = 1. - x else y=0. end y 1 x -1 1

M-file: Evaluate CVEN 302 Grade function cven302_grade name = 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'; end fprintf('Your Semester Grade is : '), disp(Grade)

Decisions (Selections) if … elseif Structure >> 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

Do loops Repetition for i=1:m for j=1:n a(i,j)=(i+1)^2*sin(0.2*j*pi); end

Ends after a specified number of repetitions For Loops for index = start : step : finish statements end Ends after a specified number of repetitions 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

For Loop function 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 >> 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

For 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

While Loops while condition statements end Ends on the basis of a logical condition 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.

While Loop Compute your checking account balance function 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

While 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

Nesting and Indentation Example: Roots of a Quadratic Equation If a=0, b=0, no solution (or trivial sol. c=0) If a=0, b0, one real root: x=-c/b If a0, d=b2  4ac  0, two real roots If a0, d=b2  4ac <0, two complex roots

Nesting and Indentation function 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 root if a == 0 % weird cases if b ~= 0 % single root r1 = -c/b else % trivial solution error('Trivial or No Solution. Try again') end % quadratic formula else d = 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 end

Roots of Quadratic Equation >> quad = quadroots(5,3,-4) r1 = 0.6434 r2 = -1.2434 >> quad = quadroots(5,3,4) -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)

Passing 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

Bungee Jumper: Euler’s Method function [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)); end x = [ a x ]; y = [y0 y ]; Use “feval” for function evaluation 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;

MATLAB 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);

Bungee Jumper Velocity

M-File: Bichromatic Waves H.C. Chen M-File: Bichromatic Waves Filename waves.m (script file) % Plot Bi-chromatic Wave Profile a1 = 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') MATLAB Review

MATLAB Subplots Filename waves2.m (script file) % Plot Bi-chromatic Wave Profile % Display the results in three subplots clf % clear the graphics window a1 = 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 figure plot(time,wave1,'m'); axis([0 100 -3 3]); ylabel('wave 1'); subplot(3,1,2) % middle figure plot(time,wave2,'g'); axis([0 100 -3 3]); ylabel('wave 2'); subplot(3,1,3) % bottom figure plot(time,wave3,'r'); axis([0 100 -3 3]); xlabel(’time'); ylabel('waves 1&2');

MATLAB Subplots subplot ( m, n, p ) -- 1 2 3 4 5 6 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) 1 2 3 4 5 6

Subplot (m,n,p) Multiple plots » 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

CVEN 302-501 Homework No. 3 Chapter 3 Problems 3.6 (35), 3.9 (35) Due Mon 09/15/08 at the beginning of the period