python中def root的用法_python scipy optimize.root_scalar用法及代码示例

查找标量函数的根。

参数:

f:callable寻找根源的函数。

args:tuple, 可选参数额外的参数传递给目标函数及其派生函数。

method:str, 可选参数bracket:A sequence of 2 floats, optional:用括号括起来的间隔。 f(x,* args)在两个端点处必须具有不同的符号。

x0:float, 可选参数初步猜测。

x1:float, 可选参数第二个猜测。

fprime:bool 或 callable, 可选参数如果fprime是布尔值且为True,则假定f返回目标函数和导数的值。 fprime也可以是可调用的返回f的导数。在这种情况下,它必须接受与f相同的参数。

fprime2:bool 或 callable, 可选参数如果fprime2是布尔值且为True,则假定f返回目标函数以及一阶和二阶导数的值。 fprime2也可以是可调用的,返回f的二阶导数。在这种情况下,它必须接受与f相同的参数。

xtol:float, 可选参数终止的公差(绝对值)。

rtol:float, 可选参数终止的公差(相对)。

maxiter:int, 可选参数最大迭代次数。

options:dict, 可选参数求解器选项字典。例如。k,请参阅show_options()有关详细信息。

返回值:

sol:根结果解决方案表示为RootResults Object 。重要属性是:root解决方案 ,converged一个布尔标志,指示算法是否成功退出,以及flag描述终止的原因。看到RootResults用于其他属性的描述。

注意:

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

默认情况是针对出现的情况使用最佳方法。如果提供了括号,则可以使用其中一种包围方法。如果指定了导数和初始值,则可以选择基于导数的方法之一。如果判定没有方法适用,则将引发Exception。

例子:

找到简单三次方的根

>>> 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值