我试图创建自己的多项式类。我想创建一个函数,可以计算给定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
答案 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)))