26

5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

Embed Size (px)

Citation preview

Page 1: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and
Page 2: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-2

What does the Matlab function fplot do?

How to use fzero to find find a root of an equation?

What is a global variable?

How the meshgrid, view and surf functions are used to create 3-D plots.

Readings: Matlab by Pratap Chapter 4.2.2,4.3.3,5.6, 6.1,6.3

Page 3: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-3

>> fplot(@sin, [-10 10]); (plots sin(x) between -10 and 10)

>> xlabel(‘x-axis’);>> ylabel(‘y-axis’); >> title(‘y = sin(x)’);>> text(-0.5,-0.5,’any text’,’Fontsize’,20); (text starts at (-.5,-.5))

>> grid on;>> axis([-10 10 -1.5 1.5]); (resize Figure window,

axis([xmin xmax ymin ymax]))

Use the fplot command to plot either built-in or user definedfunctions (see Matlab book 3.8)

Page 4: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and
Page 5: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-5

We will consider only methods for finding real roots.

• Definition (for a function of one variable y = f(x) )If value “ r ” satisfies

f(r) = 0then “ r ” is called a root or a ("zero") of f .

• Exact SolutionsFor some functions, we can calculate roots exactly;

- Polynomials up to degree 4- Simple transcendental functions;

sin x = 0, which has an infinite number of roots:

Page 6: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-6

fzero -- built-in Matlab function for finding one root for a function y = f(x) that has only one variable.

(see Matlab book 4.2.2, 5.6)

• Requires a starting point.• The function f must be continuous.• Fast convergence!• Works with polynomials but will return only one “real” root if it exits, so use the roots function for polynomials.

Page 7: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-7

Problem: Find a root of the function f(x) = sin(x) near x= .5 .>> fzero(@sin, .5) ans =

1.8428e-18Notice that sin(0) = 0 but fzero returned a value close to but not exactly equal to zero . The expression @sin is called a function handle. A function handle is a MATLAB value that provides a means of calling a function indirectly.

Problem: Find a root of the function f(x) = x2 - ex near x= 0 .>> fzero(‘x.^2-exp(x)’ , 0)ans =

-0.7035

Page 8: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-8

One form of the fzero function is:fzero(@function_name, x0)

Where function_name is either the name of a built-in Matlab function or the name of a user defined function.x0 is an initial guess for the root. If you have no idea what x0 should be then try using the fplot function to plot the function.

Another form of the fzero function is:fzero(‘expression in one variable’, x0)

Page 9: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-9

If fzero cannot find a root then it will tell you.Example>> fzero(‘x – log(x)’, 1) % log is natural logarithm

Exiting fzero: aborting search for an interval containing a sign change because complex function value encountered during search (Function value at -0.28 is 0.99297-3.1416i)

Check function or try again with a different starting value.

Exiting fzero: aborting search for ...

ans =

NaNNaN means “not a number”

Page 10: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

If you don’t believe this then “seeing is believing” so ...>> fplot( @(x) x-log(x) , [0,5] ) % or fplot(‘x-log(x)’ , [0,5])>> axis([-1,5,0,5]);

Page 11: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-11

All variables declared in a function are “local” to that function. That is, assigning or changing the value of a variable in the function has no affect on a variable with the same name in the workspace or another function(unless you pass the value as an argument).

You may want to be able to change the variable in your workspace or share values with other functions.

To do this you must use the global command (see 4.3.3). Consider the example on the next slide. As a naming convention, we will use all capital letters for global variables.

Page 12: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-12

1. Problem Definition Write a function named total that returns the sum of the values

passed to it though the input variable x. The function total also appends the value of x to a global variable named LIST. LIST contains the history of values passed to the function total.

2. Refine, Generalize, Decompose the problem definition

(i.e., identify sub-problems, I/O, etc.)

Assume x is a scalar. (check to see if total works for row vectors)

Since LIST is global we must type

global LIST

in both the function total and at the Matlab prompt.

Page 13: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-13

Natural-Language Algorithm

To add the value of x to the end of the LIST use the Matlab code:

LIST = [LIST , x];To return the sum of all values in this new list:

result = sum(LIST);

3. Develop Algorithm (processing steps to solve problem)

Page 14: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-14

4. Write the “Function" (Code)

Use the Matlab editor to create a file total.m .

function result = total(x)

% function result = total(x)% Programmer: Tom Gambill% Date: 2/10/01% Input: a scalar, x% Output: The function total returns the sum of all values % passed to this function. If you need to access% these values, you must use the command% global LIST

global LIST

LIST = [LIST, x];result = sum(LIST);

Page 15: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-15

5. Test and Debug the Code

Note the execution sequence on the next slide.

6. Run CodeDoes the function work if x is a row vector?

Page 16: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and
Page 17: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-17

(continued from previous slide)

Page 18: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-18

(continued from previous slide)We can reset LIST from the Matlab prompt.

(LIST = empty vector)

Page 19: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-19

Example: Plot the 3-D surface described by the equation,

in the region in the x-y plane from x = -3 to 3 and y = -2 to 2.

Step 1) solve the equation for z,

(continued on the next slide)

2 2

4cos( )*cos( )* 0x y

x y e z

2 2

4cos( )*cos( )*x y

z x y e

Page 20: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-20

Step 2) create two vectors x and y . The values of x and y will determine the region in the xy plane over which the surface is plotted.

>> x = linspace(-3,3,7); >> y = linspace(-2,2,5);

Step 3) Use the meshgrid function to create two matrices, X and Y . We will use these to compute Z.

>> [X , Y] = meshgrid(x,y)

Page 21: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-21

3 2 1 0 1 2 3

3 2 1 0 1 2 3

3 2 1 0 1 2 3

3 2 1 0 1 2 3

3 2 1 0 1 2 3

X =

Y =2 2 2 2 2 2 2

1 1 1 1 1 1 1

0 0 0 0 0 0 0

1 1 1 1 1 1 1

2 2 2 2 2 2 2

Page 22: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-22

X

Y

Page 23: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-23

Step 4) compute Z by using the X and Y created by meshgrid,

>> Z = cos(X).*cos(Y).*exp(-sqrt(X.^2+Y.^2)./4) Z =

0.1673 0.0854 .1286 .2524 0.1286 0.854 0.1673

.2426 .1286 0.2050 0.4208 0.2050 .1286 .2426

.4676 .2524 0.4208 1.000 0.4208 .2524 .4676

.2426 .1286 0.2050 0.4208 0.2050 .1286 .2426

0.1673 0.0854 .1286 .2524 .1286 0.08

54 0.1673

2 2

4cos( )*cos( )*x y

z x y e

Page 24: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-24

X

Y

Z

Page 25: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-25

Step 4) compute Z by using the X and Y created by meshgrid,>> R = sqrt(X.^2+Y.^2);>> Z = cos(X).*cos(Y).*exp(-R./4);Step 5) graph in 3-D by applying the surface function, >> surf(X,Y,Z);

Page 26: 5-2 What does the Matlab function fplot do? How to use fzero to find find a root of an equation? What is a global variable? How the meshgrid, view and

5-26

We can use the Matlab functions fzero to find zeros or roots of a function of one variable.The function fzero is generic but finds only one root, the function roots applies only to polynomials but finds all roots.

The function fplot is used when you have an explicit function, (user defined or built-in). The plot function can be used for both explicitly defined functions andraw data for which we don’t know the functional relationship.

The global command allows more than one function to share(access) a single copy of a variable. You can also share the global variable with the active workspace.

3-D plots can be done in a 5-step process using the built-in functions meshgrid and surf .