【发布时间】:2011-12-06 20:58:26
【问题描述】:
我正在寻找这个多项式方程的最快解 x:
设 m 为集合 M 中的一个元素。
对所有 m 求和 {a_m * x^(b_m) - c_m * x^(b_m - 1)} = 0,其中每个 m 的 a_m、b_m、c_m 都是不同的。集合 M 有 ~15-20 个元素。
如果解 > 4,则返回 4。如果解
我更喜欢 python 和其他语言的解决方案,前提是它对切换非常有益。
注意这是目标函数的导数。我只是想最大化目标函数,所以如果除了解决这个多项式之外还有更好的方法来做到这一点,那也可以!解决方案应该相当快,因为我正在尝试解决其中许多目标函数。
【问题讨论】:
-
我们可以假设M的元素都是正数吗?
-
Scipy 的优化包 (docs.scipy.org/doc/scipy/reference/optimize.html) 可能让您直接解决最大化问题,尽管我认为优化问题通常是寻找最小值。同一个包也有根查找例程 (docs.scipy.org/doc/scipy/reference/optimize.html#root-finding)。
-
集合 M 中的元素不是数字,它们只是为常量 a、b、c 下标,因为每个不同的 m 都不同。 a_m 可以是负数或正数。 b_m 和 c_m 都是负数。根源将是价格,所以复杂的根源并不能真正帮助我。事实上,我不能收取 > 4 的价格,所以我猜如果一个根 > 4,我将使用 4 作为最优解。
-
你知道函数在区间 (0,4) 中只有一个根吗?此外,如果(正如您所评论的)指数 b_m 为负数,那么您想要找到“the”解决方案的函数不是多项式。但是,如果指数是整数,则可以通过将函数乘以 x 的足够大的幂来转换为 x > 0 上的多项式求根问题。
-
如果这里的答案不令人满意,您可以尝试在新的scicomp 网站上发布此内容。
标签: python performance math optimization package