chapter 12 review: symbolic mathematics introduction to matlab 7 engineering 161

31
Chapter 12 Review: Symbolic Mathematics Introduction to MATLAB 7 Engineering 161

Upload: myrtle-hollie-webster

Post on 31-Dec-2015

279 views

Category:

Documents


4 download

TRANSCRIPT

Chapter 12 Review: Symbolic Mathematics

Introduction to MATLAB 7Engineering 161

Symbolic Mathematics In MATLAB we can use symbols to perform

mathematical computations as well as numbers. These features are contained in the Symbolic Math

Toolbox. They are based upon Maple 8 a software package published by Waterloo Maple, Inc.

We will learn how to define expressions symbolically and then manipulate them with MATLAB functions.

Symbolic manipulations are often very useful in engineering problem solving and compliments solutions to problems with numbers.

Symbolic Mathematics II After studying the material in Chapter

11 you should be able to Create and manipulate symbolic variables Factor and simplify mathematical

expressions Solve symbolic expressions Determine the symbolic derivative of an

expression and integrate an expression.

An Example Before jumping into the details, look at some simple

examples,>> a = sym (‘x - 2’); % a and b are sym variables, they are>> b = sym (‘2*x + 3’); % strings of characters>> y = a*b % y is another string of charactersy =(x-2)*(2*x+3)>> expand(y)ans =2*x^2 - x - 6

Another Example Consider another example,

>> S = sym(‘(x^2 - 3*x – 10)/(x + 2)’);>> simplify(S)ans =x – 5

Note that the symbolic expression is defined by the sym function, the argument of the sym function is a string of characters defining the expression symbolically enclosed in single quotes.

One More Example Suppose you want to solve the equation D =

D0*exp(-Q/RT) for Q. This equation describes the rate of diffusion, see section 11.1 in the text.

>>X = sym(‘D=D0*exp(-Q/RT)’);

>>solve (X,’Q’) % Q is in single quotes to tell MATLAB

ans = % that it is a symbol

-log(D/D0)*RT

Note in MATLAB log represents the natural logarithm, normally written as ln in mathematics, log10 represents the logarithm to the base 10 and log2 represents the logarithm to the base 2.

Defining Symbolic Expressions and Variables

There are two methods, Either create the complex symbolic expression all at once

using the sym command as we did in the examples, Or, use the syms command to list all the symbolic variables

individually and then compose the expression using algebraic operators like, * or + and -, etc. >> syms a x y;>>S = x^2 -2*y^2 + 3*a;

These two MATLAB statements define the variables a, x, and y as symbolic variables, and then creates the symbolic expression S.

Note that in the first case using the sym function, only S would appear in the Workspace Window, while in the second case, S, a, x, and y all appear in the Workspace Window.

Plotting Symbolic Expressions

MATLAB provides an easy way to plot symbolic expressions of a single variable, it is called ezplot. Suppose S is a symbolic expression of x, then>>ezplot(S, [xmin, xmax]) will plot S between the limits of xmin and xmax. >> ezplot(S) always uses the range [-2 *pi, 2*pi]

You can use the commands xlabel, ylabel, and title to add x and y labels, etc., in the usual way. Also use grid on, hold on and hold off, subplots, etc.

Plotting Symbolic Expressions II

MATLAB provides a number of built in symbolic plotting functions in addition to ezplot. They are described in Table 11.3 and some of them are illustrated on pages 400-401. Do the practice exercise 11.7 on page 402 to gain some experience with the variety of symbolic plotting functions.

Remember you can use xlabel, ylabel, title, hold on and off, and subplots just as you have used them before with the basic plotting function plot(x,y)

Let’s look at another example

Consider the golden ratio,>> y = sym(‘(1 + sqrt(5))/2’);>> f = y^2 – y - 1f =(1/2 + 1/2*5^(1/2))^2-3/2-1/2*5^(1/2)>>simplify(f)0

y is a symbolic expression that we manipulate in the first and second MATLAB statements.

