我有一个多项式函数,我想找出它的所有局部极值。我可以通过P(x)计算多项式,通过d_P(x)计算它的导数。
我的第一个想法是使用minimize_scalar,但是这似乎不能利用我可以计算导数的事实。或者,我可以使用更通用的minimize函数并提供渐变。
有没有关于哪种方法更好工作的经验法则,或者这是我应该测试这两种方法并看看哪种方法更好的东西。由于我正在优化的函数是一个多项式(行为良好),我想知道我使用的函数是否真的那么重要,但如果有人有更多的背景就更好了。
特别地,P(x)是n次的(唯一)多项式,它在一组n-1点上交替地获得1或-1的值。
下面是一个缩放后的P(x)示例,以便P(0)=1。请注意,y轴是按symlog比例绘制的。

发布于 2019-02-20 23:57:16
由于您有一个连续的标量函数,因此minimize_scalar的文档建议使用一种更离散的优化方法。因为它不使用梯度信息,所以在你的目标中不会有噪声/不连续性/离散性的问题。但是,如果将minimize与基于梯度的方法结合使用,则会在噪波/不连续性/离散性的收敛方面遇到问题。
如果目标函数是一阶连续的,那么对于给定的边界,minimize和minimize_scalar都应该产生相同的解。
https://stackoverflow.com/questions/54777949
复制相似问题