主要内容

fzero

非线性函数的根

描述

例子

x= fzero (有趣的x0试图找到一个观点x在哪里有趣的(x) = 0.这个解就是有趣的(x)变化迹象,fzero无法找到函数的根x ^ 2

例子

x= fzero (有趣的x0选项使用选项修改解决方案流程。

例子

x= fzero (问题方法指定的查找根问题问题

例子

xfvalexitflag输出) = fzero (___返回有趣的(x)fval输出,exitflag编码的原因fzero以及包含解决方案流程信息的输出结构。

例子

全部折叠

计算 π 通过找到sin函数的零点3.

有趣= @sin;%的功能x0 = 3;%初始点x0, x = fzero(有趣)
x = 3.1416

找出两者之间的余弦的零点1而且2

有趣= @cos;%的功能X0 = [1 2];%初始区间x0, x = fzero(有趣)
x = 1.5708

请注意, 因为 1 而且 因为 2 不同的信号。

求函数的零点fx) =x3.- 2x- 5所示。

首先,写一个名为f.m

函数Y = f(x) Y = x ^3-2*x-5;

保存f.m在你的MATLAB®路径。

求的零点fx附近)2

有趣= @f;%的功能x0 = 2;%初始点x0, z = fzero(有趣)
z = 2.0946

f (x)是一个多项式,你可以找到相同的实零,和一个复共轭零对,使用命令。

根([1 0 -2 -5])
Ans = 2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i

求一个有额外参数的函数的根。

Myfun = @(x,c) cos(c*x);%参数化函数c = 2;%的参数Fun = @(x) myfun(x,c);x单独的%函数x = fzero(有趣,0.1)
x = 0.7854

通过设置一些图形函数来绘制求解过程。

定义函数和初始点。

有趣= @ (x)罪(cosh (x));x0 = 1;

通过设置包含绘图函数的选项来检查解决方案过程。

选择= optimset (“PlotFcns”, {@optimplotx, @optimplotfval});

运行fzero包括选项

x = fzero(有趣,x0,选项)

{

x = 1.8115

解决一个由问题结构定义的问题。

定义一个编码寻根问题的结构。

问题。目标= @ (x)罪(cosh (x));问题。x0 = 1;问题。解算器=“fzero”结构中必需的一部分问题。选项= optimset(@fzero);%的缺省选项

解决这个问题。

x = fzero(问题)
x = 1.8115

找到一个点exp (exp (- x)) = x,显示解决方案流程信息。

Fun = @(x) exp(-exp(-x)) -x;%的功能X0 = [0 1];%初始区间选择= optimset (“显示”“通路”);%显示迭代[x fval exitflag output] = fzero(fun,x0,options)
函数计数x f(x)过程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在区间[0,1]中发现零
x = 0.5671
fval = 0
exitflag = 1
输出=结构体字段:funcCount: 7算法:'bisection, interpolation'消息:'在interval[0,1]中发现零'

fval= 0意味着有趣的(x) = 0,如预期。

输入参数

全部折叠

函数,指定为标量值函数的句柄或此类函数的名称。有趣的接受一个标量x并返回一个标量有趣的(x)

fzero解决了有趣的(x) = 0.解一个方程有趣的(x) = c (x),而不是解决Fun2 (x) = fun(x) - c(x) = 0

要在函数中包含额外的参数,请参见示例附加参数函数的根和部分传递额外的参数

例子:“罪”

例子:@myFunction

例子:@(x)(x-a)^5 - 3*x + a - 1

数据类型:字符|function_handle|字符串

初始值,指定为实标量或2元素实向量。

  • 标量。fzero始于x0试图找到一个点x1在哪里乐趣(x1)有相反的符号乐趣(x0).然后fzero迭代缩小了其中的间隔有趣的变化标志着达成解决方案。

  • 2-element向量,fzero检查乐趣(x0 (1))而且乐趣(x0 (2))有相反的符号,如果没有则会出错。然后迭代地缩小区间有趣的变化标志着达成解决方案。一个区间x0必须是有限的;不能包含±

提示

调用fzero有一个间隔(x0使用两个元素)通常比使用标量调用要快x0

例子:3.

例子:(2, 17)

数据类型:

解决方案过程的选项,指定为结构。创建或修改选项结构使用optimsetfzero使用这些选项结构字段。

显示

显示水平(参见迭代显示):

  • “关闭”显示没有输出。

  • “通路”显示每次迭代的输出。

  • “最后一次”只显示最终输出。

  • “通知”(默认)仅在函数不收敛时显示输出。

FunValCheck

检查目标函数值是否有效。

  • “上”当目标函数返回值为时显示错误复杂的,或

  • 默认的,“关闭”,没有显示错误。

OutputFcn

指定优化函数在每次迭代时调用的一个或多个用户定义函数,可以作为函数句柄,也可以作为函数句柄的单元格数组。默认值是none ([]).看到输出函数和图函数语法

PlotFcns

绘制算法执行时的各种进度度量。从预定义的情节中选择或编写自己的情节。传递函数句柄或函数句柄的单元格数组。默认值是none ([]).

  • @optimplotx绘制当前点。

  • @optimplotfval绘制函数值。

自定义plot函数使用与输出函数相同的语法。看到优化工具箱的输出函数而且输出函数和图函数语法

TolX

终止上公差x,一个正标量。默认值是每股收益2.2204 e-16。看到公差和停止标准

例子:选择= optimset(“FunValCheck”,“上”)

数据类型:结构体

查找根问题,指定为具有以下所有字段的结构。

客观的

目标函数

x0

初始点x标量或二维向量

解算器

“fzero”

选项

选项结构,通常创建使用optimset

数据类型:结构体

输出参数

全部折叠

根或符号变化的位置,作为标量返回。

函数值在x,作为标量返回。

编码退出条件的整数,表示原因fzero停止迭代。

1

函数收敛到一个解x

-1

算法由输出函数或图函数终止。

3

函数值在搜索包含符号变化的区间时遇到。

4

在搜索包含符号变化的区间时,遇到了复数函数值。

5

算法可能收敛到一个奇异点。

6

fzero没有检测到符号变化。

关于寻根进程的信息,作为结构返回。该结构的字段为:

intervaliterations

为找到包含根的区间所进行的迭代次数

迭代

寻零迭代的次数

funcCount

函数求值的次数

算法

“二分,插值”

消息

退出消息

算法

fzeroCommand是一个函数文件。该算法由T. Dekker创建,使用了二分法、割线法和逆二次插值法的组合。文中给出了一个改进的Algol 60版本[1].一个Fortran版本fzero是基于,是在[2]

选择功能

应用程序

优化Live Editor任务提供了一个可视化的界面fzero

参考文献

[1]布伦特,R。无导数的极小化算法,普伦蒂斯·霍尔出版社,1973年。

[2]福赛斯,g.e., M. A.马尔科姆和C. B.莫尔,数学计算的计算机方法“,,普伦蒂斯·霍尔出版社,1976年。

扩展功能

版本历史

之前介绍过的R2006a

Baidu
map