mathworks. symbolic math toolbox for use with matlab - user's guide (1998)(300s)_s
TRANSCRIPT
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
1/300
Computation
Visualization
Programming
For Use with MATLAB
Users Gu ideVersion 2
Symbolic MathToolbox
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
2/300
How to Contact The MathWorks:
508-647-7000 P h on e
508-647-7001 F a x
Th e Ma th Wor ks, In c. Ma il
24 Prime Park Way
Natick, MA 01760-1500
http://www.mathworks.com Web
ftp.mathworks.com Anonymous FTP server
comp.soft-sys.matlab Newsgroup
[email protected] Techn ical support
[email protected] Product enhancement suggestions
[email protected] Bug reports
[email protected] Documentation error reports
[email protected] Subscribing user registration
[email protected] Order status, license renewals, passcodes
[email protected] Sales, pricing, an d genera l informa tion
S ymb olic Mat h T oolbox Users Guid e
COPYRIGHT 1993 - 1998 by The MathWorks, Inc.The softwar e described in this document is furn ished under a license agreement . The softwar e may be usedor copied only under the t erms of the license agreemen t. No part of this m anu al ma y be photocopied or r epro-duced in any form without prior written consent from The MathWorks, Inc .
U.S. GOVERNMENT: If Licensee is a cquiring the Pr ogram s on behalf of any un it or agency of the U.S.Government , the following shall apply: (a) For un its of the Depar tmen t of Defense: the Governm ent sh allhave only the rights specified in the license un der which th e commer cial computer softwar e or commer cialsoftware documentation was obtained, as set forth in subparagraph (a) of the Rights in CommercialComput er Software or Commer cial Software Documenta tion Clause a t DFARS 227.7202-3, therefore therights set forth her ein shall apply; and (b) For any other un it or agency: NOTICE: Notwithst anding anyother lease or license agreement that may pertain to, or accompany the delivery of, the computer software
and accompan ying documenta tion, the rights of the Government regarding its use, repr oduction, and disclo-sure are as set forth in Clau se 52.227-19 (c)(2) of the FAR.
MATLAB, Simulink, Stat eflow, Han dle Graphics, and Real-Time Worksh op are registered t radem arks , andTarget Language Compiler is a trademark of The MathWorks, Inc.
O th er p ro d u ct o r b ra n d n am es are trad em ar k s o r reg istered trad em ark s o f th eir resp ective h o ld ers.
P r i n t in g H i st or y : Au g u s t 1 99 3 F i r st p r in t i n g
O ct ob er 1 99 4 S econ d p r in t i n g
M a y 1 99 7 T h ir d p r in t i n g for S ym b ol ic M a t h T ool box 2 .0
September 1998 Updated for Release 11 (online only)
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
3/300
i
Contents
1
T u t o r i a l
I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
G e t t i n g H e l p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4
G e t t i n g S t a r t e d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5
Symbolic Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5Creating Symbolic Variables an d Expressions . . . . . . . . . . . . . 1-6
Symbolic and N um eric Conversions . . . . . . . . . . . . . . . . . . . . . . 1-7
Constr ucting Real a nd Complex Variables . . . . . . . . . . . . . . 1-9
Creating Abstr act Fu nctions . . . . . . . . . . . . . . . . . . . . . . . . 1-10
Using sym to Access Ma ple Fu nctions . . . . . . . . . . . . . . . . . 1-11
Exam ple: Crea ting a Symbolic Mat rix . . . . . . . . . . . . . . . . . 1-11
The Default Symbolic Var iable . . . . . . . . . . . . . . . . . . . . . . 1-13
Creating Symbolic Math Fu nctions . . . . . . . . . . . . . . . . . . . . . 1-15
Using S ymbolic Expr essions . . . . . . . . . . . . . . . . . . . . . . . . . 1-15
Creating a n M-File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-16
C a l c u l u s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-17
Differentia tion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-17
Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-21
Integra tion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-23Integra tion with Real Consta nts . . . . . . . . . . . . . . . . . . . . . 1-26
Real Varia bles via sym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-28
Symbolic Summ at ion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-30
Taylor Series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-31
Extended Calculus E xample . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-33
Plotting Symbolic Fun ctions . . . . . . . . . . . . . . . . . . . . . . . . . 1-33
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
4/300
i i
S i m p l i f i c a t i o n s a n d S u b s t i t u t i o n s . . . . . . . . . . . . . . . . . . . . . 1-47
Simplificat ions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-47
collect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-48
expand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-49horner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-49
factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-50
simplify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-52
simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-52
Substitut ions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-56
subexpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-56
subs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-59
V a ri a bl e-P reci s i o n A ri thm eti c . . . . . . . . . . . . . . . . . . . . . . . . . 1-64
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-64
Example: Using th e Different Kinds of Arithm etic . . . . . . . . . 1-65
Rat iona l Arithm etic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-65
Var iable-Pr ecision Num bers . . . . . . . . . . . . . . . . . . . . . . . . . 1-66
Converting to Floating-Point . . . . . . . . . . . . . . . . . . . . . . . . 1-67
Another E xample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-67
Li nea r A l g ebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-69
Basic Algebra ic Opera tions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-69
Linear Algebraic Operat ions . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-70
Eigenvalues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-74
J orda n Canonical F orm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-81
Singular Value Decomposition . . . . . . . . . . . . . . . . . . . . . . . . . 1-82
Eigenvalue Tr ajectories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-86
S o l v i n g E q u a t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-96
Solving Algebra ic Equ at ions . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-96
Several Algebra ic Equ at ions . . . . . . . . . . . . . . . . . . . . . . . . . . 1-104
Single Differen tial E qua tion . . . . . . . . . . . . . . . . . . . . . . . . . . 1-107
Exam ple 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-108
Exam ple 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-108Exam ple 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-109
Several Differential E quat ions . . . . . . . . . . . . . . . . . . . . . . . . 1-109
I n t e g r a l T r a n s f o r m s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-112
The Fourier and In verse Fourier Tra nsforms . . . . . . . . . . . . 1-112
The Laplace and In verse Laplace Transforms . . . . . . . . . . . . 1-120
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
5/300
i i i
The Z and In verse Ztran sforms . . . . . . . . . . . . . . . . . . . . . . 1-126
Referen ces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-128
S p e c i a l M a t h e m a t i c a l F u n c t i o n s . . . . . . . . . . . . . . . . . . . . . . 1-130Diffraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-132
U s i n g M a p l e F u n c t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-136
Simple Exa mple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-136
Vectorized Exam ple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-139
Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-141
Tra ce Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-141
Status Output Argum ent . . . . . . . . . . . . . . . . . . . . . . . . . . 1-141
E x t e n d e d S y m b o l i c M a t h T o o lb o x . . . . . . . . . . . . . . . . . . . . 1-143
Pa ckages of Librar y Fun ctions . . . . . . . . . . . . . . . . . . . . . . . . 1-143
Pr ocedure E xample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-145
Pr ecompiled Maple P rocedur es . . . . . . . . . . . . . . . . . . . . . . . . 1-148
2
R e f e r e n c e
AC o m p a t i b i l i t y G u i d e
C o m p a t i b i li t y w i t h E a r l i e r V e r s i o n s . . . . . . . . . . . . . . . . . . . . A-2
O b s o l e t e F u n c t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
6/300
iv Contents
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
7/300
1
Tutorial
I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . 1-2
G e t t i n g H e l p . . . . . . . . . . . . . . . . . . . . 1-4
Ge tt i n g S t a rte d . . . . . . . . . . . . . . . . . . 1-5
C a l c u l u s . . . . . . . . . . . . . . . . . . . . . . 1-17
S i m p l i f i c a t i o n s a n d S u b s t i t u t i o n s . . . . . . . . . . 1-47
Va ri a b le -P re ci s io n Ari th m e tic . . . . . . . . . . . 1-64
Li nea r A l g ebra . . . . . . . . . . . . . . . . . . . 1-69
S o l v i n g E q u a t i o n s . . . . . . . . . . . . . . . . . 1-96
I n t e g r a l T r a n s f o r m s . . . . . . . . . . . . . . . 1-112
S p e c i a l M a t h e m a t i c a l F u n c t i o n s . . . . . . . . . . 1-130
U s i n g M a p l e F u n c t i o n s . . . . . . . . . . . . . . 1-136
E x t e n d e d S y m b o l i c Ma t h T o o l b o x . . . . . . . . . 1-143
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
8/300
1 Tutorial
1-2
IntroductionThe Symbolic Mat h Toolboxes incorpora te symbolic computa tion int o
MATLABs nu mer ic envir onmen t. Th ese t oolboxes su ppleme nt MATLABs
numer ic and gra phical facilities with several oth er t ypes of mat hema tical
computation:
The computational engine underlying the toolboxes is the kernel of Maple , asystem developed primarily at the University of Waterloo, Canada, and, more
recently, at the Eidgenssiche Technische Hochschule, Zrich, Switzerland.Maple is mar keted a nd supported by Waterloo Maple, Inc.
These versions of the Symbolic Mat h Toolboxes a re designed to work with
MATLAB 5 a nd Maple V Release 4.
There are two toolboxes. The basic Symbolic Math Toolbox is a collection of
more than one-hundred MATLAB functions that provide access to the Maple
Facility Covers
C alcu lu s Diffe ren t ia t ion , in t egr a t ion , lim it s, s um m a tion ,
and Taylor series
L in e a r Alg eb r a I n ve r s es , d e t er m i n a n t s, e ige n va l u es , s in gu l a r
value decomposition, an d canonical form s of
symbolic ma tr ices
Sim plification Methods of sim plifying algebraic expressions
Solution of
Equations
Symbolic and numerical solutions to algebraic and
differential equations
Variable-Precision
Arithmetic
Numer ical evaluation of ma thema tical expressions
to a ny specified a ccur acy
Tr an sfor ms F ou rier , La pla ce, z-tran sform, an d corr esponding
inverse t ra nsforms
Special
Mathem atical
Functions
Special functions of classical a pplied ma th ema tics
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
9/300
Introduction
1-3
kernel using a synta x and st yle tha t is a nat ura l extension of the MATLABlan gua ge. The ba sic toolbox also allows you t o access fun ctions in Ma ples
linear algebra package. The Extended Symbolic Math Toolbox augments this
functiona lity to include a ccess t o all nongra phics Maple pa cka ges, Maple
program ming featu res, a nd user -defined pr ocedures. With both toolboxes, you
can wr ite your own M-files to access Maple functions an d th e Maple workspa ce.
The following sections of th is Tut orial pr ovide explan at ion an d exam ples on
how to u se t he toolboxes.
Cha pter 2, Referen ce, provides det ailed descriptions of each of the functions
in the toolboxes.
Section Covers
Gettin g Help How to get online h elp for Symbolic Math
Toolbox functions
Getting Sta rt ed Basic symbolic ma th opera tions
Calculus How to differentiate and integrate symbolicexpressions
Simplifications and
Substitutions
How to simplify an d su bstitute values into
expressions
Variable-Precision
Arithmetic
How to cont rol th e pr ecision of
computations
Linear Algebra Exam ples usin g th e t oolbox functions
Solving Equ at ions How to solve symbolic equations
Integral Tran sforms Four ier, Lapla ce, an d z-transforms
Special Mathematical
Functions
How to a ccess Ma ples special ma th
functions
Using Maple Functions How to use Maple s h elp, debugging, and
user-defined procedur e fun ctions
Exten ded Symbolic Mat h
Toolbox
Featur es of the Extended Symbolic Math
Toolbox
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
10/300
1 Tutorial
1-4
Getting HelpTher e ar e two ways t o find inform at ion on usin g Symbolic Mat h Toolbox
fun ctions. On e, of cour se, is to rea d t his m an ua l! The oth er is t o use MATLABs
comman d line help syst em. Gener ally, you can obta in help on MATLAB
fun ctions simply by typing
help function
where function is the name of the MATLAB function for which you need help.This is n ot su fficient , however, for s ome Symbolic Mat h Toolbox functions. Th e
rea son? The Symbolic Math Toolbox overloads ma ny of MATLABs n um er ic
fun ctions. Tha t is, it provides symbolic-specific implement at ions of th e
functions, using the same function name. To obtain help for the symbolic
version of an overloaded function, type
help sym/function
where function is th e overloaded functions n am e. For exam ple, to obta in h elpon the symbolic version of the overloaded function, diff, type
help sym/diff
To obtain information on the numeric version, on the other hand, simply type
help diff
How can you tell whether a function is overloaded? The help for the numeric
version t ells you so. For example, th e help for th e diff function contains thesection
Overloaded methods
help char/diff.m
help sym/diff.m
This tells you t hat ther e ar e two other diff comma nds t hat operat e on
expressions of class char and class sym, respectively. See t he next section for
inform at ion on class sym. For m ore inform at ion on overloaded comm an ds, see
Chapt er 14 of the U s i n g M A T L A B guide.
You can use the mhelp command to obtain help on Maple commands. For
example, to obtain help on the Maple diff comma nd, type mhelp diff. This
retur ns th e help page for t he Maple diff fun ction. For m ore inform at ion on th e
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
11/300
Getting Started
1-5
mhelp command, type help mhelp or rea d th e section Using Ma ple Fu nctionsin th is Tutorial.
Getting Started
This section describes how to crea te an d u se symbolic objects. It also describes
the default symbolic variable. If you are familiar with version 1 of the Symbolic
Math Toolbox, please note that version 2 uses substantially different and
simpler syntax.
(If you already have a copy of the Maple V Release 4 library, please see the
reference pa ge for mapleinit before proceeding.)
To get a quick online introduction to the Symbolic Math Toolbox, type demos a t
th e MATLAB comm an d line. MATLAB displays t he MATLAB Dem os dialog
box. Select Sy m bo l i c Ma t h (in t he left list box) an d th en Int r o duc t i o n (in the
right list box).
Symbolic ObjectsThe S ymbolic Mat h Toolbox defines a new MATLAB da ta type called a
symbolic object or sym (see Chapter 14 in U s in g M A T L A B for a n int roduction
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
12/300
1 Tutorial
1-6
to MATLAB classes a nd objects). Int ern ally, a sym bolic object is a dat astr uctu re th at s tores a str ing represen ta tion of th e symbol. The Symbolic Mat h
Toolbox us es symbolic objects to re pr esen t symbolic var iables, express ions , an d
matrices.
Creating Symbolic Variables and ExpressionsTh e sym command lets you construct symbolic variables and expressions. For
example, th e comma nds
x = sym('x')
a = sym('alpha')
create a symbolic variable x t h a t p r i n t s a s x and a symbolic variable a t h a t
prints as alpha.
Suppose you want to use a symbolic variable to represent the golden ra tio
The comma nd
rho = sym('(1 + sqrt(5))/2')
achieves this goal. Now you can perform various mathematical operations on
rho. For example
f = rho^2 rho 1f =
(1/2+1/2*5^(1/2))^2-3/2-1/2*5^(1/2)
simplify(f)
r e t u r n s
0
Now suppose you want to study t he qu adra tic fun ction f = ax2 + bx + c. The
statem ent
f = sym('a*x^2 + b*x + c')
assigns th e symbolic expression ax2 + bx + c to the variable f. Observe tha t in
th is case, th e Symbolic Math Toolbox does n ot creat e var iables corr esponding
1 5+2-----------------=
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
13/300
Getting Started
1-7
to the term s of the expression, a, b, c, a n d x. To perform symbolic mat hopera tions (e.g., integra tion, different iation, subst itut ion, et c.) on f, you need
to create the variables explicitly. You can do this by typing
a = sym('a')
b = sym('b')
c = sym('c')
x = sym('x')
or simplysyms a b c x
In genera l, you can use sym or syms to creat e symbolic var iables. We
recommend you use syms because it requires less typing.
Symbolic and Numeric Conversions
Lets ret urn to the golden ra tio
Th e sym function has four options for returning a symbolic representation of
the num eric value rho = (1 + sqrt(5)/2). The 'f' option
sym(rho,'f')
returns a symbolic floating-point representation
'1.9e3779b97f4a8'*2^(0)
Th e 'r' option
sym(rho,'r')
returns the rational form
7286977268806824*2^(52)
1 5+
2-----------------=
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
14/300
1 Tutorial
1-8
This is the default setting for sym. That is, calling sym without a secondargum ent is the sam e as using sym with t he 'r' option.
sym(rho)
ans =
7286977268806824*2^(52)
sym(.25)
ans =
1/4
The third option 'e' returns the rational form ofrho plus t he d ifference
between the theoretical rational expression for rho and its actual (machine)
float ing-point value in ter ms ofeps (th e float ing-point rela tive a ccur acy)
sym(rho,'e')
ans =
7286977268806824*2^(52)
In this case, the theoretical and actual floating-point values for rho a r e t h e
sam e. For 1/3, however, we obta in
sym(1/3,'e')
ans =1/3-eps/12
The four th option 'd' retu rns the decimal expansion ofrho up to the n um ber
of significant digits specified by digits.
sym(rho,'d')
ans =
1.6180339887498949025257388711907
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
15/300
Getting Started
1-9
The default va lue ofdigits is 32 (hence, sym(rho,'d') return s a num ber with32 significant digits), but if you pr efer a s hort er r epresen ta tion, use the digits
command as follows.
digits(7)
sym(rho,'d')
ans =
1.618034
A par ticularly effective u se ofsym is to convert a mat rix from nu meric to
symbolic form . Th e comm an d
A = hilb(3)
generates the 3-by-3 Hilbert m atr ix.
A =
1.0000 0.5000 0.33330.5000 0.3333 0.2500
0.3333 0.2500 0.2000
By applying sym t oA
A = sym(A)
you can obtain the (infinitely precise) symbolic form of the 3-by-3 Hilbert
m atrix.
A =
[ 1, 1/2, 1/3]
[ 1/2, 1/3, 1/4]
[ 1/3, 1/4, 1/5]
Constructing Real and Complex VariablesTh e sym command allows you to specify the mathematical properties ofsymbolic varia bles by using t he 'real' option. That is, the st at ements
x = sym('x','real'); y = sym('y','real');
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
16/300
1 Tutorial
1-10
or more efficientlysyms x y real
z = x + i*y
crea te symbolic var iables x a n d y tha t h ave the added m ath em atical property
of being real variables. Specifically this means that the expression
f = x^2 + y^2
is strictly nonnegative. Hence, z is a (formal) complex var iable an d can bemanipulated as such. Thus, the commands
conj(x), conj(z), expand(z*conj(z))
return the complex conjugates of the variables
x, x i*y, x^2 + y^2
Th e conj comm an d is th e complex conjugat e operat or for th e t oolbox. If
conj(x) == x return s 1, then x is a r eal variable.
To clear x of its rea l propert y, you mu st type
syms x unreal
or
x = sym('x','unreal')
The comma nd
clear x
does n ot m a k e x a n onr eal variable.
Creating Abstract FunctionsIf you want to creat e a n abstr act (i.e., indetermina nt) function f(x), type
f = sym('f(x)')
Then f acts like f(x) and can be ma nipulated by t he toolbox comma nds. To
constr uct t he first difference ra tio, for example, type
df = (subs(f,'x','x+h') f)/'h'
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
17/300
Getting Started
1-11
orsyms x h
df = (subs(f,x,x+h)f)/h
which returns
df =
(f(x+h)-f(x))/h
This a pplicat ion ofsym is useful when comput ing Fourier, Laplace, andz-transforms (see the section Int egra l Tran sforms).
Using sym to Access Maple FunctionsSimilarly, you can access Maples factorial function k!, using sym.
kfac = sym('k!')
To comp ut e 6! or n!, t ype
syms k n
subs(kfac,k,6), subs(kfac,k,n)
ans =
720
ans =
n!
Or, if you wan t to compu te, for example, 12!, simply use t he prod function
prod(1:12)
Example: Creating a Symbolic MatrixA circulan t ma tr ix ha s the pr opert y tha t each r ow is obta ined from th e previous
one by cyclically permuting the entries one step forward. We create the
circulant matrixA whose elements are a, b, a n d c, using the comma nds
syms a b c
A = [a b c; b c a; c a b]
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
18/300
1 Tutorial
1-12
which returnA =
[ a, b, c ]
[ b, c, a ]
[ c, a, b ]
SinceA is circulant , the s um over ea ch row and column is the sa me. Lets check
this for the first row and second column. The command
sum(A(1,:))
r e t u r n s
ans =
a+b+c
The comma nd
sum(A(1,:)) == sum(A(:,2)) % This is a logical test.
r e t u r n s
ans =
1
Now replace th e (2,3) entr y ofA with beta and the variable b with alpha. The
commands
syms alpha beta;A(2,3) = beta;
A = subs(A,b,alpha)
r e t u r n
A =
[ a, alpha, c]
[ alpha, c, beta]
[ c, a, alpha]
From this example, you can see that using symbolic objects is very similar to
using r egular MATLAB nu mer ic objects.
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
19/300
Getting Started
1-13
The Default Symbolic VariableWhen m an ipulating ma thema tical functions, th e choice of the independentvariable is often clear from context. For example, consider the expressions in
the table below.
If we ask for th e derivat ives of th ese expressions, with out specifying th e
independent var iable, then by mat hemat ical convention we obtain f' = nxn ,
g' = a cos(a t + b), an d h ' = Jv(z)(v/z)Jv+1(z). Lets a ssume t ha t the independent
variables in t hese th ree expressions a re x, t, a n d z , resp ectively. The other
symbols, n , a , b, and v , are usu ally regar ded as consta nts or para meters. If,
however, we wanted to differentiate the first expression with respect to n , for
example, we could wr ite
or
to get xn ln x.
By mathematical convention, independent variables are often lower-case
letters found near the end of the Latin alphabet (e.g., x, y, or z). This is th e idea
behind findsym, a utility function in the toolbox used to determine default
symbolic varia bles. Defau lt symbolic varia bles ar e u tilized by t he calculus,
simplificat ion, equ at ion-solving, a nd tr an sform functions. To apply th is ut ility
to the example discussed above, type
syms a b n nu t x z
f = x^n; g = sin(a*t + b); h = besselj(nu,z);
This creates the symbolic expressions f, g, a n d h to mat ch t he example. To
differentiate these expressions, we use diff.
diff(f)
Mathematical Function MATLAB Command
f = xn f = x^n
g = sin(at+b) g = sin(a*t + b)
h = J v(z) h = besselj(nu,z)
d
d n-------f x( )
d
d n-------x
n
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
20/300
1 Tutorial
1-14
r e t u r n sans =
x^n*n/x
See t he section Differentiation for a more det ailed discussion of
different iation an d th e diff command.
Her e, as a bove, we did not specify the varia ble with respect t o different iation.
How did the toolbox determine that we wanted to differentiate with respect to
x? The answer is the findsym command.
findsym(f,1)
which returns
ans =
x
Similarly, findsym(g,1) a n d findsym(h,1) r e t u r n t a n d z, respectively. Her e
the second a rgumen t offindsym denotes the number of symbolic variables we
wan t to find in t he symbolic object f, using the findsym rule (see below). The
absence of a second argument in findsym resu lts in a list of all symbolic
varia bles in a given symbolic expression. We see th is demonstr at ed below. The
command
findsym(g)
returns t he result
ans =
a, b, t
findsym Rule: The defau lt symbolic var iable in a symbolic expression is th eletter tha t is closest t o 'x' alph abet ically. If ther e ar e t wo equa lly close, th e
lett er later in the a lphabet is chosen.
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
21/300
Getting Started
1-15
Here a re some exam ples:
Creating Symbolic Math FunctionsThere a re two ways to creat e functions:
Use symbolic expressions
Create an M-file
Using Symbolic ExpressionsThe sequ ence of comman ds
syms x y z
r = sqrt(x^2 + y^2 + z^2)
t = atan(y/x)
f = sin(x*y)/(x*y)
generates the symbolic expressions r, t, and f. You can use diff, int, subs,an d other Symbolic Mat h Toolbox fun ctions to ma nipulat e such express ions.
Expression Variable Returned Byfindsym
x^n x
sin(a*t+b) t
besselj(nu,z) z
w*y + v*z y
exp(i*theta) theta
log(alpha*x1) x1
y*(4+3*i) + 6*j y
sqrt(pi*alpha) alpha
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
22/300
1 Tutorial
1-16
Creating an M-FileM-files perm it a more gener al u se of functions. Su ppose, for example, you wa ntto create the sinc function sin(x)/x. To do this, create an M-file in the @sym
directory.
function z = sinc(x)
%SINC The symbolic sinc function
% sin(x)/x. This function
% accepts a sym as the input argument.
if is equal(x,sym(0))z = 1;
else
z = sin(x)/x;
end
You can extend such examples to functions of several variables. For a more
detailed discussion on object-oriented programming, see Chapter 14 of the
U s in g M A T L A B guide.
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
23/300
Calculus
1-17
CalculusThe Symbolic Math Toolboxes pr ovide functions to do t he basic opera tions of
calculus; differentiation, limits, integration, summation, and Taylor series
expansion. The following sections out line t hese functions.
DifferentiationLet s crea te a symbolic expre ssion.
syms a x
f = sin(a*x)
Then
df = diff(f)
differentiates f with respect to its symbolic variable (in this case x), as
determined by findsym.df =
cos(a*x)*a
To differentiat e with respect to th e var iable a, type
dfa = diff(f,a)
which returns d f / d a
dfa=
cos(a*x)*x
Mathematical Function MATLAB Command
f = x n
f ' = nxn 1
f = x^n
diff(f) or diff(f,x)
g = acos(at+b)
g' = acos(at+b)
g = acos(a*t + b)
diff(g) or diff(g,t)
h = Jv(z)
h ' = Jv(z)(v/z) Jv+1 (z)
h = besselj(nu, z)
diff(h) or diff(h,z)
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
24/300
1 Tutorial
1-18
To calculate the second derivatives with respect to x a n d a, r espectively, t ypediff(f,2) % or diff(f,x,2)
which returns
ans =
sin(a*x)*a^2
a n d
diff(f,a,2)
which returns
ans =
sin(a*x)*x^2
Define a, b, x, n, t, and thet a in th e MATLAB workspace, using the sym
comma nd. The table below illustr at es th e diff command.
To differentiate the Bessel function of the first kind, besselj(nu,z), with
respect t o z, type
syms nu z
b = besselj(nu,z);
db = diff(b)
which returns
db =besselj(nu+1,z)+nu/z*besselj(nu,z)
f diff(f)
x^n x^n*n/x
sin(a*t+b) a*cos(a*t+b)
exp(i*theta) i*exp(i*theta)
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
25/300
Calculus
1-19
Th e diff fun ction can a lso ta ke a symbolic ma tr ix as its inpu t. In th is case, th edifferentiation is done element-by-element. Consider the example
syms a x
A = [cos(a*x),sin(a*x);sin(a*x),cos(a*x)]
which returns
A =
[ cos(a*x), sin(a*x)]
[ sin(a*x), cos(a*x)]
The comma nd
dy = diff(A)
r e t u r n s
dy =
[ sin(a*x)*a, cos(a*x)*a]
[ cos(a*x)*a, sin(a*x)*a]
You can a lso perform differentia tion of a column vector with respect t o a r ow
vector. Consider t he tr an sform at ion from Euclidean (x, y, z) to spherical (r, , )coordina tes a s given by x = r cos cos , y = r cos si n , and z = r si n . Notet h a t corresponds to elevation or latitude while denotes azimuth orlongitude.
z
y
x
(x,y,z)
r
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
26/300
1 Tutorial
1-20
To calculate the J acobian m at rix,J
, of this tr ansforma tion, use the jacobianfunction. The mathematical notation for J is
=
For t he pur poses of toolbox synta x, we use l for a n d f for . The comma nds
syms r l f
x = r*cos(l)*cos(f); y = r*cos(l)*sin(f); z = r*sin(l);
J = jacobian([x; y; z], [r l f])
return the J acobian
J =
[ cos(l)*cos(f), r*sin(l)*cos(f), r*cos(l)*sin(f)]
[ cos(l)*sin(f), r*sin(l)*sin(f), r*cos(l)*cos(f)]
[ sin(l), r*cos(l), 0]
and t he com m an d
detJ = simple(det(J))
r e t u r n s
detJ =
cos(l)*r^2
Notice that the first argument of the jacobian function must be a column
vector an d th e second a rgum ent a row vector. Moreover, since th e determ ina nt
of the Jacobian is a rather complicated trigonometric expression, we used the
simple comma nd to ma ke tr igonometric substitutions an d r eductions
(simplifications). Th e se ction Simplifications and Substitutions discusses
simplificat ion in m ore deta il.
J x y x, ,( )r , ,( )-----------------------
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
27/300
Calculus
1-21
A table summar izing diff a n d jacobian follows.
LimitsThe fundamental idea in calculus is to make calculations on functions as a
varia ble gets close to or a pproaches a cert ain va lue. Recall th at th e definition
of th e der ivative is given by a limit
provided t his limit exists. The Symbolic Math Toolbox a llows you t o compu tethe limits of functions in a direct manner. The commands
syms h n x
dc = limit( (cos(x+h) cos(x))/h,h,0 )
Mathematical Operator MATLAB Command
f(x) = exp(ax + b)
syms a b x
f = exp(a*x + b)
diff(x) or diff(f,x)
diff(f,a)
diff(f,b,2)
r = u 2 + v2
t = arctan (v/ u )
syms r t u v
r = u^2 + v^2
t = atan(v/u)
J = jacobian([r:t],[u,v])
xd
df
ad
df
b2
2
d
d f
Jr t,( )u v,( )-----------------=
f x( )f x h+( ) f x( )
h----------------------------------
h 0lim=
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
28/300
1 Tutorial
1-22
which return
dc =
sin(x)
a n d
limit( (1 + x/n)^n,n,inf )
which returns
ans =
exp(x)
illustra te t wo of the m ost importan t limits in mat hema tics: the derivative (in
this case of cos x) and the exponential function. While many limits
are two sided(that is, the result is the same whether the approach is from theright or left ofa), limits at the singularities of f(x) are not. Hence, the th ree
limits,
, , a nd
yield th e thr ee distinct results: undefined, , and + , respectively.
In the case of undefined limits, the Symbolic Math Toolbox returns NaN (not anum ber). The comma nd
limit(1/x,x,0) % Equivalently, limit(1/x)
r e t u r n s
ans =
NaN
The comma nd
limit(1/x,x,0,'left')
r e t u r n s
ans =
inf
f x( )x alim
1
x---
x 0lim
1
x---
x 0
lim1
x---
x 0+
lim
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
29/300
Calculus
1-23
while th e comma nd
limit(1/x,x,0,'right')
r e t u r n s
ans =
inf
Observe tha t t he defau lt case, limit(f) is the sam e as limit(f,x,0). Explore
the options for the limit command in this table. Here, we assume that f is afunction of t he symbolic object x.
IntegrationIff is a symbolic expression, th en
int(f)
attempts to find another symbolic expression, F, so that diff(F) = f. That is,
int(f) returns the indefinite integral or antiderivative off (provided one exist s
in closed form ). Similar to differen tiat ion,
int(f,v)
Mathematical Operation MATLAB Command
limit(f)
limit(f,x,a) or
limit(f,a)
limit(f,x,a,'left')
limit(f,x,a,'right')
f x( )x 0lim
f x( )x alim
f x( )x a
lim
f x( )x a
+lim
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
30/300
1 Tutorial
1-24
uses the symbolic object v as t he variable of integration, ra ther than the
variable determined by findsym. See h ow int works by looking at this table.
In cont ra st t o differen tiat ion, symbolic integr at ion is a m ore complicat ed ta sk.
A number of difficulties can arise in computing the integral. The
antiderivative, F, ma y not exist in closed form ; it ma y define an un familiar
fun ction; it ma y exist, but t he softwa re can t find the a nt iderivative; th e
softwa re could find it on a la rger compu ter , but r un s out of time or m emory onthe available machine. Nevertheless, in many cases, MATLAB can perform
symbolic integra tion successfully. For exa mple, creat e t he symbolic varia bles
syms a b theta x yn x1 u
This table illustrates integration of expressions containing those variables.
Mathematical Operation MATLAB Command
int(x^n) or
int(x^n,x)
int(sin(2*x),0,pi/2) orint(sin(2*x),x,0,pi/2)
g = cos(a*t + b)
int(g) or
int(g,t)
int(besselj(1,z)) or
int(besselj(1,z),z)
f int(f)
x^n x^(n+1)/(n+1)
y^(1) log(y)
n^x 1/log(n)*n^x
xn
xd xn 1+
n 1+-------------=
2x( )sin xd
0
2
1=
g a t b+( )cos=
g t( ) td a t b+( )si n a=
J1 z( ) d z J 0 z( )=
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
31/300
Calculus
1-25
The last example shows wha t h appen s if th e toolbox can t find th e
an tiderivat ive; it simply return s t he comma nd, including th e var iable of
integration, unevaluated.
Definite int egrat ion is also possible. The comm an ds
int(f,a,b)
a n d
int(f,v,a,b)
ar e u sed t o find a symbolic expression for
a n d
respectively.
Here ar e some additiona l exam ples.
sin(a*theta+b) cos(a*theta+b)/a
exp(x1^2) 1/2*pi^(1/2)*erf(x1)
1/(1+u^2) atan(u)
besselj(nu,z) int(besselj(nu,z),z)
f a, b int(f,a,b)
x^7 0, 1 1/8
1/x 1, 2 log(2)
log(x)*sqrt(x) 0, 1 4/9exp(x^2) 0, inf 1/2*pi^(1/2)
bessel(1,z) 0, 1 besselj(0,1)+1
f int(f)
f x( )a
b
d x f v( ) vda
b
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
32/300
1 Tutorial
1-26
For the Bessel function (besselj) example, it is possible to compu te a
numer ical a pproximation to the value of the integra l, using the double
function. The command
a = int(besselj(1,z),0,1)
r e t u r n s
a =
besselj(0,1)+1
and t he com m an d
a = double(a)
r e t u r n s
a =
0.23480231344203
Integration with Real ConstantsOne of the subt leties involved in symbolic integra tion is t he value of various
par ameter s. For example, it would seem evident t ha t t he expression
is the positive, bell shaped curve t hat tends to 0 as x tends to for a ny real
number k. An exam ple of th is curve is depicted below with
and genera ted, using these comma nds.
syms x
k = sym(1/sqrt(2));
f = exp((k*x)^2);
ezplot(f)
ek x( ) 2
k1
2-------=
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
33/300
Calculus
1-27
The Ma ple kern el, however, does not, a priori, tr eat t he expressions k2 or x2 a s
positive numbers. To the contrary, Maple assumes that the symbolic variablesx a n d k a s a priori indeter mina te. That is, they are purely formal variables with
no mat hema tical properties. Consequently, the initial at tempt to comput e th e
integral
in t he S ymbolic Math Toolbox, using t he comma nds
syms x k;
f = exp((k*x)^2);
int(f,x,inf,inf) % Equivalently, inf(f,inf,inf)
3 2 1 0 1 2 3
0
0.2
0.4
0.6
0.8
1
x
exp(1/2*x^2)
ek x( ) 2
d x
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
34/300
1 Tutorial
1-28
result in the output
Definite integration: Can't determine if the integral is
convergent.
Need to know the sign of --> k^2
Will now try indefinite integration and then take limits.
Warning: Explicit integral could not be found.
ans =
int(exp(k^2*x^2),x= inf..inf)
In t he n ext section, you well see how to make k a r eal variable an d ther efore k2
positive.
Real Variables via symNotice th at Maple is not able to determ ine th e sign of the expression k^2. How
does one sur mount t his obsta cle? The an swer is to ma ke k a r eal variable, using
t h e sym comma nd. One part icularly u seful featur e ofsym, nam ely the realoption, allows you to declare k to be a real var iable. Consequently, the integra l
above is compu ted, in th e t oolbox, using t he sequence
syms k real % Be sure that x has been declared a sym.
int(f,x,inf,inf)
which returns
ans =
signum(k)/k*pi^(1/2)
Notice t ha t k is now a symbolic object in t he MATLAB workspa ce and a rea l
variable in th e Maple ker nel workspa ce. By typing
clear k
you only clear k in the MATLAB workspace. To ensure that k ha s no forma l
propert ies (tha t is, to ensure k is a purely formal variable), type
syms k unreal
This variation of the syms command clears k in t he Ma ple work space. You can
also declar e a sequen ce of symbolic var iables w , y, x, z to be real, using
syms w x y z real
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
35/300
Calculus
1-29
In this case, all of the var iables in between t he words syms a n d real a r e
assigned the property real. That is, they are r eal variables in th e Maple
workspace.
Mathematical Operation MATLAB Commands
f(x) = ek x syms k x
f = exp(k*x)
int(f) or int(f,x)
int(f,k)
int(f,x,0,1) or int(f,0,1)
syms k real
g = exp((k*x)^2)
int(g,x,inf,inf) or
int(g,inf,inf)
f x( ) xd
f k( ) kd
f x( ) xd0
1
g x( ) e k x( )2
=
g x( ) xd
1
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
36/300
1 Tutorial
1-30
Symbolic SummationYou can compute symbolic summations, when they exist, by using the symsumcommand. For example, the p-series
adds to 2/6, wh ile t h e geom et r ic ser ies 1 + x +x2 + ... adds to 1/(1-x), pr ovided| x| < 1. Three summ at ions a re demonstra ted below.
syms x k
s1 = symsum(1/k^2,1,inf)
s2 = symsum(x^k,k,0,inf)
s1 =
1/6*pi^2
s2 =
-1/(x-1)
11
22
------1
32
------ + + +
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
37/300
Calculus
1-31
Taylor SeriesThe statem ent
T = taylor(f,8)
r e t u r n s
T =
1/9+2/81*x^2+5/1458*x^4+49/131220*x^6
which is all the t erm s up t o, but n ot including, order eight (O(x8)) in t he Ta ylorseries for f(x).
Technically, T is a MacLaurin series, since its basepoint is a = 0.
These comma nds
syms x
g = exp(x*sin(x))
t = taylor(g,12,2)
generate the first 12 nonzero terms of the Taylor series for g about x = 2.
x a( )n
n 0=
fn( )
a( )n !
-----------------
1
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
38/300
1 Tutorial
1-32
Lets plot th ese functions together to see how well this Ta ylor appr oximation
compar es t o the actua l function g.
xd = 1:0.05:3; yd = subs(g,x,xd);
ezplot(t, [1,3]); hold on;
plot(xd, yd, 'r-.')
title('Taylor approximation vs. actual function');
legend('Function','Taylor')
Special thanks to Professor Gunnar Bckstrm of UMEA in Sweden for this
example.
Then the command
pretty(T)
prints T in a forma t r esembling typeset ma thema tics.
2 4 49 6
1/9 + 2/81 x + 5/1458 x + ------ x
131220
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
1
2
3
4
5
6
x
Taylor approximation vs. actual function
FunctionTaylor
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
39/300
Calculus
1-33
Extended Calculus ExampleThe function
provides a starting point for illustrating several calculus operations in the
toolbox. It is also an interesting function in its own right. The statements
syms x
f = 1/(5+4*cos(x))
store t he symbolic expression defining t he fun ction in f.
Plotting Symbolic FunctionsThe Symbolic Math Toolbox offers a set of easy-to-use commands for plotting
symbolic expressions, including plan ar curves (ezplot), cont our s (ezcontour
a n d ezcontourf), surfaces (ezsurf, ezsurfc, ezmesh, and ezmeshc), polar
coordin at es (ezpolar), and parametrically defined curves (ezplot a n d
ezplot3) and sur faces (ezsurf). See Chapter 2, Reference for a detailed
description of these functions. The rest of this section illustrates the use of
ezplot to gra ph functions of th e form y=f(x).
f x( )1
5 4 x( )cos+------------------------------=
1
http://-/?-http://-/?- -
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
40/300
1 Tutorial
1-34
The fun ction ezplot(f) produces th e plot off(x) as shown below.
Th e ezplot fun ction t ries to ma ke r easona ble choices for t he r an ge of the x-axis
and for the resulting scale of the y-axis. Its choices can be overr idden by a n
additional input argum ent, or by subsequentaxis
commands. The defaultdomain for a function displayed by ezplot is 2 x 2. To alter the domain,type
ezplot(f,[a b])
This produces a graph off(x) for a x b.
Lets n ow look at th e second derivat ive of th e function f.
f2 = diff(f,2)
f2 =
32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x)
6 4 2 0 2 4 6
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
x
1/(5+4*cos(x))
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
41/300
Calculus
1-35
Equivalently, we can type f2 = diff(f,x,2). The default scaling in ezplot
cuts off par t off2s graph. Set the a xes limits man ually to see the entire
function.
ezplot(f2)
axis([2*pi 2*pi 5 2])
From the graph, it appears that the values off' '(x) lie between -4 an d 1. As it
tur ns out, th is is not t rue. We can calculate the exact r ange for f (i.e., comp ut e
its actual maximum and minimum).
The actual maxima and minima off''(x) occur a t th e zeros off' ' '(x). The
statem ents
f3 = diff(f2);
pretty(f3)
6 4 2 0 2 4 65
4
3
2
1
0
1
2
x
32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x)
1 T l
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
42/300
1 Tutorial
1-36
compute f' ' '(x) an d display it in a more reada ble forma t.
3
sin(x) sin(x) cos(x) sin(x)
384 --------------- + 96 --------------- 4 ---------------
4 3 2
(5 + 4 cos(x)) (5 + 4 cos(x)) (5 + 4 cos(x))
We can simplify and th is expression using the stat ements
f3 = simple(f3);
pretty(f3)
2 2
sin(x) (96 sin(x) + 80 cos(x) + 80 cos(x) 25)
4 -------------------------------------------------
4
(5 + 4 cos(x))
Now use th e solve function to find th e zeros off' ' '(x).
z = solve(f3)
returns a 5-by-1 symbolic matrix
z =
[ 0]
[ atan((25560*19^(1/2))^(1/2),10+3*19^(1/2))][ atan((25560*19^(1/2))^(1/2),10+3*19^(1/2))]
[ atan((255+60*19^(1/2))^(1/2)/(103*19^(1/2)))+pi]
[ atan((255+60*19^(1/2))^(1/2)/(103*19^(1/2)))pi]
each of whose en tr ies is a zero off'''(x). The comma nd
format; % Default format of 5 digits
zr = double(z)
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
43/300
Calculus
1-37
converts the zeros to double form.
zr =
0
0+ 2.4381i
0 2.4381i
2.4483
2.4483
So far , we have foun d th ree r eal zeros and two complex zeros. However, a graph
off3 shows that we have not yet found all its zeros.
ezplot(f3)
hold on;
plot(zr,0*zr,'ro')
plot([2*pi,2*pi], [0,0],'g-.');
title('Zeros of f3')
6 4 2 0 2 4 6
3
2
1
0
1
2
3
x
Zeros of f3
1 T t i l
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
44/300
1 Tutorial
1-38
This occurs becau se f'''(x) cont ains a factor of sin (x), which is zero at integer
mult iples of. The fun ction, solve(sin(x)), however, only reports t he zer o atx = 0.
We can obtain a complete list of the real zeros by translating zr
zr = [0 zr(4) pi 2*pizr(4)]
by mu ltiples of 2
zr = [zr2*pi zr zr+2*pi];
Now lets plot th e tr an sform ed zr on our graph for a complete picture of the
zeros off3.
plot(zr,0*zr,'kX')
The first zero off'''(x) found by solve is at x = 0. We substitute 0 for the
symbolic variable in f2
f20 = subs(f2,x,0)
6 4 2 0 2 4 6
3
2
1
0
1
2
3
x
Zeros of f3
l l
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
45/300
Calculus
1-39
to compute the corresponding value off ''(0).
f20 =
0.0494
A look at the graph off''(x) shows that this is only a local minimum, which we
demonstr at e by replott ing f2.
clf
ezplot(f2)
axis([2*pi 2*pi 4.25 1.25])ylabel('f2');
title('Plot of f2 = f''''(x)')
hold on
plot(0,double(f20),'ro')
text(1,0.25,'Local minimum')
The resulting plot
6 4 2 0 2 4 6
4
3.5
3
2.5
2
1.5
1
0.5
0
0.5
1
x
Plot of f2 = f(x)
f2
Local minimum
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
46/300
1 Tutorial
1-40
indicates tha t the global minima occur near x = - a n d x = . We candemonstr at e th at they occur exactly at x= , u sing t he following sequen ce ofcomma nds. First we tr y substituting - a n d into f'''(x).
simple([subs(f3,x,pi),subs(f3,x,pi)])
The result
ans =
[ 0, 0]
shows tha t - a n d ha ppen t o be crit ical points off'''(x). We can see th at - a n d are global minima by plotting f2(pi) a n d f2(pi) against f2(x).
m1 = double(subs(f2,x,-pi)); m2 = double(subs(f2,x,pi));
plot(-pi,m1,'go',pi,m2,'go')
text(-1,-4,'Global minima')
The actual m inim a a re m1, m2
ans =[ 4, 4]
as shown in the plot on the following page.
C l l
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
47/300
Calculus
1-41
The foregoing analysis confirms part of our original guess that the range of
f '' (x) is [-4, 1]. We can confirm t he other pa rt by exam ining th e four th zero of
f ' '' (x) found by solve. First extract th e fourt h zero from z and assign it to a
separate variable
s = z(4)
to obtain
s =
atan((255+60*19^(1/2))^(1/2)/(103*19^(1/2)))+pi
Executing
sd = double(s)
displays the zeros corresponding numeric value.
sd =
2.4483
6 4 2 0 2 4 6
4
3.5
3
2.5
2
1.5
1
0.5
0
0.5
1
x
Plot of f2 = f(x)
f2
Local minimum
Global minima
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
48/300
1 Tutorial
1-42
Plotting the point (s, f2(s)) against f2, using
M1 = double(subs(f2,x,s));
plot(sd,M1,'ko')
text(-1,1,'Global maximum')
visually confirms that s is a maximum.
The maximum is M1 = 1.0051.
Therefore, our guess that the m aximum off''(x) is [4, 1] was close, but
incorr ect. The a ctu al r an ge is [4, 1.0051].
Now, lets s ee if integr at ing f''(x) twice with respect to x recovers our originalfunction f(x) = 1/(5 + 4 cos x). The command
g = int(int(f2))
6 4 2 0 2 4 6
4
3.5
3
2.5
2
1.5
1
0.5
0
0.5
1
x
Plot of f2 = f(x)
f2
Local minimum
Global minima
Global maximum
Calculus
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
49/300
Calculus
1-43
r e t u r n s
g =
8/(tan(1/2*x)^2+9)
This is certa inly not th e origina l expression for f(x). Lets look a t t he d ifferen ce
f(x ) g(x ).
d = f g
pretty(d)
1 8
[ + ]
5 + 4 cos(x) 2
tan(1/2 x) + 9
We can simplify this u sing simple(d) or simplify(d). Either command
produces
ans =1
This illustrates the concept that differentiating f(x) twice, then integrat ing the
result twice, produces a function that may differ from f(x) by a linear function
of x.
Finally, integrat e f(x) once more.
F = int(f)
The result
F =
2/3*atan(1/3*tan(1/2*x))
involves the arctangent function.
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
50/300
1 Tutorial
1-44
Though F(x) is the antiderivative of a continuous function, it is itself
discontinuous as the following plot shows.
ezplot(F)
Note th at F(x) has jum ps at x = . This occurs because tan x is singular atx = .
6 4 2 0 2 4 6
1
.8
.6
.4
.2
0
.2
.4
.6
.8
1
x
2/3*atan(1/3*tan(1/2*x))
Calculus
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
51/300
Calculus
1-45
In fact, as
ezplot(atan(tan(x)))
shows, th e n umerical value ofatan(tan(x))differ s from x by a piecewise
consta nt function t ha t h as jumps at odd multiples of/2.
To obtain a representation ofF(x) th at does not h ave jumps at these points, we
must introduce a second function, J (x), tha t compensat es for t he
discontinu ities. Then we add the appr opriate multiple ofJ(x) t o F(x).
J = sym('round(x/(2*pi))');
c = sym('2/3*pi');
F1 = F+c*J
F1 =
2/3*atan(1/3*tan(1/2*x))+2/3*pi*round(1/2*x/pi)
6 4 2 0 2 4 6
1.5
1
0.5
0
0.5
1
1.5
x
atan(tan(x))
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
52/300
1-46
and plot the result.
ezplot(F1,[6.28,6.28])
This representa tion does have a continu ous gra ph.
Notice that we use the domain [6.28, 6.28] in ezplot rath er than the default
doma in [2, 2]. The reason for this is to prevent an evaluation ofF1 = 2/3 atan(1/3 tan 1/2 x) at th e singular points x = a n d x = where the
ju m ps in F a n d J do not can cel out one an oth er. The pr oper h an dling of bra nch
cut discont inuities in mu ltivalued fun ctions like ar ctan x is a deep and difficult
problem in symbolic compu ta tion. Although MATLAB a nd Maple cann ot do
this entirely automatically, they do provide the tools for investigating such
questions.
6 4 2 0 2 4 6
2.5
2
1.5
1
0.5
0
0.5
1
1.5
2
2.5
x
2/3*atan(1/3*tan(1/2*x))+2/3*pi*round(1/2*x/pi)
Simplifications and Substitutions
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
53/300
Simplifications and Substitutions
1-47
Simplifications and SubstitutionsTher e ar e several functions t ha t simplify symbolic expressions a nd a re u sed to
perform symbolic subst itut ions.
SimplificationsHere are three different symbolic expressions.
syms x
f = x^36*x^2+11*x6
g = (x1)*(x2)*(x3)
h = x*(x*(x6)+11)6
Here are their prettyprinted forms, generated by
pretty(f), pretty(g), pretty(h)
3 2
x 6 x + 11 x 6
(x 1) (x 2) (x 3)
x (x (x 6) + 11) 6
These expressions ar e th ree different representa tions of the sa me
ma th ema tical fun ction, a cubic polynomial in x.
Each of the t hree forms is preferable to the oth ers in different situat ions. The
first form , f, is the most commonly used representation of a polynomial. It is
simply a linea r combina tion of th e powers ofx. The second form , g, is the
factored form. It displays the roots of the polynomial and is the most accurate
for n um erical evalua tion near th e roots. But , if a polynomial does not ha ve such
simple roots, its factored form may not be so convenient. The third form, h, is
th e Horn er, or nest ed, represent at ion. For num erical evalu at ion, it involves th e
fewest arithmetic operations and is the most accurate for some other ranges of
x.
The symbolic simplification problem involves the verificat ion t ha t th ese th ree
expressions r epresen t t he sa me function. It also involves a less clear ly defined
objectivewhich of th ese r epresen ta tions is th e simplest?
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
54/300
1-48
This toolbox provides several functions that apply various algebraic and
trigonometric identities to transform one representation of a function into
another, possibly simpler, r epresentat ion. These functions ar e collect,
expand, horner, factor, simplify, a n d simple.
collectThe statem ent
collect(f)
views f as a polynomial in its symbolic variable, say x, an d collects all th e
coefficients with th e sa me power ofx. A second argument can specify the
var iable in which to collect t erm s if th ere is more tha n one can didat e. Here ar e
a few examples:
f collect(f)
(x1)*(x2)*(x3) x^36*x^2+11*x6
x*(x*(x6)+11)6 x^36*x^2+11*x6
(1+x)*t + x*t 2*x*t+t
Simplifications and Substitutions
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
55/300
p
1-49
expandThe statem ent
expand(f)
distr ibutes pr oducts over su ms a nd a pplies oth er ident ities involving functions
of sums. For example,
hornerThe statem ent
horner(f)
tr an sform s a symbolic polynomial f into its H orner , or nested, representa tion.
For example,
f expand(f)
a(x + y) ax + ay
(x1)(x2)(x3) x^36x^2+11x6
x(x(x6)+11)6 x^36x^2+11x6
exp(a+b) exp(a)exp(b)
cos(x+y) cos(x)*cos(y)sin(x)*sin(y)
cos(3acos(x)) 4x^3 3x
f horner(f)
x^36x^2+11x6 6+(11+(6+x)*x)*x
1.1+2.2x+3.3x^2 11/10+(11/5+33/10*x)*x
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
56/300
1-50
factorIff is a polynomial with rational coefficients, the statement
factor(f)
expresses f as a product of polynomials of lower degree with r at iona l
coefficients. Iff can not be factored over t he r at iona l numbers, th e result is f
itself. For example,
Here is another example involving factor. It factors polynomials of the form
x^n + 1. This code
syms x;
n = 1:9;
x = x(ones(size(n)));
p = x.^n + 1;
f = factor(p);
[p; f].'
retur ns a mat rix with the polynomials in its first column a nd t heir factoredforms in its second:
[ x+1, x+1 ]
[ x^2+1, x^2+1 ]
[ x^3+1, (x+1)*(x^2x+1) ]
[ x^4+1, x^4+1 ]
[ x^5+1, (x+1)*(x^4x^3+x^2x+1) ]
[ x^6+1, (x^2+1)*(x^4x^2+1) ]
[ x^7+1, (x+1)*(1x+x^2x^3+x^4x^5+x^6) ]
[ x^8+1, x^8+1 ]
[ x^9+1, (x+1)*(x^2x+1)*(x^6x^3+1) ]
f factor(f)
x^36x^2+11x6 (x1)(x2)(x3)
x^36x^2+11x5 x^36x^2+11x5
x^6+1 (x^2+1)(x^4x^2+1)
Simplifications and Substitutions
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
57/300
p
1-51
As an aside at t his point, we mention t hat factor can also factor symbolic
objects containing integers. This is an alternative to using the factor functionin MATLABs specfun directory. F or exa mple, t he following code segmen t
one = '1'
for n = 1:11
N(n,:) = sym(one(1,ones(1,n)));
end
[N factor(N)]
displays t he factors of symbolic integers consistin g of 1s.
[ 1, 1 ]
[ 11, (11) ]
[ 111, (3)*(37) ]
[ 1111, (11)*(101) ]
[ 11111, (41)*(271) ]
[ 111111, (3)*(7)*(11)*(13)*(37) ][ 1111111, (239)*(4649) ]
[ 11111111, (11)*(73)*(101)*(137) ]
[ 111111111, (3)^2*(37)*(333667) ]
[ 1111111111, (11)*(41)*(271)*(9091) ]
[ 11111111111, (513239)*(21649) ]
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
58/300
1-52
simplifyTh e simplify function is a powerful, general purpose tool that applies a
number of algebraic identities involving sums, integral powers, square roots
and other fractional powers, as well as a number of functional identities
involving t rig fun ctions, exponen tia l a nd log functions, Bessel functions,
hypergeometr ic functions, a nd the gamma function. H ere a re some examples.
simpleTh e simple function has the unorthodox mathematical goal of finding a
simplification of an expression that has the fewest number of characters. Of
course, there is little mathematical justification for claiming that one
expression is simpler than another just because its ASCII representation is
shorter, but this often proves satisfactory in practice.
Th e simple function achieves its goal by independently applying simplify,
collect, factor, and other simplification functions to an expression and
keeping tr ack of the length s of the results. The simple function then returns
the shortest result.
f simplify(f)
x(x(x6)+11)6 x^36x^2+11x6
(1x^2)/(1x) x + 1
(1/a^3+6/a^2+12/a+8)^(1/3) ((2*a+1)^3/a^3)^(1/3)
syms x y positive
log(xy) log(x) + log(y)
exp(x) exp(y) exp(x+y)besselj(2,x) ...
2*besselj(1,x)/x +
besselj(0,x)
0
gamma(x+1)x*gamma(x) 0
cos(x)^2 + sin(x)^2 1
Simplifications and Substitutions
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
59/300
1-53
Th e simple function ha s several forms, ea ch retu rn ing different outpu t. The
form
simple(f)
displays each tr ial simplificat ion a nd t he simplification fun ction t ha t pr oduced
it in th e MATLAB comma nd window. The simple function then returns the
shortest r esult. For example, the comma nd
simple(cos(x)^2 + sin(x)^2)
displays th e following alt ern at ive simplifications in t he MATLAB comm an d
window
simplify:
1
radsimp:
cos(x)^2+sin(x)^2
combine(trig):
1
factor:
cos(x)^2+sin(x)^2
expand:
cos(x)^2+sin(x)^2
convert(exp):
(1/2*exp(i*x)+1/2/exp(i*x))^21/4*(exp(i*x)1/exp(i*x))^2
convert(sincos):
cos(x)^2+sin(x)^2
convert(tan):
(1tan(1/2*x)^2)^2/(1+tan(1/2*x)^2)^2+4*tan(1/2*x)^2/
(1+tan(1/2*x)^2)^2
collect(x):
cos(x)^2+sin(x)^2
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
60/300
1-54
a n d r e t u r n s
ans =
1
This form is useful when you wa nt to check, for example, wheth er t he sh ort est
form is indeed the simplest. If you are not interested in how simple achieves
its result, use t he form
f = simple(f)
This form simply retu rn s th e shortest expression found. F or example, the
statem ent
f = simple(cos(x)^2+sin(x)^2)
r e t u r n s
f =
1
If you want to know which simplificat ion retu rned the shortest r esult, use t he
multiple output form
[F, how] = simple(f)
This form retu rn s the shortes t resu lt in th e first var iable and the simplificat ion
method used t o achieve th e resu lt in t he second var iable. For example, the
statem ent
[f, how] = simple(cos(x)^2+sin(x)^2)
r e t u r n s
f =
1
how =
combine(trig)
Th e simple function sometimes improves on the result returned by simplify,
one of the simplifications that it tries. For example, when applied to the
Simplifications and Substitutions
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
61/300
1-55
examples given for simplify, simple returns a simpler (or at least shorter)
result in two cases:
In some cases, it is advant ageous to apply simple twice to obta in t he effect of
two different simplification functions. For example, the statements
f = (1/a^3+6/a^2+12/a+8)^(1/3);
simple(simple(f))
r e t u r n
1/a+2
The first application, simple(f), uses radsimp to pr oduce (2*a+1)/a; the
second a pplicat ion uses combine(trig) to transform this to 1/a+2.
Th e simple function is particularly effective on expressions involving
trigonometric functions. Here are some examples:
f simplify(f) simple(f)
(1/a^3+6/a^2+12/a+8)^(1/3) ((2*a+1)^3/a^3)^(1/3) (2*a+1)/a
syms x y positive
log(xy) log(x)+log(y) log(x*y)
f simple(f)
cos(x)^2+sin(x)^2 1
2cos(x)^2sin(x)^2 3cos(x)^21
cos(x)^2sin(x)^2 cos(2x)
cos(x)+(sin(x)^2)^(1/2) cos(x)+isin(x)
cos(x)+isin(x) exp(ix)
cos(3acos(x)) 4x^33x
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
62/300
1-56
SubstitutionsThere are two functions for symbolic substitution: subexpr a n d subs.
subexprThese comma nds
syms a x
s = solve(x^3+a*x+1)
solve th e equa tion x^3+a*x+1 = 0 for x.
s =
[ (1/2+1/18*(12*a^3+81)^(1/2))^(1/3)
1/3*a/(1/2+1/18*(12*a^3+81)^(1/2))^(1/3) ]
[ 1/2*(1/2+1/18*(12*a^3+81)^(1/2))^(1/3)+
1/6*a/(1/2+1/18*(12*a^3+81)^(1/2))^(1/3)+
1/2*i*3^(1/2)*((1/2+1/18*(12*a^3+81)^(1/2))^(1/3)+
1/3*a/(1/2+1/18*(12*a^3+81)^(1/2))^(1/3)) ]
[ 1/2*(1/2+1/18*(12*a^3+81)^(1/2))^(1/3)+
1/6*a/(1/2+1/18*(12*a^3+81)^(1/2))^(1/3)
1/2*i*3^(1/2)*((1/2+1/18*(12*a^3+81)^(1/2))^(1/3)+
1/3*a/(1/2+1/18*(12*a^3+81)^(1/2))^(1/3)) ]
Simplifications and Substitutions
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
63/300
1-57
Use th e prett y fun ction to display s in a more reada ble form.
pretty(s)
s =
[ 1/3 a ]
[ %1 1/3 ----- ]
[ 1/3 ]
[ %1 ]
[ ]
[ 1/3 a 1/2 / 1/3 a \ ]
[ 1/2 %1 + 1/6 ----- + 1/2 i 3 |%1 + 1/3 -----| ]
[ 1/3 | 1/3| ]
[ %1 \ %1 / ]
[ ]
[ 1/3 a 1/2 / 1/3 a \ ]
[ 1/2 %1 + 1/6 ----- 1/2 i 3 |%1 + 1/3 -----| ]
[ 1/3 | 1/3| ]
[ %1 \ %1 / ]
3 1/2
%1 := 1/2 + 1/18 (12 a + 81)
Th e pretty command inherits the %n (n, an integer) notat ion from Maple to
denote subexpressions that occur multiple times in the symbolic object. The
subexpr function allows you to sa ve th ese common s ubexpressions a s well as
the symbolic object rewritten in terms of the subexpressions. Thesubexpressions are saved in a column vector called sigma.
Continu ing with the example
r = subexpr(s)
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
64/300
1-58
r e t u r n s
sigma =
108+12*(12*a^3+81)^(1/2)
r =
[ 1/6*sigma^(1/3)2*a/sigma^(1/3)]
[ 1/12*sigma^(1/3)+a/sigma^(1/3)+
1/2*i*3^(1/2)*(1/6*sigma^(1/3)+2*a/sigma^(1/3))]
[ 1/12*sigma^(1/3)+a/sigma^(1/3)
1/2*i*3^(1/2)*(1/6*sigma^(1/3)+2*a/sigma^(1/3))]
Notice t ha t subexpr creat es the var iable sigma in t he MATLAB workspa ce.
You can verify t his by t yping whos, or t he comma nd
sigma
which returns
sigma =108+12*(12*a^3+81)^(1/2)
Simplifications and Substitutions
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
65/300
1-59
subsLets find t he eigenvalues a nd eigenvectors of a circulant ma tr ixA.
syms a b c
A = [a b c; b c a; c a b];
[v,E] = eig(A)
v =
[ (a+(b^2b*ac*bc*a+a^2+c^2)^(1/2)b)/(ac),
(a(b^2b*ac*bc*a+a^2+c^2)^(1/2)b)/(ac), 1]
[ (bc(b^2b*ac*bc*a+a^2+c^2)^(1/2))/(ac),
(bc+(b^2b*ac*bc*a+a^2+c^2)^(1/2))/(ac), 1]
[ 1,
1, 1]
E =
[ (b^2b*ac*b
c*a+a^2+c^2)^(1/2), 0, 0]
[ 0, (b^2b*ac*b
c*a+a^2+c^2)^(1/2), 0]
[ 0, 0, b+c+a]
Suppose we wan t to replace th e ra ther lengthy expression
(b^2b*ac*bc*a+a^2+c^2)^(1/2)
throughout v a n d E. We first use subexpr:
v = subexpr(v,'S')
which returns
S =
(b^2b*ac*bc*a+a^2+c^2)^(1/2)
v =
[ (a+Sb)/(ac), (aSb)/(ac), 1]
[ (bcS)/(ac), (bc+S)/(ac), 1]
[ 1, 1, 1]
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
66/300
1-60
Next, substitute the symbol S into E with
E = subs(E,S,'S')
E =
[ S, 0, 0]
[ 0, S, 0]
[ 0, 0, b+c+a]
Now suppose we wan t t o evaluat e v a t a = 10. We can do this using the subs
command:
subs(v,a,10)
This r eplaces all occurr ences ofa in v with 10
[ (10+Sb)/(10c), (10Sb)/(10c), 1]
[ (bcS)/(10c), (bc+S)/(10c), 1]
[ 1, 1, 1]
Notice, however, tha t t he symbolic express ion r epresen ted by S is unaffected bythis substitu tion. Tha t is, the symbol a in S is not replaced by 10. The subs
comman d is a lso a useful function for subst itut ing in a variety of values for
several var iables in a pa rt icular expression. Lets look at S. Suppose tha t in
addition to substituting a = 10, we also wan t to substitu te th e values for 2 an d
10 for b a n d c, respectively. The way t o do th is is to set values for a, b, and c in
the workspace. Then subs evaluat es its input using th e existing symbolic and
double variables in the current workspace. In our example, we first set
a = 10; b = 2; c = 10;
subs(S)
ans =
64^(1/2)
Simplifications and Substitutions
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
67/300
1-61
To look at th e cont ent s of our workspa ce, type whos, which gives
Name Size Bytes Class
A 3x3 878 sym object
E 3x3 888 sym object
S 1x1 186 sym object
a 1x1 8 double array
ans 1x1 140 sym object
b 1x1 8 double array
c 1x1 8 double array
v 3x3 982 sym object
a, b, and c ar e now var iables of class doublewhileA, E, S, an d v rem ain symbolic
expressions (class sym).
If you want to preserve a, b, and c as symbolic variables, but still alter their
value within S, use t his procedure.
syms a b csubs(S,{a,b,c},{10,2,10})
ans =
64^(1/2)
Typing whos reveals that a, b, a n d c rem ain 1-by-1 sym objects.
Th e subs command can be combined with double to evaluate a symbolic
expression numerically. Suppose we have
syms t
M = (1t^2)*exp(1/2*t^2);
P = (1t^2)*sech(t);
and want to see how M a n d P differ graphically.
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
68/300
1-62
One appr oach is to type
ezplot(M); hold on; ezplot(P)
but this plot
does not readily help us identify the curves.
6 4 2 0 2 4 6
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
t
(1t^2)*sech(t)
Simplifications and Substitutions
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
69/300
1-63
Instead, combine subs, double, a n d plot
T = 6:0.05:6;
MT = double(subs(M,t,T));
PT = double(subs(P,t,T));
plot(T,MT,'b',T,PT,'r.')
title(' ')
legend('M','P')
xlabel('t'); grid
to produce a multicolored graph that indicates the difference between M a n d P.
Finally the use ofsubs with st rings grea tly facilitat es th e solut ion of problems
involving t he Fourier , Lapla ce, or z-transforms. See the section Integral
Transforms for complete details.
6 4 2 0 2 4 61
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
t
MP
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
70/300
1-64
Variable-Precision Arithmetic
OverviewThere are three different kinds of arithmetic operations in this toolbox.
Numer ic MATLABs float ing-point ar ithmetic
Rational Maples exact sym bolic ari thm etic
VP A M a p le s va r i a bl e-p r e ci si on a r i t h m et i c
For example, the MATLAB sta tement s
format long
1/2+1/3
use numeric computation to produce
0.83333333333333
With the Symbolic Math Toolbox, the statement
sym(1/2)+1/3
uses symbolic computa tion t o yield
5/6
And, also with the toolbox, the statements
digits(25)vpa(1/2+1/3)
use variable-precision ar ithmetic to ret urn
.8333333333333333333333333
The float ing-point opera tions used by numer ic ar ithm etic ar e the fast est of th e
three, and require the least computer memory, but the results are not exact.
The n um ber of digits in th e prin ted out put of MATLABs double quan tities iscontrolled by th e format statement, but the internal representation is always
the eight-byte floating-point representation provided by the particular
computer hardware.
In t he comput at ion of th e numer ic result a bove, th ere ar e actually three
roundoff errors, one in th e division of 1 by 3, one in th e a ddition of 1/2 to th e
Variable-Precision Arithmetic
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
71/300
1-65
result of the division, and one in the binary to decimal conversion for the
printed output. On computers that use IEEE floating-point standardar ithmetic, th e resulting intern al value is th e binary expansion of 5/6,
tru ncated t o 53 bits. This is a pproximately 16 decimal digits. But , in t his
part icular case, th e print ed output shows only 15 digits.
The symbolic operat ions used by rat ional ar ithmetic are potent ially th e m ost
expensive of th e thr ee, in term s of both compu ter t ime and memory. The resu lts
ar e exact, a s long as enough time a nd m emory a re a vailable to complete th e
computations.
Variable-precision arithmetic falls in between the other two in terms of both
cost a nd a ccur acy. A global pa ra met er, set by the fun ction digits, contr ols th e
nu mber of significan t decimal digits. Increasing t he n um ber of digits in creases
the a ccur acy, but a lso increases both th e time an d memory requirements. The
default valu e ofdigits is 32, corresponding roughly to floating-point accuracy.
The Maple docum ent at ion uses th e term ha rdwa re floating-point for wha t we
ar e calling nu mer ic or float ing-point an d uses th e t erm float ing-point
ar ithm etic for wha t we ar e calling var iable-precision a rith met ic.
Example: Using the Different Kinds of Arithmetic
Rational ArithmeticBy defau lt, the Symbolic Mat h Toolbox uses ra tional ar ithm etic operat ions, i.e.,
Maples exact symbolic ar ithm etic. Rat iona l ar ithm etic is invoked wh en you
create symbolic variables using the sym function.
Th e sym function convert s a double mat rix to its symbolic form. F or example, if
the double mat rix is
A =
1.1000 1.2000 1.3000
2.1000 2.2000 2.3000
3.1000 3.2000 3.3000
its symbolic form, S = sym(A), is
S =
[11/10, 6/5, 13/10]
[21/10, 11/5, 23/10]
[31/10, 16/5, 33/10]
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
72/300
1-66
For t his m atrixA, it is possible to discover tha t the elements ar e th e r atios of
small integers, so the symbolic representation is formed from those integers.On the other ha nd, the statem ent
E = [exp(1) sqrt(2); log(3) rand]
r e t u r n s a m a t r i x
E =
2.71828182845905 1.41421356237310
1.09861228866811 0.21895918632809
whose elements a re n ot the ra tios of small integers, so sym(E) reproduces th e
float ing-point repr esent at ion in a symbolic form.
[3060513257434037*2^(50), 3184525836262886*2^(51)]
[2473854946935174*2^(51), 3944418039826132*2^(54)]
Variable-Precision Numbers
Variable-precision numbers are distinguished from the exact rationalrepr esent at ion by th e pr esence of a decimal point. A power of 10 scale factor,
denoted by 'e', is allowed. To use var iable-precision inst ead of ra tional
ar ithmetic, creat e your variables using the vpa function.
For ma tr ices with pu rely double entries, the vpa function genera tes th e
representation that is used with variable-precision arithmetic. Continuing on
with our example, and u sing digits(4), applying vpa to the m atrix S
vpa(S)
generates the output
S =
[1.100, 1.200, 1.300]
[2.100, 2.200, 2.300]
[3.100, 3.200, 3.300]
and with digits(25)F = vpa(E)
Variable-Precision Arithmetic
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
73/300
1-67
generates
F =
[2.718281828459045534884808, 1.414213562373094923430017]
[1.098612288668110004152823, .2189591863280899719512718]
Converting to Floating-PointTo convert a rational or variable-precision number to its MATLAB
floating-point representation, use the double function.
In our example, both double(sym(E)) a n d double(vpa(E)) r e t u r n E.
Another ExampleThe next example is perhaps more interesting. Start with the symbolic
expression
f = sym('exp(pi*sqrt(163))')
The statem ent
double(f)
produces the printed floating-point value
2.625374126407687e+17
Using the second a rgument ofvpa to specify th e nu mber of digits,
vpa(f,18)
r e t u r n s
262537412640768744.
whereas
vpa(f,25)
r e t u r n s
262537412640768744.0000000
We suspect t hat f might actually have an integer value. This suspicion is
reinforced by th e 30 digit value, vpa(f,30)
262537412640768743.999999999999
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
74/300
1-68
Finally, the 40 digit value, vpa(f,40)
262537412640768743.9999999999992500725944
shows that f is very close to, but n ot exactly equa l to, an in teger.
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
75/300
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
76/300
1-70
uses a trigonometric identity to retu rn th e expected form by trying several
different ident ities a nd picking th e one tha t pr oduces th e shortestrepresentation:
A =
[ cos(2*t), sin(2*t)]
[sin(2*t), cos(2*t)]
A Givens rotation is an orthogonal matrix, so its transpose is its inverse.
Confirming this by
I = G.' *G
which produces
I =
[cos(t)^2+sin(t)^2, 0]
[ 0, cos(t)^2+sin(t)^2]
a n d t h e n
I = simple(I)
I =
[1, 0]
[0, 1]
Linear Algebraic OperationsLets do severa l basic linear algebraic operat ions.
The comma nd
H = hilb(3)
generates th e 3-by-3 H ilbert mat rix. With format short, MATLAB pr ints
H =
1.0000 0.5000 0.3333
0.5000 0.3333 0.25000.3333 0.2500 0.2000
Linear Algebra
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
77/300
1-71
The computed elements ofH ar e float ing-point nu mbers th at ar e the r atios of
small integers. Indeed, H is a MATLAB a rr ay of class double. Converting H t oa symbolic matrix
H = sym(H)
gives
[ 1, 1/2, 1/3]
[1/2, 1/3, 1/4]
[1/3, 1/4, 1/5]
This a llows su bsequent symbolic opera tions on H to produce results tha t
correspond to the infinitely precise Hilbert matrix, sym(hilb(3)), not its
floating-point appr oximat ion, hilb(3). Ther efore,
inv(H)
produces
[ 9, 36, 30][36, 192, 180]
[ 30, 180, 180]
a n d
det(H)
yields
1/2160
We can use the backslash operator to solve a system of simultaneous linear
equations. The comma nds
b = [1 1 1]'
x = H\b % Solve Hx = b
produce th e solut ion
[ 3]
[24]
[ 30]
1 Tutorial
-
7/31/2019 MathWorks. Symbolic Math Toolbox for Use With MATLAB - User's Guide (1998)(300s)_S
78/300
1-72
All three of these r esults, the inverse, the determina nt , and t he solution to the
linear system, ar e t he exact r esults corr esponding to t he infinitely precise,ra tiona l, Hilbert m at rix. On th e other ha nd, using digits(16), the comma nd
V = vpa(hilb(3))
r e t u r n s
[ 1., .5000000000000000, .3333333333333333]
[.5000000000000000, .3333333333333333, .2500000000000000]
[.3333333333333333, .2500000000000000, .2000000000000000]The decimal points in t he repr esentat ion of the individual element s ar e the
signal to use variable-precision arithmetic. The result of each arithmetic
operation is rounded to 16 significant decimal digits. When inverting the
mat rix, these err ors ar e ma gnified by the mat rix condition num ber, which for
hilb(3) is about 500. Consequently,
inv(V)
which returns
[ 9.000000000000082, 36.00000000000039, 30.00000000000035]
[36.00000000000039, 192.0000000000021, 180.0000000000019]
[ 30.00000000000035, 180.0000000000019, 180.0000000000019]
shows t he loss of two digi