MATLAB Function Reference |
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)
試著找出 fun
在 x0
附近的零。,如果 x0
是純量。x
經由接近 fun
改變正負號位置的 fzero
傳回,如果尋找失敗則會傳回 NaN
。在這個情形時,在搜尋區間擴張時,搜尋在找到 Inf
、NaN
、複數後停止。
如果 x0
是一個長度為二的向量,fzero
把 x0
當作一個區間,而 fun(x0(1))
和 fun(x0(2))
異號。如果不是這樣的話,會發生錯誤。以一個區間保證呼叫 fzero
,fzero
會回傳一個靠近 fun
正負號改變的點。
x = fzero(fun,x0,options)
以定義在 options
結構的最佳化選項做最小化動作。你可以用 optimset
函數定義這些參數。fzero
使用下列 options
結構欄位:
Display |
顯示的等級。'off' 不顯示輸入;'iter' 在每次重複(iteration)時顯示輸出;'final ' 只顯示最後結果;'notify' (預設) 只在函數不收斂時顯示輸出。 |
TolX |
x 的終結容忍度。 |
x = fzero(fun,x0,options,P1,P2,...)
提供傳到函數 fun
的額外參數。如果沒有設定選項,用 options=[]
當作欄位保留。
[x,fval] = fzero(...)
傳回目標函數 fun
在解答 x
的值。
[x,fval,exitflag] = fzero(...)
傳回描述 fzero
跳出狀態的值 exitflag
:
>0 |
表示函數找到一個零 x 。 |
<0 |
沒有一個區間有找到變號,或是在搜尋包含變號區間時遇到 NaN 或 Inf ,或是在搜尋包含變號區間時遇到複數。 |
[x,fval,exitflag,output] = fzero(...)
傳回一個包含最佳化資訊的結構 output
:
output.algorithm |
使用的演算法 |
output.funcCount |
函數計算的次數 |
output.iterations |
重複(iteration)的次數 |
Arguments
fun
是要計算零的函數。它接受一個向量 x
然後回傳一個純量 f
,目標函數在 x
求得的值。函數 fun
可以用函數處理定義。
x = fzero(@myfun,x0)
function f = myfun(x) f = ... % Compute function value at x
x = fzero(inline('sin(x*x)'),x0);
Examples
x = fzero(@
sin,3)
x =
3.1416
x = fzero(@
cos,[1 2])
x =
function y = f(x)
y = x.^3-2*x-5
;
z = fzero(@f,
2)
z =
2.0946
因為這個函數是一個多項式,所以敘述 roots([1 0 -2 -5])
找到一樣實數的零,和共軛複數部份的零。
2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i
Algorithm
fzero
命令是一個 M-檔。演算法是由 T. Dekker 發明的,合併使用 bisection、secant 和 inverse quadratic interpolation methods。一個有一些改進的 Algol 60 版本程式,可以在 [1] 得到。fzero
的M-檔以 Fortran 版本程式為基礎可以在 [2] 找到。
Limitations
fzero
命令找函數變號的點。如果函數是 連續的 ,則還會有一個函數接近零的點。如果函數不連續,fzero
可能傳回不連續的點而不是零的點。舉例來說,fzero(@tan,1)
傳回 1.5708
,一個 tan
不連續的點。
更進一步來說,fzero
命令定義 zero 為函數和 x-軸相交。函數和 x-軸接觸,但沒有相交的點不是合法的零。舉例來說,y = x.^2
是一個在 0 接觸 x-軸的拋物線。因為函數從不交叉過 x-軸,找不到零。對沒有合法零的函數,fzero
執行直到偵測到 Inf
、NaN
或複數值。
See Also
roots
, fminbnd
, function_handle
(@), inline
, optimset
References
Brent, R., Algorithms for Minimization Without Derivatives, Prentice-Hall, 1973.
Forsythe, G. E., M. A. Malcolm, and C. B. Moler, Computer Methods for Mathematical Computations, Prentice-Hall, 1976.
fwrite (serial) | gallery |