我目前正在为我的大学学习做一个 python 练习。我非常坚持这项任务:
指数函数 e^x 的 N 次泰勒多项式由下式给出:
        N
p(x) = Sigma  x^k/k!  
k = 0
编写一个程序,(i) 导入类 Polynomial(在下面找到),(ii) 从命令行读取 x 和一系列 N 值,(iii) 创建一个表示泰勒多项式的 Polynomial 实例,以及 (iv) 打印值给定 N 个值的 p(x) 以及精确值 e^x。用 x = 0.5, 3, 10 和 N = 2, 5, 10, 15, 25 试试这个程序。
多项式.py
import numpy
class Polynomial:
def __init__(self, coefficients):
    self.coeff = coefficients
def __call__(self, x):
    """Evaluate the polynomial."""
    s = 0
    for i in range(len(self.coeff)):
        s += self.coeff[i]*x**i
    return s
def __add__(self, other):
    # Start with the longest list and add in the other
    if len(self.coeff) > len(other.coeff):
        result_coeff = self.coeff[:]  # copy!
        for i in range(len(other.coeff)):
            result_coeff[i] += other.coeff[i]
    else:
        result_coeff = other.coeff[:] # copy!
        for i in range(len(self.coeff)):
            result_coeff[i] += self.coeff[i]
    return Polynomial(result_coeff)
def __mul__(self, other):
    c = self.coeff
    d = other.coeff
    M = len(c) - 1
    N = len(d) - 1
    result_coeff = numpy.zeros(M+N+1)
    for i in range(0, M+1):
        for j in range(0, N+1):
            result_coeff[i+j] += c[i]*d[j]
    return Polynomial(result_coeff)
def differentiate(self):
    """Differentiate this polynomial in-place."""
    for i in range(1, len(self.coeff)):
        self.coeff[i-1] = i*self.coeff[i]
    del self.coeff[-1]
def derivative(self):
    """Copy this polynomial and return its derivative."""
    dpdx = Polynomial(self.coeff[:])  # make a copy
    dpdx.differentiate()
    return dpdx
def __str__(self):
    s = ''
    for i in range(0, len(self.coeff)):
        if self.coeff[i] != 0:
            s += ' + %g*x^%d' % (self.coeff[i], i)
    # Fix layout
    s = s.replace('+ -', '- ')
    s = s.replace('x^0', '1')
    s = s.replace(' 1*', ' ')
    s = s.replace('x^1 ', 'x ')
    #s = s.replace('x^1', 'x') # will replace x^100 by x^00
    if s[0:3] == ' + ':  # remove initial +
        s = s[3:]
    if s[0:3] == ' - ':  # fix spaces for initial -
        s = '-' + s[3:]
    return s
def simplestr(self):
    s = ''
    for i in range(0, len(self.coeff)):
        s += ' + %g*x^%d' % (self.coeff[i], i)
    return s
def _test():
    p1 = Polynomial([1, -1])
    p2 = Polynomial([0, 1, 0, 0, -6, -1])
    p3 = p1 + p2
print p1, '  +  ', p2, '  =  ', p3
p4 = p1*p2
print p1, '  *  ', p2, '  =  ', p4
print 'p2(3) =', p2(3)
p5 = p2.derivative()
print 'd/dx', p2, '  =  ', p5
print 'd/dx', p2,
p2.differentiate()
print '  =  ', p5
p4 = p2.derivative()
print 'd/dx', p2, '  =  ', p4
if __name__ == '__main__':
_test()
现在我真的被困在这个问题上,我很想得到一个解释!我应该将我的代码写在一个单独的文件中。我正在考虑创建多项式类的实例,并在 argv[2:] 中发送列表,但这似乎不起作用。在将 N 的不同值发送到 Polynomial 类之前,我是否必须创建一个 def 来计算泰勒多项式?
任何帮助都很棒,在此先感谢:)