查找三次函数的局部 min/max

Finding local min/max of a cubic function

我正在寻找一个接受 6 个变量 a, b, c, d, e, f 的 Python 函数,其中 a, b 是要计算的间隔(例如 [1, 3],都是实数),c, d, e, f 是三次多项式的系数,即 f(x) = cx^3 + dx^2 + ex + f,return 是区间 [a, b] 上的局部 min/max。 =22=]

我对如何对此进行编程有一个粗略的想法(尽管计算时间会很糟糕),我在其中创建了一个新的步骤列表 0.01 或从 ab,计算每个值的 f,然后简单地 return 列表的 min/max。对于相距很远的 a, b 个值,这将花费很长时间。

制作这个的最佳方法是什么?是否有用于 scientific/mathematical 计算的外部库?谢谢。

对于三次函数,您可以在没有优化但使用微分的情况下找到潜在 minumum/maximums 的位置:

  • 得到一阶和二阶导数
  • 求一阶导数的零点(求解二次方程)
  • 检查找到的点中的二阶导数 - 符号表明该点是最小值、最大值还是鞍点

我认为差异化应该在sympy

还要检查问题陈述是否假设考虑了边界值(正如@Lakshay Garg 在评论中指出的那样)