fzero 指令可用於單變數函數的求根,其使用語法如下:
x = fzero(fun, x0)
其中 fun 是欲求根的函數(以字串表示),x0 則是一個起始點或起始區間。您可以由 x0 指定一個起始點或起始區間來進行求根,fzero 指令會根據 x0 的不同而執行下列動作:
- 若 x0 為一個起始點,則 fzero 會自動找出附近包含零點(即根,或函數變號點)的區間,並逐步縮小此區間以找出零點。若 fzero 無法找出此區間,則傳回 NaN。
- 若已知使函數值不同號的兩點,則我們可以由 x0 直接指定尋根的區間,以使 fzero 更快速地找到位於此區間內的根。
例如,若要找出 humps 在 x = 1.5 附近的根,並驗算之,可輸入如下:
在上列中,fzero 首先找到 1.5 附近變號的兩點,即 1.26 及 1.6697,然後再據以找出 humps 的零點。
若已知 humps 在 x = -1 及 1 之間為異號,即 humps(1)*humps(-1) < 0, 則我們可以令 x0 = [-1, 1] 為起始區來找出 humps 的零點,如下:
此時 fzero 找到的是另一個零點。若要畫出以上這兩個零點,可輸入如下:
若欲顯示求解過程的中間結果,可使用 optimset 指令來設定顯示選項,再將 optimset 傳回的結構變數送入fzero,例如:
在求零點過程中,會用到二分法(Bisection)或內插法(Interpolation),這些方法顯示在上表 Procedure 的第四個欄位中。若給定一個起始點,則 fzero 在最初的個步驟中會先找出一個適當的區間來搜尋零點。
MATLAB程式設計:進階篇