Pop*_*orn 5 python math optimization performance package
我正在寻找这个多项式方程最快的解决方案x:
令m为集合M中的元素。
全部m的总和{a_m * x ^(b_m)-c_m * x ^(b_m-1)} = 0,其中a_m,b_m,c_m对于每个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
Run Code Online (Sandbox Code Playgroud)
这将返回多项式的近似根。如果不够准确,请传入较小的 epsilon,直到它足够准确。
请注意,此函数可能会发散并永远运行,或者抛出 ZeroDivisionError。小心处理。
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |