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

问题描述 投票:0回答:1

我正在寻找一个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或类似的小从ab,评估每个值的f,然后简单地返回min /列表的最大值。对于相隔很远的a, b值,这将花费很长时间。

制作此产品的最佳方法是什么?有没有用于科学/数学计算的外部库?谢谢。

python math scientific-computing
1个回答
3
投票

对于三次函数,您可以找到潜在最小值/最大值的位置而无需优化但使用区分:

  • 得到第一个和第二个衍生物
  • 找到一阶导数的零点(求解二次方程)
  • 检查找到的点中的二阶导数 - 符号表示该点是min,max还是saddle point

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

还要检查问题陈述是否假设考虑边界值(如评论中的@Lakshay Garg通知)

© www.soinside.com 2019 - 2024. All rights reserved.