求立方函数的局部最小值/最大值

时间:2018-09-17 04:15:55

标签: python math scientific-computing

我正在寻找一个Python函数,该函数需要6个变量a, b, c, d, e, f,其中a, b是要计算的区间(例如[1, 3],所有实数),并且c, d, e, f是三次多项式的系数,即f(x) = cx^3 + dx^2 + ex + f,并返回区间[a, b]上的局部最小值/最大值。

我对如何编程有一个粗略的想法(尽管计算时间会很糟),在这里我创建了一个新的步骤列表0.01或类似的从a到{{1 }},对每个值求b,然后简单地返回列表的最小值/最大值。对于相距很远的f值,这会花费很长时间。

实现这一目标的最佳方法是什么?是否有用于科学/数学计算的外部图书馆?谢谢。

1 个答案:

答案 0 :(得分:3)

对于三次函数,您无需优化即可使用微分找到可能的最小/最大位置:

  • 获取一阶和二阶导数
  • 找到一阶导数的零(解二次方程)
  • 检查找到的点的二阶导数-符号指示该点是最小,最大还是鞍形点

我认为差异化应该放在sympy包中

还要检查问题陈述是否假定考虑了边界值(如@Lakshay Garg在注释中所指出的那样)