A Matrix Example Consider the following matrix example,

>>syms a b c d;>>A = [a b c; a b c; a b c]A =[ a, b, c][ a, b, c][ a, b, c]>>sum(A(1,:))ans =a+b+c>>sum(A(:,2))ans =b+b+b

A Matrix Example II Matrix multiplication symbolically,

>> A = [a b; c d];>> A^2ans =[ a*a+b*c, a*b+b*d][ c*a+d*c, c*b+d*d]

Note here that a, b, c and d were already declared as symbols in the previous example and hence would be in the Workspace Window as symbols. No need to redefine them for this second example.

Try taking the inverse of A using the inv function.

Some Symbolic Functions

There are a number of functions used to manipulate and simplify symbolic expressions,

collect(S) collects coefficients of S expand(S) expands S where possible factor(S) returns the factors of S where possible simplify(S) simplifies S using Maple’s rules simple(S) returns a number of potential simpler

forms poly2sym(V) creates a symbolic expression for the

polynomial described by the vector V>>V = [ 1 -4 0 2 45];>> S = poly2sym(V)S =x^4 - 4*x^3 + 2*x + 45What do you think V = sym2poly(S)

does?

Some Symbolic Functions II

Continuing, solve(f) solves the symbolic equation f

for its symbolic variable; if more than one, then for x, sets f = 0 and solves for x.

solve(f, ‘y’) solves f(x,y) for y; you don’t need the quotes if y has been

declared as a symbolic variable solve(f1,…,fn) solves a system of equations

Let’s look further into this last function.

Solve Function When used with an expression, the solve function sets

the expression to zero and solves for its roots For example, E1 = x – 3, solve(E1) would yield the answer

ans = 3. One could also have said solve(x-3), that put the

expression inside the parenthesis. The solve function normally solves for x, if you want to

solve for a different variable, then solve(f, t) for example would solve for t.

Even when the result of the solve function is a number, it is still stored as a symbolic variable and needs to be converted to be used in an arithmetic expression, use the double function.

Substitution: the subs function

Once you have a symbolic expression, you may want to substitute values into it, we use the subs function. Consider,

syms a b c x;f = a*x^2 + b*x + c;g = subs(f, a, 3)g =3*x^2 + b*x + c

Substitution II

h = subs(f, {a, b, c}, {1, 2, 3})h =x^2 + 2*x + 3subs(h, x, -2)ans =3

Substitution III Substituting an expression, consider from

Example 11.2,

syms v0 t g theta;distancex = v0 * t * cos(theta);impact_time = 2 * v0 * sin(theta)/g;impact_distance = subs(distancex, t, impact_time)impact_distance =2 * v0^2 * sin(theta)/g * cos(theta)

Solving Simultaneous Equations

Suppose we have the following,>>eq1 = sym (‘3*x + 2*y - z = 10’);>>eq2 = sym (‘-x + 3*y + 2*z = 5’);>>eq3 = sym (‘x – y – z = -1’);>>[A, B, C] = solve (eq1, eq2, eq3)A = -2B =5C =-6

Note the symbols assigned to A, B, and C are assigned alphabetically based upon the order of the variable names in the equations, eq1, eq2, eq3.

Solving Simultaneous Equations Again II

Now remember, if you want to use A, B, and C in some subsequent numerical expression, you will have to convert them to numbers, (A, B, and C have character representations from the solve operation.)

To do this, do the following;>> a = double(A), b = double(B), c =double(C); this double function converts characters to real numbers.

Now a, b, and c have numerical variables assigned to them. To avoid confusion, watch your Workspace window for the

declarations of the variables as they are created. Characters have the <1x1sym> designation while real numbers are designated as double typically.

Calculus MATLAB’s symbolic toolbox allows users to differentiate

symbolically and to perform integrations. This makes it possible to find analytical solutions (expressions), instead of numeric approximations for many problems. We will look at

differentiationintegrationsolving simple differential equations

Let’s start by looking at an example where we’ll use the int (integration) function to solve a basic problem.

