當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy optimize.bracket用法及代碼示例


本文簡要介紹 python 語言中 scipy.optimize.bracket 的用法。

用法:

scipy.optimize.bracket(func, xa=0.0, xb=1.0, args=(), grow_limit=110.0, maxiter=1000)#

將函數的最小值括起來。

給定一個函數和不同的初始點,沿下坡方向(由初始點定義)搜索並返回包含函數最小值的三個點。

參數

func 可調用 f(x,*args)

最小化的目標函數。

xa, xb 浮點數,可選

初始點。默認 xa 為 0.0,xb 為 1.0。局部最小值不需要包含在該區間內。

args 元組,可選

附加參數(如果存在),傳遞給 func。

grow_limit 浮點數,可選

最大增長限製。默認為 110.0

maxiter 整數,可選

要執行的最大迭代次數。默認為 1000。

返回

xa, xb, xc 浮點數

括號的最終點。

fa, fb, fc 浮點數

括號點處的目標函數值。

funcalls int

進行的函數評估次數。

拋出

BracketError

如果在算法終止之前沒有找到有效的括號。有關有效括號的條件,請參閱注釋。

注意

該算法嘗試找到滿足 的三個嚴格排序點(即 ),其中必須嚴格滿足不等式之一,並且所有 必須是有限的。

例子

這個函數可以找到一個函數的下凸區域:

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.optimize import bracket
>>> def f(x):
...     return 10*x**2 + 3*x + 5
>>> x = np.linspace(-2, 2)
>>> y = f(x)
>>> init_xa, init_xb = 0.1, 1
>>> xa, xb, xc, fa, fb, fc, funcalls = bracket(f, xa=init_xa, xb=init_xb)
>>> plt.axvline(x=init_xa, color="k", linestyle="--")
>>> plt.axvline(x=init_xb, color="k", linestyle="--")
>>> plt.plot(x, y, "-k")
>>> plt.plot(xa, fa, "bx")
>>> plt.plot(xb, fb, "rx")
>>> plt.plot(xc, fc, "bx")
>>> plt.show()
scipy-optimize-bracket-1_00_00.png

請注意,兩個初始點都位於最小值的右側,第三個點位於 “downhill” 方向:函數呈現遞減的方向(向左)。最終點嚴格排序,中間點的函數值小於端點的函數值;由此可見,最小值必須位於括號內。

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.optimize.bracket。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。