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


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


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

用法:

class  scipy.optimize.KrylovJacobian(rdiff=None, method='lgmres', inner_maxiter=20, inner_M=None, outer_k=10, **kw)#

使用逆雅可比行列式的 Krylov 近似求函數的根。

此方法適用於解決large-scale 問題。

參數

%(params_basic)s
rdiff 浮點數,可選

用於數值微分的相對步長。

method str 或可調用,可選

用於近似雅可比行列式的克雷洛夫方法。可以是字符串,也可以是實現與 scipy.sparse.linalg 中的迭代求解器相同接口的函數。如果是字符串,則需要是以下之一: 'lgmres''gmres''bicgstab''cgs''minres''tfqmr'

默認值為 scipy.sparse.linalg.lgmres

inner_maxiter 整數,可選

傳遞給“inner” Krylov 求解器的參數:最大迭代次數。即使沒有達到指定的容差,迭代也會在 maxiter 步後停止。

inner_M LinearOperator 或 InverseJacobian

內部 Krylov 迭代的預處理器。請注意,您也可以使用逆雅可比矩陣作為(自適應)預條件子。例如,

>>> from scipy.optimize import BroydenFirst, KrylovJacobian
>>> from scipy.optimize import InverseJacobian
>>> jac = BroydenFirst()
>>> kjac = KrylovJacobian(inner_M=InverseJacobian(jac))

如果預條件器有一個名為‘update’的方法,則在每個非線性步驟之後它將被稱為update(x, f),其中x給出當前點,f給出當前函數值。

outer_k 整數,可選

LGMRES 非線性迭代中保持的子空間大小。有關詳細信息,請參閱 scipy.sparse.linalg.lgmres

inner_kwargs 誇格斯

“inner” Krylov 求解器的關鍵字參數(定義為方法)。參數名稱必須以inner_在傳遞內部方法之前將被剝離的前綴。參見,例如,scipy.sparse.linalg.gmres詳情。

%(params_extra)s

注意

此函數實現Newton-Krylov 求解器。基本思想是使用迭代 Krylov 方法計算雅可比行列式的逆。這些方法隻需要評估Jacobian-vector產品,它們可以方便地通過有限差分來近似:

由於使用了迭代矩陣求逆,這些方法可以處理較大的非線性問題。

SciPy 的scipy.sparse.linalg模塊提供了一係列可供選擇的 Krylov 求解器。這裏的默認是關注,這是重新啟動的 GMRES 迭代的變體,它重用在先前牛頓步驟中獲得的一些信息,以在後續步驟中反轉雅可比行列式。

有關 Newton-Krylov 方法的評論,請參見示例 [1],對於 LGMRES 稀疏逆方法,請參見 [2]。

參考

[1]

C. T. Kelley,用牛頓法求解非線性方程,SIAM,第 57-83 頁,2003 年。DOI:10.1137/1.9780898718898.ch3

[2]

D.A.諾爾和 D.E.凱斯,J. Comp。物理。 193, 357 (2004)。 DOI:10.1016/j.jcp.2003.08.010

[3]

A.H. Baker 和 E.R. Jessup 和 T. Manteuffel,SIAM J. Matrix Anal。應用程序。 26, 962 (2005)。 DOI:10.1137/S0895479803422014

例子

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

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

可以如下獲得解決方案。

>>> from scipy import optimize
>>> sol = optimize.newton_krylov(fun, [0, 0])
>>> sol
array([0.66731771, 0.66536458])

相關用法


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