gpt4 book ai didi

python - 解决具有许多不同幂的长多项式的最快方法

转载 作者:太空狗 更新时间:2023-10-30 01:30:12 26 4
gpt4 key购买 nike

我正在寻找这个多项式方程的最快解 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。如果解 < 0,则返回 0。最快的方法是什么?用数字做吗?

我更喜欢 python 和其他语言的解决方案,除非它对切换非常有利。

请注意,这是目标函数的导数。我只是想最大化目标函数,所以如果除了求解这个多项式之外还有更好的方法来做到这一点,那也行!解决方案应该相当快,因为​​我正在尝试解决许多这些目标函数。

最佳答案

如果您只查找一个根而不是所有根,您可以使用 Newton's Method ,我希望对于您所描述的多项式来说速度相当快。

设 f(x) = 所有 m 的总和 {a*x^(b) - c*x^(b-1)}

然后 f'(x),f(x) 的导数,是所有 m {(a*b)*x^(b-1) - (c*(b-1) )*x^(b-2)}.

def newton(f, fprime, firstguess, epsilon):
x = firstguess
while abs(f(x)) > epsilon:
x = x - (f(x) / fprime(x))
return x

这将返回多项式的近似根。如果不够准确,请传入较小的 epsilon,直到足够准确为止。

注意这个函数可能会发散,永远运行,或者抛出 ZeroDivisionError。小心处理。

关于python - 解决具有许多不同幂的长多项式的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com