Fzreo matlab

来源:互联网 发布:夕又米的淘宝店 编辑:程序博客网 时间:2024/06/05 14:30

fzero

Root of nonlinear function

collapse all in page

Syntax

  • x = fzero(fun,x0) example
  • x = fzero(fun,x0,options) example
  • x = fzero(problem) example
  • [x,fval,exitflag,output]= fzero(___)example

Description

example

x = fzero(fun,x0) triesto find a point x where fun(x) = 0. This solution is wherefun(x) changessign—fzero cannot find a root of a functionsuch asx^2.

example

x = fzero(fun,x0,options) uses options tomodify the solution process.

example

x = fzero(problem) solvesa root-finding problem specified by problem.

example

[x,fval,exitflag,output]= fzero(___) returns fun(x) inthe fval output, exitflag encodingthe reasonfzero stopped, and an output structurecontaining information on the solution process.

Examples

collapse all

Root Starting From One Point

Calculate $\pi$ by finding the zero of the sine function near3.

fun = @sin; % functionx0 = 3; % initial pointx = fzero(fun,x0)
x =    3.1416

Root Starting From an Interval

Find the zero of cosine between 1 and 2.

fun = @cos; % functionx0 = [1 2]; % initial intervalx = fzero(fun,x0)
x =    1.5708

Note that $\cos(1)$ and$\cos(2)$ 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; % functionx0 = 2; % initial pointz = 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, usingtheroots 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 functionc = 2;                    % parameterfun = @(x) myfun(x,c);    % function of x alonex = 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 structureproblem.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; % functionx0 = [0 1]; % initial intervaloptions = 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.5671fval =     0exitflag =     1output =     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

  • Roots of Scalar Functions
  • Parameterizing Functions

Input Arguments

collapse all

fun — Function to solvefunction handle

Function to solve, specified as a handle to a scalar-valuedfunction. fun accepts a scalarx 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 — fzero begins at x0 andtries to locate a pointx1 where fun(x1) hasthe opposite sign of fun(x0). Thenfzero iterativelyshrinks the interval where fun changes sign toreach a solution.

  • 2-element vector — fzero checksthat fun(x0(1)) and fun(x0(2)) haveopposite signs, and errors if they do not. It then iteratively shrinksthe interval wherefun changes sign to reach asolution. An interval x0 must be finite; it cannotcontain ±Inf.

    Tip  Calling fzero with an interval (x0 withtwo elements) is often faster than calling it with a scalarx0.

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.

Display

Level of display:

  • 'off' displays no output.

  • 'iter' displays output at eachiteration.

  • 'final' displays just the finaloutput.

  • 'notify' (default) displays outputonly if the function does not converge.

FunValCheck

Check whether objective functionvalues are valid.

  • 'on' displays an error when theobjective function returns a value that iscomplex, Inf,or NaN.

  • The default, 'off', displays noerror.

OutputFcn

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 ([]). SeeOutput Functions.

PlotFcns

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 ([]).

  • @optimplotx plots the current point.

  • @optimplotfval plots the functionvalue.

For information on writing a custom plot function,see Plot Functions.

TolX

Termination tolerance on x,a positive scalar. The default is eps, 2.2204e–16.

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

Objective function

x0

Initial point for x,real scalar or 2-element vector

solver

'fzero'

options

Options structure, typically createdusing optimset

For an example, see Solve Problem Structure.

Data Types: struct

Output Arguments

collapse all

x — Location of root or sign changereal scalar

Location of root or sign change, returned as a scalar.

fval — Function value atxreal 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.

1

Function converged to a solution x.

-1

Algorithm was terminated by the output function or plotfunction.

-3

NaN or Inf functionvalue was encountered while searching for an interval containing asign change.

-4

Complex function value was encountered while searchingfor an interval containing a sign change.

-5

Algorithm might have converged to a singular point.

-6

fzero did not detect a sign change.

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

'bisection, interpolation'

message

Exit message

More About

collapse all

Algorithms

The fzero commandis a function file. The algorithm, created by T. Dekker,uses a combination of bisection, secant, and inverse quadratic interpolationmethods. An Algol 60 version, with some improvements, is given in [1]. A Fortran version, upon which fzero isbased, is in [2].

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.

0 0