root(method='broyden1')#

scipy.optimize.root(fun, x0, args=(), method='hybr', jac=None, tol=None, callback=None, options=None)

另请参阅

有关其余参数的文档,请参阅 scipy.optimize.root

选项:
——-
nitint,可选

要执行的迭代次数。如果省略(默认),则执行尽可能多的迭代以满足公差要求。

dispbool,可选

在每次迭代时将状态打印到标准输出。

maxiterint,可选

要执行的最大迭代次数。

ftolfloat,可选

残差的相对公差。如果省略,则不使用。

fatolfloat,可选

残差的绝对公差(最大范数)。如果省略,则默认为 6e-6。

xtolfloat,可选

相对最小步长。如果省略,则不使用。

xatolfloat,可选

绝对最小步长,由雅可比近似确定。如果步长小于此值,则优化终止并视为成功。如果省略,则不使用。

tol_normfunction(vector) -> scalar,可选

在收敛检查中使用的范数。默认值为最大范数。

line_search{None, 'armijo'(默认),'wolfe'},可选

使用哪种类型的线搜索来确定雅可比近似给出的方向上的步长。默认为 'armijo'。

jac_optionsdict,可选

各个雅可比近似的选项。

alphafloat,可选

雅可比矩阵的初始猜测为 (-1/alpha)。

reduction_methodstr 或 tuple,可选

用于确保 Broyden 矩阵的秩保持较低的方法。可以是给出方法名称的字符串,也可以是 (方法, 参数1, 参数2, ...) 形式的元组,该元组给出方法名称和附加参数的值。

可用方法

  • restart:删除所有矩阵列。没有额外的参数。

  • simple:删除最旧的矩阵列。没有额外的参数。

  • svd:仅保留最重要的 SVD 分量。需要一个额外的参数 to_retain,该参数确定在完成秩缩减时要保留的 SVD 分量的数量。默认值为 max_rank - 2

max_rankint,可选

Broyden 矩阵的最大秩。默认值为无穷大(即,不进行秩缩减)。

示例

>>> def func(x):
...     return np.cos(x) + x[::-1] - [1, 2, 3, 4]
...
>>> from scipy import optimize
>>> res = optimize.root(func, [1, 1, 1, 1], method='broyden1', tol=1e-14)
>>> x = res.x
>>> x
array([4.04674914, 3.91158389, 2.71791677, 1.61756251])
>>> np.cos(x) + x[::-1]
array([1., 2., 3., 4.])