创建具有给定系数的多项式

时间:2019-10-30 12:54:36

标签: python polynomials coefficients

我想在Python中创建一个具有给定系数但没有numpy或任何类似库的多项式。

例如,如果输入为(12,2,5,3)分别为a0,a1,a2,a3,则预期输出为12 + 2x + 5x ^ 2 + 3x ^ 3。

def polynomial(p,x):
    return sum((a*x**i for i,a in enumerate(p)))

polynomial(([12,2,5,3]),x)

我尝试了上面的代码,但自然收到一条错误消息,即未定义x。代码有什么问题或运行有问题吗?

3 个答案:

答案 0 :(得分:1)

x is not defined错误不是来自您的函数,而是您调用函数的位置。您需要使用实际号码调用该函数:

poly = polynomial([12, 2, 5, 3], 5)

此外,您可能需要考虑使poly成为返回函数的函数。即,以便您可以使用以下语法:

poly = polynomial([12, 2, 5, 3])
poly(5) # poly evaluated at 5
poly(10) # poly evaluated at 10

为此,请使用以下语法:

def polynomial(p):
    return lambda x: sum(a*x**i for i, a in enumerate(p))

答案 1 :(得分:0)

我不知道这是否是您要寻找的,但是您可以使用sympy来表示符号语言,例如:

from sympy import symbols

def polynomial(coefs,var):
    x = symbols(var)
    return [c*x for c in coefs]

>> polynomial([1,2,3,4],'x')
[x, 2*x, 3*x, 4*x]

如果它不能解决您的问题,则可以为您提供解决方法的思路。

致谢

答案 2 :(得分:0)

您可以利用map

def polynomial(p, x):
  return sum(map(lambda (i, c): c * pow(x, i), enumerate(p)))