如何计算一个多项式在一个特定的x值?



使用map求给定多项式在特定x值处的值

输入:

  • p:增加x功率的系数列表
  • x:计算
  • x的值

输出:表示求值多项式值的数字

示例:poly_eval([1, 2, 3], 2) = 1(2)^0 + 2(2)^1 + 3(2)^2 = 17

def poly_eval(coeff_list, x):
total = 0
for i, coeff in enumerate(coeff_list):
total += coeff * x**i
return total

或者如果你真的想使用map:

def poly_eval(coeff_list, x):
n = len(coeff_list)
return sum(map(lambda coeff, x, y: coeff*x**y, coeff_list, [x]*n, range(n)))

这实际上是一个有趣的问题。因为答案相对简单,而且纸笔的解决方案是大家都知道的,所以真正的事情有点被忽视了。

如前所述,通常大多数人会用笔和纸来写。然而,有一种更好的方法更适合于编码目的,被称为Ruffini Horner方法。

将多项式写在数组中。所以y = x^3-7x+7=var y = [1,0,-7,7]

然后一个简单的函数;

var calcP = (y,x) => y.reduce((p,c) => p*x+c);

最新更新