scipy.optimize.

fsolve#

scipy.optimize.fsolve(func, x0, args=(), fprime=None, full_output=0, col_deriv=0, xtol=1.49012e-08, maxfev=0, band=None, epsfcn=None, factor=100, diag=None)[source]#

尋找函數的根。

返回由 func(x) = 0 定義的(非線性)方程式的根,並給定起始估計值。

參數:
func可呼叫物件 f(x, *args)

一個至少接受一個(可能是向量)參數的函數,並返回相同長度的值。

x0ndarray

func(x) = 0 根的起始估計值。

argstuple,選用

傳遞給 func 的任何額外參數。

fprime可呼叫物件 f(x, *args),選用

一個計算 func 的雅可比矩陣的函數,導數沿著列。預設情況下,將估計雅可比矩陣。

full_outputbool,選用

如果為 True,則返回選用輸出。

col_derivbool,選用

指定雅可比函數是否計算沿著列的導數(速度更快,因為沒有轉置運算)。

xtolfloat,選用

如果兩個連續迭代之間的相對誤差最多為 xtol,則計算將終止。

maxfevint,選用

函數的最大呼叫次數。如果為零,則最大值為 100*(N+1),其中 N 是 x0 中的元素數量。

bandtuple,選用

如果設定為包含 Jacobi 矩陣帶寬內次對角線和超對角線數量的雙序列,則 Jacobi 矩陣被視為帶狀矩陣(僅適用於 fprime=None)。

epsfcnfloat,選用

用於雅可比矩陣正向差分近似的合適步長(對於 fprime=None)。如果 epsfcn 小於機器精度,則假定函數中的相對誤差與機器精度同階。

factorfloat,選用

一個決定初始步長邊界的參數 (factor * || diag * x||)。應在區間 (0.1, 100) 內。

diagsequence,選用

N 個正數條目,用作變數的比例因子。

返回:
xndarray

解(或不成功呼叫的最後一次迭代的結果)。

infodictdict

包含選用輸出的字典,包含鍵

nfev

函數呼叫次數

njev

雅可比矩陣呼叫次數

fvec

在輸出處評估的函數

fjac

由最終近似雅可比矩陣的 QR 分解產生的正交矩陣 q,按列儲存

r

由相同矩陣的 QR 分解產生的上三角矩陣

qtf

向量 (transpose(q) * fvec)

ierint

整數旗標。如果找到解,則設定為 1,否則請參閱 mesg 以獲取更多資訊。

mesgstr

如果找不到解,mesg 會詳細說明失敗原因。

另請參閱

root

多變數函數尋根演算法的介面。請參閱特別是 method='hybr'

註解

fsolve 是 MINPACK 的 hybrd 和 hybrj 演算法的包裝器。

範例

尋找方程式組的解:x0*cos(x1) = 4,  x1*x0 - x1 = 5

>>> import numpy as np
>>> from scipy.optimize import fsolve
>>> def func(x):
...     return [x[0] * np.cos(x[1]) - 4,
...             x[1] * x[0] - x[1] - 5]
>>> root = fsolve(func, [1, 1])
>>> root
array([6.50409711, 0.90841421])
>>> np.isclose(func(root), [0.0, 0.0])  # func(root) should be almost 0.0.
array([ True,  True])