Optimization Toolbox | ![]() ![]() |
Zero of a continuous function of one variable
Syntax
x = fzero(fun,x0) x = fzero(fun,x0,options) x = fzero(fun,x0,options,P1,P2,...) [x,fval] = fzero(...) [x,fval,exitflag] = fzero(...) [x,fval,exitflag,output] = fzero(...)
Description
x = fzero(fun,x0)
tries to find a zero of fun
near x0
, if x0
is a scalar. The value x
returned by fzero
is near a point where fun
changes sign, or NaN
if the search fails. In this case, the search terminates when the search interval is expanded until an Inf
, NaN
, or complex value is found.
If x0
is a vector of length two, fzero
assumes x0
is an interval where the sign of fun(x0(1))
differs from the sign of fun(x0(2))
. An error occurs if this is not true. Calling fzero
with such an interval guarantees fzero
returns a value near a point where fun
changes sign.
Note
Calling fzero with an interval (x0 with two elements) is often faster than calling it with a scalar x0 .
|
x = fzero(fun,x0,options)
minimizes with the optimization parameters specified in the structure options
. Use optimset
to set these parameters.
x = fzero(fun,x0,options,P1,P2,...)
provides for additional arguments, P1
, P2
, etc., which are passed to the objective function, fun
. Use options = []
as a placeholder if no options are set.
[x,fval] = fzero(...)
returns the value of the objective function fun
at the solution x
.
[x,fval,exitflag] = fzero(...)
returns a value exitflag
that describes the exit condition.
[x,fval,exitflag,output] = fzero(...)
returns a structure output
that contains information about the optimization.
Note For the purposes of this command, zeros are considered to be points where the function actually crosses, not just touches, the x-axis. |
Input Arguments
Function Arguments contains general descriptions of arguments passed in to fzero
. This section provides function-specific details for fun
and options
:
fun |
The function whose zero is to be computed. fun is a function that accepts a vector x and returns a scalar f , the objective function evaluated at x . The function fun can be specified as a function handle.where myfun is a MATLAB function such asfun can also be an inline object. | |
options |
Optimization parameter options. You can set or change the values of these parameters using the optimset function. fzero uses these options structure fields: | |
Display |
Level of display. 'off' displays no output; 'iter' displays output at each iteration; 'final' displays just the final output; 'notify' (default) displays output only if the function does not converge. |
|
TolX |
Termination tolerance on x . |
Output Arguments
Function Arguments contains general descriptions of arguments returned by fzero
. This section provides function-specific details for exitflag
and output
:
Examples
Calculate by finding the zero of the sine function near
3
.
To find the zero of cosine between 1
and 2
,
Note that cos(1)
and cos(2)
differ in sign.
To find a zero of the function
Since this function is a polynomial, the statement roots([1 0 -2 -5])
finds the same real zero, and a complex conjugate pair of zeros.
Algorithm
The fzero
command is an M-file. The algorithm, which was originated by T. Dekker, uses a combination of bisection, secant, and inverse quadratic interpolation methods. An Algol 60 version, with some improvements, is given in [1]. A Fortran version, upon which the fzero
M-file is based, is in [2].
Limitations
The fzero
command finds a point where the function changes sign. If the function is continuous, this is also a point where the function has a value near zero. If the function is not continuous, fzero
may return values that are discontinuous points instead of zeros. For example, fzero(@tan,1)
returns 1.5708
, a discontinuous point in tan
.
Furthermore, the fzero
command defines a zero as a point where the function crosses the x-axis. Points where the function touches, but does not cross, the x-axis are not valid zeros. For example, y = x.^2
is a parabola that touches the x-axis at 0. Since the function never crosses the x-axis, however, no zero is found. For functions with no valid zeros, fzero
executes until Inf
, NaN
, or a complex value is detected.
See Also
@
(function_handle
), \
, fminbnd
, fsolve
, inline
, optimset
, roots
References
[1] Brent, R., Algorithms for Minimization Without Derivatives, Prentice-Hall, 1973.
[2] Forsythe, G. E., M. A. Malcolm, and C. B. Moler, Computer Methods for Mathematical Computations, Prentice-Hall, 1976.
![]() | fsolve | fzmult | ![]() |