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

Search

Similar documents

Tags

Related Search

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