【发布时间】:2012-10-14 23:43:13
【问题描述】:
我有一个 N 阶多项式(其中 N 是偶数)。对于 x 负/正无穷大,这个多项式等于负无穷大(因此它有一个最大值)。我现在正在做的是使用polyder 对多项式求导,然后使用Matlab 中的roots 函数找到N-1 次多项式的根,该函数返回N-1 个解。然后我选择真正最大化多项式的真正根。问题是我经常更新多项式,并且在每个时间步我都使用上述过程来找到最大化器。因此,roots 函数需要太多的计算时间,使我的应用程序变慢。 Matlab 或提议的算法中是否有一种方法可以以计算有效的方式进行这种最大化(即只找到一个解决方案而不是 N-1 个解决方案)?谢谢。
编辑:我也想知道Matlab中是否有一个例程只返回真正的根而不是
roots 返回所有实数/复数。
【问题讨论】:
-
你的意思是说你的多项式系数每个时间步都会改变?
-
是的,系数在每个时间步都发生变化,系数也是真实的。
-
我怀疑你能做到比这更有效。你的多项式系数如何变化? N的数量级是多少?您可以发布一些代码以及需要优化它的原因吗? (即为什么你认为值得优化代码的这个特定部分)。
-
@pedrosorio,N 是设计参数。这是我的应用程序中泰勒近似的顺序。根据分析器
roots需要超过 80% 的计算时间。我在统计推理应用程序的上下文中使用它。 -
除非多项式之间存在某种关系,否则能够更快地做到这一点意味着知道任何 N 次多项式的最大值可以让您更快地找到任何其他(不相关的)N 次多项式的最大值。
标签: matlab optimization max polynomial-math maximize