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