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 個正數條目,用作變數的比例因子。
- func可呼叫物件
- 返回:
- 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])