scipy.optimize.root_scalar

scipy.optimize.root_scalar(f, args=(), method=None, bracket=None, fprime=None, fprime2=None, x0=None, x1=None, xtol=None, rtol=None, maxiter=None, options=None)[源代码]

查找标量函数的根。

参数
f可调用

要查找其根的函数。

args元组,可选

传递给目标函数及其导数的额外参数。

method字符串,可选

求解器的类型。应该是

括号:2个浮点数的序列,可选

用括号括起根的间隔。 f(x, *args) 两个端点必须有不同的标志。

x0浮动,可选

初步猜测是这样的。

x1浮动,可选

再猜一猜。

fprimeBool或Callable,可选

如果 fprime 是布尔值并且为True, f 假定返回目标函数和导数的值。 fprime 也可以是返回 f 。在这种情况下,它必须接受与 f

fprime2Bool或Callable,可选

如果 fprime2 是布尔值并且为True, f 假定返回目标函数以及一阶和二阶导数的值。 fprime2 也可以是返回 f 。在这种情况下,它必须接受与 f

xtol浮动,可选

终止容差(绝对)。

rtol浮动,可选

终止的容差(相对)。

maxiter整型,可选

最大迭代次数。

optionsDICT,可选

求解器选项词典。例如, k ,请参见 show_options() 有关详细信息,请参阅。

退货
solRootResults

表示为 RootResults 对象。重要属性包括: root 解决方案是, converged 指示算法是否成功退出的布尔标志,以及 flag 它描述了终止的原因。看见 RootResults 有关其他属性的说明,请参见。

参见

show_options

求解程序接受的其他选项

root

求向量函数的根。

注意事项

本节介绍可通过‘method’参数选择的可用求解器。

默认情况下,将使用适用于当前情况的最佳方法。如果提供了托架,可以使用其中一种托架方法。如果指定了导数和初始值,则可以选择基于导数的方法之一。如果没有任何方法被判断为适用,它将引发异常。

示例

求一个简单立方的根

>>> from scipy import optimize
>>> def f(x):
...     return (x**3 - 1)  # only one real root at x = 1
>>> def fprime(x):
...     return 3*x**2

这个 brentq 方法将方括号作为输入

>>> sol = optimize.root_scalar(f, bracket=[0, 3], method='brentq')
>>> sol.root, sol.iterations, sol.function_calls
(1.0, 10, 11)

这个 newton 方法接受单个点作为输入,并使用导数

>>> sol = optimize.root_scalar(f, x0=0.2, fprime=fprime, method='newton')
>>> sol.root, sol.iterations, sol.function_calls
(1.0, 11, 22)

该函数可以在单个调用中提供值和导数。

>>> def f_p_pp(x):
...     return (x**3 - 1), 3*x**2, 6*x
>>> sol = optimize.root_scalar(f_p_pp, x0=0.2, fprime=True, method='newton')
>>> sol.root, sol.iterations, sol.function_calls
(1.0, 11, 11)
>>> sol = optimize.root_scalar(f_p_pp, x0=0.2, fprime=True, fprime2=True, method='halley')
>>> sol.root, sol.iterations, sol.function_calls
(1.0, 7, 8)