python - 查找三次函数的局部最小值/最大值
问题描述
我正在寻找一个 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
或类似的小东西 from a
to b
,评估f
每个值,然后简单地返回列表的最小值/最大值. a, b
对于相距甚远的值,这将需要很长时间。
做这个的最好方法是什么?是否有任何用于科学/数学计算的外部库?谢谢你。
解决方案
对于三次函数,您可以在没有优化但使用微分的情况下找到潜在最小值/最大值的位置:
- 得到一阶和二阶导数
- 找到一阶导数的零点(求解二次方程)
- 检查找到点的二阶导数 - 符号表明该点是最小值、最大值还是鞍点
我认为差异化应该在sympy
包装中
还要检查问题陈述是否假设考虑了边界值(正如@Lakshay Garg 在评论中指出的那样)
推荐阅读
- ios - 如何在 SwiftUI 中以编程方式滚动列表?
- enterprise-architect - 如何在 Enterprise Architect 中自动添加标记值类型和编辑模板
- visual-studio-code - launch.json- serverless - 属性程序不存在
- python - Python:曲面图未正确表示数据集
- sbt - 如何调试 SBT 发布期间执行的请求/响应的 HTTP 标头?
- sql-server - Where 子句中的函数导致查询优化问题
- xbox-live - 官方“Xbox Live API” - 在哪里可以找到知识渊博的人?
- javascript - 无法读取未定义 JavaScript 的属性“长度”
- java - 如何在单个请求中发送多个 JSON(Jmeter)
- kubernetes - 等待 http-01 质询传播:未能执行自我超时