scipy.optimize.
golden#
- scipy.optimize.golden(func, args=(), brack=None, tol=1.4901161193847656e-08, full_output=0, maxiter=5000)[原始碼]#
使用黃金分割法 (golden section method) 返回單變數函數的極小值。
給定一個單變數函數和可能的括號區間 (bracketing interval),返回函數的極小值,其隔離到 tol 的小數精度。
- 參數::
- funccallable func(x,*args)
要最小化的目標函數。
- argstuple, optional
要傳遞給 func 的額外參數(如果有的話)。
- bracktuple, optional
三元組
(xa, xb, xc)
,其中xa < xb < xc
且func(xb) < func(xa) and func(xb) < func(xc)
,或一對 (xa, xb) 用作下坡括號搜尋 (downhill bracket search) 的初始點(請參閱scipy.optimize.bracket
)。極小值x
不一定滿足xa <= x <= xb
。- tolfloat, optional
x 容忍度停止準則 (x tolerance stop criterion)
- full_outputbool, optional
如果為 True,則返回可選的輸出。
- maxiterint
要執行的最大迭代次數。
- 返回::
- xminndarray
最佳點 (Optimum point)。
- fvalfloat
(可選輸出)最佳函數值 (Optimum function value)。
- funcallsint
(可選輸出)目標函數評估的次數。
另請參閱
minimize_scalar
用於純量單變數函數的最小化演算法介面。 請參閱特別是「黃金分割法 (Golden)」方法。
註解
使用二分法 (bisection method) 的類比來縮小括號區間。
範例
我們說明當 brack 的大小分別為 2 和 3 時,函數的行為。 在 brack 形式為 (xa,xb) 的情況下,我們可以觀察到對於給定值,輸出不一定需要位於範圍
(xa, xb)
內。>>> def f(x): ... return (x-1)**2
>>> from scipy import optimize
>>> minimizer = optimize.golden(f, brack=(1, 2)) >>> minimizer 1 >>> res = optimize.golden(f, brack=(-1, 0.5, 2), full_output=True) >>> xmin, fval, funcalls = res >>> f(xmin), fval (9.925165290385052e-18, 9.925165290385052e-18)