使用scipy进行标量最小化(`minimize`与`minimize_scalar`)

时间:2019-02-20 02:28:34

标签: python optimization scipy

我有一个多项式函数,我想为其找到所有局部极值。我可以通过P(x)评估多项式,并通过d_P(x)对其多项式求值。

我的第一个想法是使用minimize_scalar,但是这似乎无法利用我可以评估导数的事实。另外,我可以使用更通用的minimize函数并提供渐变。

是否有哪种方法可以更好地工作的经验法则,还是我应该测试两种方法并查看哪种方法更好的方法?由于我正在优化的函数是多项式(表现良好),所以我想知道我使用的函数是否真的那么重要,但是如果有人拥有更多的背景知识会很棒。

特别地,P(x)是度数n的(唯一)多项式,可替代地在一组1上达到-1n-1的值点。

以下是P(x)缩放后的样本,以使P(0)=1。请注意,y轴以符号比例尺绘制。 enter image description here

1 个答案:

答案 0 :(得分:0)

由于您具有连续的标量函数,因此minimize_scalar的文档提出了一种更离散的优化方法。由于它不使用梯度信息,因此您在物镜中的噪声/间断性/离散性方面不会有任何麻烦。但是,如果将minimize与基于梯度的方法结合使用,则将难以解决噪声/间断性/离散性的收敛问题。

如果目标函数是第一阶连续的,则minimizeminimize_scalar都应针对给定范围产生相同的解。