Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 求解不同幂次的长多项式的最快方法_Python_Performance_Math_Optimization_Package - Fatal编程技术网

Python 求解不同幂次的长多项式的最快方法

Python 求解不同幂次的长多项式的最快方法,python,performance,math,optimization,package,Python,Performance,Math,Optimization,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上的多项式求根问题。如果这里的答案不令人满意,您可以尝试在新站点发布此问题。 def newton(f, fprime, firstguess, epsilon): x = firstguess while abs(f(x)) > ep

我在寻找多项式方程的最快解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和其他语言的解决方案,前提是切换非常有益


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

如果您只寻找一个根,而不是所有根,您可以使用它,我希望对于您描述的多项式,它相当快

设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)
}的和

这将返回多项式的近似根。如果它不够精确,请输入一个较小的ε,直到它足够精确


请注意,此函数可能会发散,并永远运行,或抛出一个ZeroDivision错误。小心处理。

我们可以假设M的元素都是正的吗?Scipy的优化包()可以让您直接解决最大化问题,尽管我认为优化问题通常是寻找最小值。同一个包还具有根查找例程()。集合M中的元素不是数字,它们只是在那里为常量a、b、c下标,因为每个不同的M中的元素都不同。a_m可以是负的,也可以是正的。b_m和c_m都是负数。根是价格,所以复杂的根对我没有帮助。事实上,我不允许收取大于4的价格,因此我猜如果根大于4,我将使用4作为最佳解决方案。您知道函数在区间(0,4)中只有一个根吗?另外,如果(如您所评论的)指数b_m为负,那么您想要找到的“该”解的函数不是多项式。但是,如果指数是整数,则可以将函数乘以足够大的x次方,将其转化为x>0上的多项式求根问题。如果这里的答案不令人满意,您可以尝试在新站点发布此问题。
def newton(f, fprime, firstguess, epsilon):
    x = firstguess
    while abs(f(x)) > epsilon:
        x = x - (f(x) / fprime(x))
    return x