Documents

Mat Lab for Odes Hand Out

Categories
Published
of 15
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Description
MAtlab for ODEs
Transcript
    MATLAB ® for ODEs SUPPLEMENTAL NOTES FOR “NUMERICAL METHODS” ME 330 PREPARED BY: Dr. Kevin R. Anderson Associate Professor Mechanical Engineering California State Polytechnic University at Pomona kranderson1@csupomona.edu www.csupomona.edu/~kranderson1/   ME 330 NUMERICAL METHODS MATLAB Environment The MATLAB programming environment provides the user with an interactive work space, in which the user enters commands and view results. After launching MATLAB from the Desktop Icon (or via Start -> Programs -> MATLAB), commands are entered at the >> prompt. A number of Operating System (OS) level control-type commands are available at the MATLAB >> prompt, including: >> cd Changes the current working directory >> delete  Delete a file >> diary  Saves your MATLAB session as a text file >> dir  List the contents of the current directory >> ! Execute an OS command >> quit  Exit MATLAB MATLAB Variables and Statements Scalar, vector and matrix quantities can be easily defined in MATLAB using assignment statements. Some examples follow: a= 14.7  defines a scalar r = [1 2 3 4]  defines a row vector c = [1.2 3.2 7.5 5.6]’  defines a column vector (prime means transpose) b = [1 2 3; 4 5 6;7 8 9]  defines a 3 x 3 matrix, rows are delineated by a ; (Is this example singular ?) Array elements may be referenced directly, e.g  . c(2) = 3.2 , or b(3,2) = 8 . Built into MATLAB are the usual mathematical functions, such as sin, cos, tan, atan , etc.  as well as everybody’s favorite constant pi . Additionally, a large number of array functions are provided to aid you in performing operations on matrices some examples of which follow: >> A = [0.5 0.5 0.5; 0.5 1.5 1.5; 0.5 1.5 2.5]   >> detA = det(A)  returns the determinant of A into the scalar named detA >> Ainv = inv(A)  returns the inverse of A into the array named invA >> y = eig(A) computes the eigenvalues of A into column vector y >> [x1,x2] = eig(A)  returns the the matrices U and D, D is a diagonal matrix with the eigenvalues along the diagonal, U is a full matrix with the eigenvectors as column vectors MATLAB Logic The MATLAB programming language provides loops, branches and functions, akin  to any other high level modular programming language  , i.e .  for ,if else.   CALIFORNIA STATE POLYTECHNIC UNIVERISTY, POMONA  DEPARTMENT OF MECHANICAL ENGINEERING   2  ME 330 NUMERICAL METHODS MATLAB Script Files and Functions Script files and functions are batch files which contain a series of >> input command lines appended together. These files are given the extension .m and are referred to in MATLAB slang as “ M-files ”. Scripts are created in the user’s text editor of choice and executed by typing the name of the script at the >> prompt. The generic structure of a function  declaration in MATLAB is given below: function[output variables] = function_name(input variables) MATLAB Plotting Routine Plotting your results is achieved with the command >> plot(t, v), xlabel(’ x axis name’), ylabel(’ y axis name’), title(’ Welcome to MATLAB for Dummies’)   MATLAB ®  ODE Solvers In addition to the many variants of the predictor-corrector and higher order Runge-Kutta (R-K) algorithms there are many algorithms in MATLAB which employ adaptive step-size control. The variable step-size algorithms use larger step sizes when the solution is changing more slowly. MATLAB provides two functions, called  solvers , that implement R-K methods with adaptive step-size. These are the ode23  and ode45  functions. The ode23  function uses a combination of 2 nd  order and 3 rd  order R-K, while ode45  uses a combination of 4 th  and 5 th  order R-K methods and is an adaptive step-size algorithm  based on the Runge-Kutta-Fehlberg integration scheme. In general, ode45  is more robust and accurate than ode23 , but it employs larger step sizes which may produce a solution plot that is not as smooth as the same plot produced with ode23 . These two solvers are characterized as low-order and medium-order, respectively. Another solver in MATLAB is ode113 , which is based on a variable-order algorithm. MATLAB contains four additional solvers: these are ode23t , ode15s , ode23s  and ode23tb . These and the other solvers outlined above are listed below in Table 1. Table 1 MATLAB ODE Solvers Solver Name Description ode23  Non-stiff, low-order solver ode45  Non-stiff, medium-order solver ode23s Stiff, low-order solver ode23t Moderately stiff, trapezoidal rule solver ode23tb Stiff, low-order solver ode15s Stiff, variable-order solver CALIFORNIA STATE POLYTECHNIC UNIVERISTY, POMONA  DEPARTMENT OF MECHANICAL ENGINEERING   3  ME 330 NUMERICAL METHODS Some of the solvers are especially useful for the solution of “stiff” systems. Recall, a stiff ODE is one whose response changes rapidly over a time scale that is short compared to the time scale over which the solution is desired. Stiff equations present additional strains to the numerical algorithm. A small step size is required to resolve the rapid gradient behaviors, while many steps are needed to obtain the solution over the longer time interval, and thus a large truncation error may accumulate. The ode23  and ode45  solvers handle moderately stiff ODEs nicely, but if you run into trouble, consult Table 1 and try using ode15s , a variable-order method; ode23s , a low-order method; ode23tb , a low-order method,; or ode23t , a trapezoidal method. Solver Syntax When used to solve the 1 st  order ODE dy/dt = f(t,y) the basic MATLAB syntax is given  by [t,y] = ode23(’ ydot’, tspan, y0) where ydot  is the name of the function file whose inputs must be t   and  y , and whose output must be a column vector representing  f(t,y).  The number of rows in this column vector must equal the order of the equation. The vector tspan  contains the starting and ending values of the independent variable t  , and optionally any intermediate value of t   where the solution is desired. For example, if no intermediate values are desired tspan = [t0, tf],  where t0  and tf are the desired starting and ending values of the independent parameter t.  Using tspan = [0, 5, 10]  informs MATLAB to find the solution at t   = 5 and t   = 10. You can solve equations backward by specifying t0 > tf . The parameter y0  is the initial value  y(0).  The function file must have two input arguments, t and  y , even for equations where  f(t,y)  is not a function of t.  You need not use array operations in the function file since the ODE solvers call the file with scalar values for the arguments. Example 1)  “A simple first order ODE” Let’s solve an equation whose solution is known in closed form. Consider the model 01.0  =+  y y &  Use MATLAB solver ode45  to find the free response with y(0) = 2. Compare with the exact analytic result. First, recast the equation as  y y 10 −= &   Next define the following MATLAB function file, noting that the order of the input arguments must be t   and  y . CALIFORNIA STATE POLYTECHNIC UNIVERISTY, POMONA  DEPARTMENT OF MECHANICAL ENGINEERING   4
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks