Module # ONE
Module # ZERO
CALCULUS
Symbolic & Numeric
using
MatLab
By Professor Mohamad H. Hassoun
Department of Electrical & Computer Engineering
Wayne Satate University
Detroit, MI 48202
October 22, 1996
Contents:
I. Functions: Graphs, Extreme Points & Roots
II. Differentiation
III. Integration
IV. Series
clear % Just to make sure that no MatLab variables are present from a previous session.
NOTE on executing commands (green colored text) in this document: place the cursor on the command/MatLab expression you wish to execute and then type Ctrl-Enter. Make sure that variables/array definitions commands are executed before executing any following commands which depend on such definitions. Definitions in bold blue font execute automatically when you open this document; i.e., you nedd not re-execute them over.
You can get full explanation (help) of any MatLab command in this document by highlighting that command and clicking on the '?' in the bar menu above (or type Ctrl-F1).
(This Page is Left Blank for Breif Notes)
I. Functions: Graphs, Roots, Extreme Points, & More
Graphs
Consider the single variable function:
f = 'sin(x)/x' % defining a symbolic function
f =
sin(x)/x
x=1;
eval(f) % evaluting f at x = 1
ans =
0.8415
A simple plot may now be generated by using the fplot command:
fplot(f , [-20 20 -.4 1.2]) % The vector argument specifies the x & y axis ranges
[pic]
One may want to add titles and axis labels as follows
title('plot of f(x) = sin(x)/x')
xlabel('x')
ylabel('f(x)')
[pic]
Alternatively, one may evaluate the function f(.) over a range of values of its argument and the plot the data using the plot command:
z = linspace(-20, 20, 60);
y = sin(z) ./ z; % here,component-wise division (./) must be used
plot(z,y)
[pic]
Here is the same plot but without connecting the 'blue' plot points
plot(z,y,'b.')
[pic]
Extreme Points: Numerical Search for Minima & Maxima
The MatLab function fmin searches for the minima of a one-dimensional function:
xmin = fmin(f,0,5) % search for the minimum over the range 0 < x < 5.
xmin =
4.4934
x = xmin;
eval(f) % evaluate the function at the minimum
ans =
-0.2172
Similarly, the minimum point inside 10 < x < 15 is
fmin(f,10,15)
ans =
10.9041
fmin may also be used to find the maxima of f(x), by noting that the local minima of -f(x) correspond to local maxima of f(x). Let us find the maximum of f(x) in the range 5 < x < 10:
xmax = fmin('-sin(x)/x',5,10)
xmax =
7.7252
The value of f(x) at this extreme point is
x = xmax;
eval(f)
ans =
0.1284
Finding Roots: f(x) = 0
solve(f) % solves for roots of f(x) near x = 0. Symbolic solutions are attempted.
ans =
3.141592653589793
Another example (multiple solutions)
t = solve('tan(2*x) = sin(x)')
t =
[ 0]
[acos(1/2+1/2*3^(1/2))]
[acos(1/2-1/2*3^(1/2))]
numeric(t)
ans =
0
0 + 0.8314i
1.9455
II. Differentiation
MatLab allows for the differentiation of symbolic functions using the diff command. Let us try differentiating the function f(x) = sin(x)/x which was defined earlier.
g = diff(f)
g =
cos(x)/x-sin(x)/x^2
We can generate a "pretty" form of the above answer using the pretty command:
pretty(g)
cos(x) sin(x)
------ - ------
x 2
x
The second derivative of f(x) can now be evaluated as
diff(g)
ans =
-sin(x)/x-2*cos(x)/x^2+2*sin(x)/x^3
pretty(ans)
sin(x) cos(x) sin(x)
- ------ - 2 ------ + 2 ------
x 2 3
x x
The second derivative may also be evaluated directly from f(x) by
diff(f,2)
ans =
-sin(x)/x-2*cos(x)/x^2+2*sin(x)/x^3
pretty(ans)
sin(x) cos(x) sin(x)
- ------ - 2 ------ + 2 ------
x 2 3
x x
Here is how to differentiate a function h(b) = 3a -2b2 with respect to b:
diff('3*a - 2*b^2', 'b')
ans =
-4*b
In fact, the same answer will be generated even if we do not declare b to be the variable of differentiation in the diff expression; it is because diff defaults to the symbolic variable closest to 'x' as the variable of differentiation in the expression to be differentiated:
diff('3*a - 2*b^2')
ans =
-4*b
We conclude this section by generating a plot for the function h(x) = tanh(x) and its derivative over the range -4 < x < 4:
h = 'tanh(x)';
hprime = diff(h);
fplot(h,[-3,3,-1,1])
hold % this command holds current plot so that multiple % plots may be displayed.
fplot(hprime,[-3,3,-1,1],'b') % b for blue
hold % this second execution of 'hold' releases the plot
Current plot held
Current plot released
[pic]
Alternatively, we may display h and its derivative side by side using the subplot command
subplot(1,2,1) % pick the left of two subplots
fplot(h,[-3,3,-1,1]), title('tanh(x)')
subplot(1,2,2) % pick the right of two subplots
fplot(hprime,[-3,3,-1,1], 'b--'), title('Derivative of tanh(x)')
[pic]
III. Integration
Symbolic Integration
The command int(f) attempts to integrate the symbolic function f. It may be used for definate as well as indefinate integration. The following are some examples.
h = '1/(x^2 + a^2)';
pretty(h)
1
-------
2 2
x + a
int(h)
ans =
1/a*atan(x/a)
pretty(ans)
atan(x/a)
---------
a
We may also integrate w.r.t. 'a', as follows
int(h,'a')
ans =
1/x*atan(a/x)
pretty(ans)
atan(a/x)
---------
x
Other examples:
pretty(int('exp(a*x)*sin(b*x)'))
b exp(a x) cos(b x) a exp(a x) sin(b x)
- ------------------- + -------------------
2 2 2 2
a + b a + b
Next, we integrate the standard normal distribution: N(0,1) = (2p)-1exp(-.5x2)
t = int('1/sqrt(2*pi)*exp(-0.5*x^2)')
t =
.5000000000000000*erf(.7071067811865475*x)
which may also be written as 0.5erf(2-1/2 x). erf is itself an integral with no closed form expression. It is a MatLab defined function.
fplot(t,[-3,3,-.5,.5])
[pic]
Next we integrate N(0,1) over the interval [0 inf]. This should give 0.5 as answer (this is standard knowledge from probability theory!).
int('1/sqrt(2*pi)*exp(-0.5*x^2)',0,inf)
ans =
.6266570686577500*2^(1/2)/pi^(1/2)
numeric(ans)
ans =
0.5000
Here is a function with no antiderivative
int('log(x)/exp(x^2)')
ans =
int(log(x)/exp(x^2),x)
pretty(ans)
/
| log(x)
| ------- dx
| 2
/ exp(x )
Numeric Integration
If symbolic integration is not possible, one may still obtain a numerical result if the integration is defined over a numerical range (say from 1 to 100). The MatLab commands trapz or quad or quad8 may be used. quad and quad8 generally leads to more accurate integrations. Here is an example involving the above integration.
x = 1:.1:100;
y = log(x) ./ exp(x.^2);
result = trapz(x,y)
result =
0.0356
As another example, let us integrate the normal distribution suing the trapz command (we will use 500 to approximate inf)
x = 0:.1:500;
y = 1/sqrt(2*pi)*exp(-0.5*x.^2);
result = trapz(x,y)
result =
0.5000
The Laplace Integral (Laplace Transform)
One very important application of integration is in finding the Laplace Transformation of a function. This transformation is very helpful in analysing linear systems; it is also useful in solving linear ordinary differential equations (refer to Module Three on Differential Equations for details). The Laplace integral of a function f(x) takes the form
int('f(t)*exp(-s*t)', 't', 0, inf);
pretty
inf
/
|
| f(t) exp(- s t) dt
|
/
0
The following are Laplace transforms for some basic functions:
Example 1: f(t) = c, where c is a constant
int('c*exp(-s*t)','t',0,inf)
ans =
limit(-1/s*exp(-s*t)*c+1/s*c,t = inf,left)
pretty
exp(- s t) c
limit - ------------ + c/s
t -> inf- s
Here, s is a complex variable. Evaluating the above limit as t approaches infinity eliminates the first term in the limit. Thus the answer is c/s. Matlab has a build-in command for finding the Laplace integral directly. The command is laplace(f) where f is a symbolic function of the variable t (not x). If f is a constant (i.e., t does not appear in the expression for f) then the command laplace(f,'s','t') must be used. Here is the Laplace transform for the function f(t) = c
pretty(laplace('c','s','t'))
c/s
Example 2: f(t) = ce-at,
pretty(laplace('c*exp(-a*t)'))
c
-----
s + a
Example 3: f(t) = cos(w*t),
pretty(laplace('cos(w*t)'))
s
-------
2 2
s + w
IV. Series
The MatLab command symsum returns the sum of its symbolic function f(n) from a lower limit to a higher limit on n. Here is an example:
f = '(2*n-1)^2';
symsum(f,1,'n') % summing f(n) from 1 to n
ans =
11/3*n+8/3-4*(n+1)^2+4/3*(n+1)^3
factor(ans)
ans =
1/3*n*(2*n-1)*(2*n+1)
pretty(ans)
1/3 n (2 n - 1) (2 n + 1)
Another example:
f = 'x^k/k!';
symsum(f ,'k',0, inf) % summation over k.
ans =
exp(x)
This can be shown to be the correct answer by using MatLab's Taylor series expansion command (taylor):
taylor('exp(x)')
ans =
1+1*x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5+O(x^6)
Other examples:
Geometric series:
taylor('1/(1-x)')
ans =
1+1*x+1*x^2+1*x^3+1*x^4+1*x^5+O(x^6)
symsum('x^n', 'n',0,inf)
ans =
-1/(x-1)
Power series expansion of cos(x)
taylor('cos(x)')
ans =
1-1/2*x^2+1/24*x^4+O(x^6)
The mth term in this answer takes the general form -1mx2m/(2m)!. Let us sum the series from 0 to infinity:
symsum('((-1)^m)*x^(2*m)/((2*m)!)', 'm',0,inf)
ans =
cos(x)
YOU ARE NOW READY TO MOVE ON TO OTHER EXCITING COMPUTATIONS
WITH MATLAB !!!
(Other Modules Available:
Linear Algebra, Complex Numbers, & Differential Equations)
who % Please go to page 1 and read the small print!!
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.