con*_*ent 5 python evaluate polynomial-math multiplying
我有关于多项式的这些问题,我花了大约4个小时,但我无法得到它.我是Python和编程的新手,我已经尝试过在纸上编写它,但我只是不知道.
编写并测试一个Python函数negate(p),该函数否定由其系数列表表示的多项式,p并返回一个新的多项式(表示为列表).换句话说,编写一个使数字列表为负数的函数.
编写一个eval_polynomial(p, x)返回值的Python函数P(x),其中P是由系数列表表示的多项式p.例如,eval_polynomial([1, 0, 3], 2)应返回1*2 ^ 2 + 0*2 + 3 = 7.使用单个while循环.
编写并测试一个函数multiply_by_one_term(p, a, k),该函数将给定的多项式乘以p系数列表,ax^k并将该产品作为新列表返回.
如果有人可以帮助我,我将非常感激.
Sau*_*tro 11
我建议使用numpy.poly1d和numpy.polymul,系数是a0*x2 + a1*x + a2.
例如,代表3*x**2 + 2*x + 1:
p1 = numpy.poly1d([3,2,1])
Run Code Online (Sandbox Code Playgroud)
使用生成的poly1d对象,您可以使用*,/等等...:
print(p1*p1)
# 4 3 2
#9 x + 12 x + 10 x + 4 x + 1
Run Code Online (Sandbox Code Playgroud)
如果你想构建自己的函数,假设p按顺序包含系数a0 + a1*x + a2*x**2 + ...:
def eval_polynomial(p,x):
return sum((a*x**i for i,a in enumerate(p)))
def multiply_by_one_term(p, a, k):
return [0]*k + [a*i for i in p]
Run Code Online (Sandbox Code Playgroud)
我的评估函数使用指数,这可以通过Horner的规则避免,如另一个答案所示,可以在Numpy的polyval函数中找到