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


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


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

用法:

scipy.optimize.diagbroyden(F, xin, iter=None, alpha=None, verbose=False, maxiter=None, f_tol=None, f_rtol=None, x_tol=None, x_rtol=None, tol_norm=None, line_search='armijo', callback=None, **kw)#

使用對角 Broyden Jacobian 近似求函數的根。

雅可比近似是通過僅保留 Broyden 矩陣的對角線從先前的迭代中推導出來的。

警告

該算法可能對特定問題有用,但它是否有效可能在很大程度上取決於問題。

參數

F 函數(x)-> f

要查找其根的函數;應該接受並返回一個類似數組的對象。

xin array_like

解決方案的初步猜測

alpha 浮點數,可選

雅可比行列式的初始猜測是 (-1/alpha)。

iter 整數,可選

要進行的迭代次數。如果省略(默認),則根據需要製作盡可能多的數量以滿足公差。

verbose 布爾型,可選

在每次迭代時將狀態打印到標準輸出。

maxiter 整數,可選

要進行的最大迭代次數。如果需要更多來滿足收斂,則提出NoConvergence。

f_tol 浮點數,可選

殘差的絕對容差(在max-norm 中)。如果省略,默認為 6e-6。

f_rtol 浮點數,可選

殘差的相對容差。如果省略,則不使用。

x_tol 浮點數,可選

絕對最小步長,由雅可比近似確定。如果步長小於此值,則優化成功終止。如果省略,則不使用。

x_rtol 浮點數,可選

相對最小步長。如果省略,則不使用。

tol_norm 函數(向量)-> 標量,可選

用於收斂檢查的範數。默認是最大規範。

line_search {無,‘armijo’(默認),‘wolfe’},可選

使用哪種類型的線搜索來確定雅可比近似給定方向上的步長。默認為‘armijo’。

callback 函數,可選

可選的回調函數。它在每次迭代中被調用為callback(x, f)其中x是當前的解決方案,並且f對應的殘差。

返回

sol ndarray

包含最終解決方案的數組(與 x0 的數組類型相似)。

拋出

NoConvergence

當沒有找到解決方案時。

例子

以下函數定義了一個非線性方程組

>>> def fun(x):
...     return [x[0]  + 0.5 * (x[0] - x[1])**3 - 1.0,
...             0.5 * (x[1] - x[0])**3 + x[1]]

可以如下獲得解決方案。

>>> from scipy import optimize
>>> sol = optimize.diagbroyden(fun, [0, 0])
>>> sol
array([0.84116403, 0.15883384])

相關用法


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