当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。