使用给定系数创建多项式

问题描述 投票:0回答:3

我想在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。代码有什么问题或运行有问题吗?

python polynomials coefficients
3个回答
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))

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]

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

问候


0
投票

您可以利用map

def polynomial(p, x):
  return sum(map(lambda (i, c): c * pow(x, i), enumerate(p)))
© www.soinside.com 2019 - 2024. All rights reserved.