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 方程的根的初始估计。

args元组,可选

它作为 func 的任何额外参数。

fprime可调用 f(x, *args),可选

它用于计算 func 的雅可比行列式,并跨行计算导数。默认情况下,雅可比行列式将被估计。

full_output布尔值,可选

如果为 True,则返回可选的输出。

col_deriv布尔值,可选

它指定雅可比函数是否计算沿列的导数(更快速,因为没有转置操作)。

xtol浮点数,可选

如果两个连续迭代之间的相对误差不超过 xtol,则计算将终止。

maxfev整数,可选

它表示对该函数的最大调用次数。如果为零,则 100*(N+1) 即最大值,其中 N 是 x0 中的元素数量。

band元组,可选

如果设置为包含雅可比矩阵带内子对角线和超对角线数量的两序列,则该雅可比矩阵被视为带状(仅适用于 fprime=None)。

epsfcn浮点数,可选

它表示雅可比行列式的正差分近似的适当步长(对于 fprime=None)。如果 epsfcn 小于机器精度,则假定函数中的相对误差为机器精度的数量级。

factor浮点数,可选

它表示确定初始步长界限(factor * || diag * x||)的参数。它应该在区间 (0.1, 100) 中。

diag序列,可选

它作为 N 个正项,用作变量的比例因子。

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