8.4 非線性函數求根法-fminbnd
FMINBND 非線性函數最小值
fminrnd之功能是在特定區間尋找單一變數之函數之最小值。其指令型式如下:
x = fminbnd(fun,x1,x2)
x = fminbnd(fun,x1,x2,options)
[x,fval,exitflag,output] = fminbnd(...)
上述指令fminbnd之功能在於針對函數fun,在設定的範圍x1<x<x2中找尋其最小值。其值置於左邊之x中,而函數之對應值則置於fval內。其中fun為函數之握把,或函數之名稱。若為函數名稱則須在名稱前加@符號。
>> X = fminbnd(@sin,3,4)
X =
3.9999
也可以使用匿名函數:
>> f = @(x)x.^3-2*x-5;
>> [x,f] = fminbnd(f, 0, 2)
x =
0.8165
f =
-6.0887
>> x = fminbnd(@(x) sin(x)+3,2,5)
x =
4.7124
在指令中之第四參數項options之參數則可利用optimset函數依下列參數進行設定:
Display | 顯示之層次:'off'不顯示;'iter'顯示每次回圈之結果; 'final' 只顯示最後結果;'notify' (預設) 若函數不收斂時顯示。 |
FunValCheck | 檢查目的函數是否正確,'on' 目標函數之結果為複數或 NaN時顯出警告;'off' 不顯示警告。 |
MaxFunEvals | 函數容許之最大值。 |
MaxIter | 容許最大迴圈數。 |
OutputFcn | 指出使用者設定之呼叫定義函數。 |
TolX | x值之容許度。 |
上述參數之設定可利用optimset函數,例如:
>> [X,FVAL,EXITFLAG] = fminbnd(@cos,3,4,optimset('TolX',1e-12,'Display','off'))
X =
3.1416
FVAL =
-1
EXITFLAG =
1
輸出之第三參數為運算之狀態,與fzero中之第三參數相同:
1 | fminbnd指令依據TolX收斂至x。 |
0 | 最大迴圈數。 |
-1 | 由 output函數決定終止。 |
-2 | 邊界不符合 (x1 > x2)。 |
輸出之第四項為OUTPUT,其內容如下:
output.algorithm | 使用之運算法 |
output.funcCount | 函數計算之次數 |
output.iterations | 迴圈之次數 |
output.message | 離開信息 |
沒有留言:
張貼留言