Another Example: Water Flow (11.32)

Water is being pumped into an initially empty tank. It is known that the rate of flow of water into the tank at time t (seconds) is (50 – t) liters/sec. The amount of water Q that flows into the tank during the first x seconds can be shown to be equal to the integral of the expression (50 – t) evaluated from 0 to x seconds.

Determine a symbolic equation that represents the amount of water in the tank after x seconds.

Determine the amount of water in the tank after 30 seconds.

Determine the amount of water that flowed into the tank between 10 and 15 seconds after the flow was initiated.

Water Flow II Consider the following sequence of MATLAB statements;

>> f = sym (’50 – t’) % create the symbolic variable f = 50 - tf =50 – t>>Q = int (f, 0, ‘x’) % integrate f(t) between ‘0’ and ‘x’ secondsQ =50*x – 1/2*x^2>>Q = int (f, 0, 30) % integrate f(t) between 0 and 30 secondsQ =1050>>Q = int (f, 10, 15) % integrate f(t) between 10 and 15 secondsQ =375/2

Differentiation The diff function is used to determine the symbolic

derivative of a symbolic expression f. diff(f) returns the derivative of f w.r.t. the

default independent variable diff(f, ‘t’) returns the derivative of f w.r.t. the

variable t diff(f, n) returns the nth derivative of f w.r.t the

default independent variable diff(f, ‘t’, n) returns the nth derivative of f w.r.t the

variable tWe look at the example in our book in section 11.4.1, pg 419

The Drag Racer Consider a drag racer that starts from rest, accelerates to the

finish line and then decelerates back to rest. The total distance travelled is given by the following expression;

d = 20 + 20 sin (p(t – 10)/20)

Let’s use MATLAB to plot the function d vs t for 0 < t < 20 seconds, determine and plot the velocity and acceleration of the drag racer and determine the maximum velocity of the car. The car crossed the finish line at t = 10 seconds when it starts to decelerate.

The Drag Racer II Consider the following MATLAB statements;

syms t;d = 20 + 20*sin(pi*(t – 10)/20);ezplot(d, [0,20]);vel = diff(d);figure(2);ezplot(vel, [0,20]);

The Drag Racer III Continuing,

accel = diff(vel);figure(3);ezplot(accel, [0,20]);d % outputs the expression for dvel % outputs the expression for velaccel % outputs the expression for accel

The Drag Racer IV Continuing,

The maximum velocity is determined by setting the derivative of the velocity to zero and solving for t. Since accel is the derivative of vel, we have that

max_vel = solve(accel)

Integration MATLAB supports the following symbolic integration capabilities;

the int function attempts to find a function F such that diff(F) = f; diff(F) being the derivative of F.

int(f) returns the integral of the expression f w.r.t. the independent variable

int(f, ‘t’) returns the integral of f w.r.t. the variable t int(f, a, b) returns the integral of f w.r.t. the

independent variable over the interval [a,b]; a and b numerical

int(f, ‘t’, a, b) returns the integral of f w.r.t to t over the interval[a,b]; a and b numerical

Int(f, ‘m’, ‘n’) returns the integal of f w.r.t. the independent variable over the interval [m,n] where m and nare symbolic expressions.

Differential Equations MATLAB’s symbolic toolbox provides capabilities to solve differential

equations. To review these capabilities use the help dsolve command in the Command Window. dsolve is the function that you will want to explore. Use the MATLAB help features. Consider the following,

Suppose we have the equation dx/dt = -a*x and we want to solve for x

>>dsolve(‘Dx = - a*x’)ans =C1*exp(-a*t) % note the undetermined constant C1>>dsolve(‘Dx = -a*x’, ‘x(0) = 2’) % with the initial condition specifiedans =2*exp(-a*t) % pretty cool

Chapter 11 Assignment These assignments will give you some

practice with the concepts in Chapter 11.

Assignments 12.7, 12.9 and 12.10, 12.11, 12.15, 12.16, 12.29, 12.30.