查找三次函数的局部 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
或从 a
到 b
,计算每个值的 f
,然后简单地 return 列表的 min/max。对于相距很远的 a, b
个值,这将花费很长时间。
制作这个的最佳方法是什么?是否有用于 scientific/mathematical 计算的外部库?谢谢。
对于三次函数,您可以在没有优化但使用微分的情况下找到潜在 minumum/maximums 的位置:
- 得到一阶和二阶导数
- 求一阶导数的零点(求解二次方程)
- 检查找到的点中的二阶导数 - 符号表明该点是最小值、最大值还是鞍点
我认为差异化应该在sympy
包
还要检查问题陈述是否假设考虑了边界值(正如@Lakshay Garg 在评论中指出的那样)
我正在寻找一个接受 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
或从 a
到 b
,计算每个值的 f
,然后简单地 return 列表的 min/max。对于相距很远的 a, b
个值,这将花费很长时间。
制作这个的最佳方法是什么?是否有用于 scientific/mathematical 计算的外部库?谢谢。
对于三次函数,您可以在没有优化但使用微分的情况下找到潜在 minumum/maximums 的位置:
- 得到一阶和二阶导数
- 求一阶导数的零点(求解二次方程)
- 检查找到的点中的二阶导数 - 符号表明该点是最小值、最大值还是鞍点
我认为差异化应该在sympy
包
还要检查问题陈述是否假设考虑了边界值(正如@Lakshay Garg 在评论中指出的那样)