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 < xcfunc(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)