使用python评估多项式

时间:2016-01-16 04:58:28

标签: python

我试图创建自己的多项式类。我想创建一个函数,可以计算给定x的多项式。

到目前为止,我有这个,但是它给我的答案是对的,我无法弄清楚为什么? 使用列表输入多项式。例如[2,0,1,-7,13]将是2x ^ 4 + x ^ 2-7x + 13

class Polynomial:

def __init__(self, coefficients):
    self.coeffs=coefficients

def evaluate(self, x):
    sum = 0
    for i in range(len(self.coeffs)-1,0,-1):
        sum+=self.coeffs[i]*(x**i)
    return sum

2 个答案:

答案 0 :(得分:0)

您使用的i值对于索引和指数都不是正确的。您实际上正在评估reverse-coefficeint多项式,因此Polynomial([2,3,4])的评估结果实际上是Polynomial([4,3,2])的正确值。

以下是我如何定义evaluate

def evaluate(self, x):
    return sum(coef * x**exp for exp, coef in enumerate(reversed(self.coeffs)))

请注意,如果您希望Polynomial个对象可以调用(例如评论示例中的p1(4)),则应重命名evaluate函数__call__

答案 1 :(得分:0)

预计此代码的缩进块会出错。要解决错误,请确保包含缩进块:

class Polynomial:
    def __init__(self, coefficients):
        self.coeffs=coefficients

    def _call_(self, x):
    return sum(coef * x**exp for exp, coef in enumerate(reversed(self.coeffs)))