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字符串,可选
求解器的类型。应该是
“一分为二” (see here)
“Brentq” (see here)
“布伦斯” (see here)
“骑乘” (see here)
“汤姆·748” (see here)
“牛顿” (see here)
“Sucant” (see here)
“哈雷” (see here)
- 括号: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)