用fzero函数可以求一元非线性方程的零点。该函数的语法格式如下。
x=fzero(fun,x0):如果x0为标量,则试图寻找函数fun在x0附近的零点。fun是一个M文件函数或匿名函数的函数句柄。函数fzero返回的值x靠近fun函数改变符号的位置,如果搜索失败,则返回NaN。当搜索区间扩展到发现Inf、NaN或复数值时终止搜索。如果x0是一个长度为2的向量,则fzero函数假设x0是一个区间,其中fun(x0(1))的符号与fun(x0(2))的符号不同。如果符号相同,则会出错。给出符号不同的区间可以保证fzero函数返回一个fun函数改变符号的位置附近的值。
x=fzero(fun,x0,options):最小化目标函数时用结构options指定优化参数。可以用optimset函数定义这些参数。Fzero可以使用下面的选项结构字段:
display:显示级别。当值为'off'时,不显示输出;当值为'iter'时,显示每次迭代的输出;当值为'final'时,显示最后的输出;当值为'notify'(默认)时,显示函数不收敛时的输出。
TolX :x的终止容限。
[x,fval]=fzero(…):返回解x处目标函数fun的值。
[x,fval,exitflag]=fzero(…):返回一个exitflag值,描述fzero函数的退出条件。返回值及其描述如下所示:
>0 表示函数找到了零值点x;
≤0 表示没有发现零值点。
【例1】求下面方程的解。
\[{x}^{3}-4x+5=0\]
用fzero函数可以求解该方程,首先需要用M函数或匿名函数描述方程。下面使用匿名函数。输入下面的命令行
code.matlab
>> f=@(x)x.^3-4*x+5;
>> z=fzero(f,1)
z =
-2.4567