fzero
Root of nonlinear function
Syntax
Description
Examples
Root Starting From One Point
Calculate
by finding the zero of the sine function near
3.
fun = @sin; % function x0 = 3; % initial point x = fzero(fun,x0)
x =
3.1416
Root Starting From an Interval
Find the zero of cosine between 1 and 2.
fun = @cos; % function x0 = [1 2]; % initial interval x = fzero(fun,x0)
x =
1.5708
Note that
and
differ in sign.
Root of a Function Defined by a File
Find a zero of the function f(x) = x3 – 2x – 5.
First, write a file called f.m.
function y = f(x)
y = x.^3 - 2*x - 5;
Save f.m on your MATLAB® path.
Find the zero of f(x)near 2.
fun = @f; % function x0 = 2; % initial point z = fzero(fun,x0)
z =
2.0946
Since f(x) is a polynomial, you canfind the same real zero, and a complex conjugate pair of zeros, usingthe
roots command.
roots([1 0 -2 -5])
ans = 2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i
Root of Function with Extra Parameter
Find the root of a function that has an extra parameter.
myfun = @(x,c) cos(c*x); % parameterized function c = 2; % parameter fun = @(x) myfun(x,c); % function of x alone x = fzero(fun,0.1)
x =
0.7854
Nondefault Options
Plot the solution process by setting some plot functions.
Define the function and initial point.
fun = @(x)sin(cosh(x)); x0 = 1;
Examine the solution process by setting options that include plot functions.
options = optimset('PlotFcns',{@optimplotx,@optimplotfval});
Run fzero including options.
x = fzero(fun,x0,options)
x =
1.8115

Solve Problem Structure
Solve a problem that is defined by a problem structure.
Define a structure that encodes a root-finding problem.
problem.objective = @(x)sin(cosh(x)); problem.x0 = 1; problem.solver = 'fzero'; % a required part of the structure problem.options = optimset(@fzero); % default options
Solve the problem.
x = fzero(problem)
x =
1.8115
More Information from Solution
Find the point where exp(-exp(-x)) = x, and display information about the solution process.
fun = @(x) exp(-exp(-x)) - x; % function x0 = [0 1]; % initial interval options = optimset('Display','iter'); % show iterations [x fval exitflag output] = fzero(fun,x0,options)
Func-count x f(x) Procedure
2 1 -0.307799 initial
3 0.544459 0.0153522 interpolation
4 0.566101 0.00070708 interpolation
5 0.567143 -1.40255e-08 interpolation
6 0.567143 1.50013e-12 interpolation
7 0.567143 0 interpolation
Zero found in the interval [0, 1]
x =
0.5671
fval =
0
exitflag =
1
output =
intervaliterations: 0
iterations: 5
funcCount: 7
algorithm: 'bisection, interpolation'
message: 'Zero found in the interval [0, 1]'
fval = 0 means fun(x) = 0, as desired.
Related Examples
Input Arguments
fun — Function to solvefunction handle
Function to solve, specified as a handle to a scalar-valuedfunction. fun accepts a scalar
x andreturns a scalar fun(x).
fzero solves fun(x) = 0. To solve an equation
fun(x) = c(x),instead solve fun2(x) = fun(x) - c(x) = 0.
To include extra parameters in your function, see the example Root of Function with Extra Parameter andthe section Parameterizing Functions.
Example: @sin
Example: @myFunction
Example: @(x)(x-a)^5 - 3*x + a - 1
Data Types: function_handle
x0 — Initial valuescalar | 2-element vector
Initial value, specified as a real scalar or a 2-element realvector.
-
Scalar —
fzerobegins atx0andtries to locate a pointx1wherefun(x1)hasthe opposite sign offun(x0). Thenfzeroiterativelyshrinks the interval wherefunchanges sign toreach a solution. -
2-element vector —
fzerochecksthatfun(x0(1))andfun(x0(2))haveopposite signs, and errors if they do not. It then iteratively shrinksthe interval wherefunchanges sign to reach asolution. An intervalx0must be finite; it cannotcontain ±Inf.
|
Tip Calling |
Example: 3
Example: [2,17]
Data Types: double
options — Options for solution processstructure, typically
created using optimset
Options for solution process, specified as a structure. Createor modify the
options structure using
optimset. fzero usesthese options structure fields.
|
|
Level of display:
|
|
|
Check whether objective functionvalues are valid.
|
|
|
Specify one or more user-definedfunctions that an optimization function calls at each iteration, eitheras a function handle or as a cell array of function handles. The defaultis none ( |
|
|
Plot various measures of progresswhile the algorithm executes. Select from predefined plots or writeyour own. Pass a function handle or a cell array of function handles.The default is none (
For information on writing a custom plot function,see Plot Functions. |
|
|
Termination tolerance on |
Example: options = optimset('FunValCheck','on')
Data Types: struct
problem — Root-finding problemstructure
Root-finding problem, specified as a structure with all of thefollowing fields.
|
|
Objective function |
|
|
Initial point for x,real scalar or 2-element vector |
|
|
'fzero' |
|
|
Options structure, typically createdusing
optimset |
For an example, see Solve Problem Structure.
Data Types: struct
Output Arguments
x — Location of root or sign changereal scalar
Location of root or sign change, returned as a scalar.
fval — Function value at
xreal scalar
Function value at x, returned as a scalar.
exitflag — Integer encoding the exit conditioninteger
Integer encoding the exit condition, meaning the reason fsolve stoppedits iterations.
|
|
Function converged to a solution |
|
|
Algorithm was terminated by the output function or plotfunction. |
|
|
|
-4 |
Complex function value was encountered while searchingfor an interval containing a sign change. |
-5 |
Algorithm might have converged to a singular point. |
-6 |
|
output — Information about root-finding processstructure
Information about root-finding process, returned as a structure.The fields of the structure are:
intervaliterations |
Number of iterations taken to find an interval containinga root |
iterations |
Number of zero-finding iterations |
funcCount |
Number of function evaluations |
algorithm |
|
message |
Exit message |
More About
References
[1] Brent, R., Algorithms forMinimization Without Derivatives, Prentice-Hall, 1973.
[2] Forsythe, G. E., M. A. Malcolm, and C.B. Moler, Computer Methods for Mathematical Computations,Prentice-Hall, 1976.