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


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


本文簡要介紹 python 語言中 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)#

求函數的根。

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

參數

func 可調用f(x, *args)

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

x0 ndarray

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

args 元組,可選

func 的任何額外參數。

fprime 可調用 f(x, *args) ,可選

用於計算 func 的雅可比行列式的函數,該函數具有跨行的導數。默認情況下,將估計雅可比行列式。

full_output 布爾型,可選

如果為真,則返回可選輸出。

col_deriv 布爾型,可選

指定 Jacobian 函數是否沿列計算導數(更快,因為沒有轉置操作)。

xtol 浮點數,可選

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

maxfev 整數,可選

函數調用的最大次數。如果為零,那麽100*(N+1)是最大值,其中 N 是元素的數量x0.

band 元組,可選

如果設置為 two-sequence 包含 Jacobi 矩陣帶內的 sub- 和 super-diagonals 的數量,則 Jacobi 矩陣被認為是帶狀的(僅適用於 fprime=None )。

epsfcn 浮點數,可選

雅可比行列式的 forward-difference 近似的合適步長(對於fprime=None)。如果epsfcn小於機器精度,則假設函數中的相對誤差為機器精度的量級。

factor 浮點數,可選

確定初始步長界限的參數(factor * || diag * x||)。應該在區間 (0.1, 100) 中。

diag 順序,可選

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

返回

x ndarray

解決方案(或不成功調用的最後一次迭代的結果)。

infodict dict

帶有鍵的可選輸出字典:

nfev

函數調用次數

njev

雅可比調用次數

fvec

在輸出處評估的函數

fjac

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

r

同一矩陣的 QR 因式分解產生的上三角矩陣

qtf

矢量(transpose(q) * fvec)

ier int

一個整數標誌。如果找到解決方案,則設置為 1,否則請參閱消息以獲取更多信息。

mesg str

如果沒有找到解決方案,mesg 會詳細說明失敗的原因。

注意

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])

相關用法


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