fzero
非线性函数的根
描述
例子
根从一点开始
Root从间隔开始
由文件定义的函数的根
求函数的零点f(x) =x3.- 2x- 5所示。
首先,写一个名为f.m
.
函数Y = f(x) Y = x ^3-2*x-5;
保存f.m
在你的MATLAB®路径。
求的零点f(x附近)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
,如预期。
输入参数
x0
- - - - - -初始值
标量|2-element向量
初始值,指定为实标量或2元素实向量。
标量。
fzero
始于x0
试图找到一个点x1
在哪里乐趣(x1)
有相反的符号乐趣(x0)
.然后fzero
迭代缩小了其中的间隔有趣的
变化标志着达成解决方案。2-element向量,
fzero
检查乐趣(x0 (1))
而且乐趣(x0 (2))
有相反的符号,如果没有则会出错。然后迭代地缩小区间有趣的
变化标志着达成解决方案。一个区间x0
必须是有限的;不能包含±正
.
提示
调用fzero
有一个间隔(x0
使用两个元素)通常比使用标量调用要快x0
.
例子:3.
例子:(2, 17)
数据类型:双
选项
- - - - - -解决过程的选项
结构,通常使用optimset
解决方案过程的选项,指定为结构。创建或修改选项
结构使用optimset
.fzero
使用这些选项
结构字段。
|
显示水平(参见迭代显示):
|
|
检查目标函数值是否有效。
|
|
指定优化函数在每次迭代时调用的一个或多个用户定义函数,可以作为函数句柄,也可以作为函数句柄的单元格数组。默认值是none ( |
|
绘制算法执行时的各种进度度量。从预定义的情节中选择或编写自己的情节。传递函数句柄或函数句柄的单元格数组。默认值是none (
自定义plot函数使用与输出函数相同的语法。看到优化工具箱的输出函数而且输出函数和图函数语法. |
|
终止上公差 |
例子:选择= optimset(“FunValCheck”,“上”)
数据类型:结构体
问题
- - - - - -Root-finding问题
结构
输出参数
x
-根或符号的位置改变
真正的标量
根或符号变化的位置,作为标量返回。
fval
-点的函数值x
真正的标量
函数值在x
,作为标量返回。
exitflag
—对退出条件进行整数编码
整数
编码退出条件的整数,表示原因fzero
停止迭代。
|
函数收敛到一个解 |
|
算法由输出函数或图函数终止。 |
|
|
4 |
在搜索包含符号变化的区间时,遇到了复数函数值。 |
5 |
算法可能收敛到一个奇异点。 |
6 |
|
输出
—寻根进程信息
结构
关于寻根进程的信息,作为结构返回。该结构的字段为:
intervaliterations |
为找到包含根的区间所进行的迭代次数 |
迭代 |
寻零迭代的次数 |
funcCount |
函数求值的次数 |
算法 |
|
消息 |
退出消息 |
算法
的fzero
Command是一个函数文件。该算法由T. Dekker创建,使用了二分法、割线法和逆二次插值法的组合。文中给出了一个改进的Algol 60版本[1].一个Fortran版本fzero
是基于,是在[2].
选择功能
应用程序
的优化Live Editor任务提供了一个可视化的界面fzero
.
参考文献
[1]布伦特,R。无导数的极小化算法,普伦蒂斯·霍尔出版社,1973年。
[2]福赛斯,g.e., M. A.马尔科姆和C. B.莫尔,数学计算的计算机方法“,,普伦蒂斯·霍尔出版社,1976年。
扩展功能
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
对于C/ c++代码生成:
的
有趣的
输入参数必须是函数句柄,而不是结构或字符向量。fzero
忽略除的所有选项TolX
而且FunValCheck
.fzero
不支持第四个输出参数,即输出结构。
版本历史
之前介绍过的R2006a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。