我有这些关于多项式的问题,我在这上面花了大约 4 个小时,但我就是无法理解。我是 Python 和编程的新手,我试过在纸上解决它,但我就是不知道。
编写并测试一个 Python 函数
negate(p)
,该函数对由其系数p
列表表示的多项式取反并返回一个新的多项式(表示为一个列表)。换句话说,编写一个使数字列表为负数的函数。编写一个 Python 函数
<eval_polynomial(p, x)
返回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
并将产品作为新列表返回。
如果有人能帮助我,我将不胜感激。
最佳答案
我建议使用 numpy.poly1d
和 numpy.polymul
,其中系数是 a0*x2 + a1*x + a2
。
例如,表示3*x**2 + 2*x + 1
:
p1 = numpy.poly1d([3,2,1])
对于生成的 poly1d
对象,您可以使用 *
、/
等进行操作...:
print(p1*p1)
# 4 3 2
#9 x + 12 x + 10 x + 4 x + 1
如果您想构建自己的函数,假设 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]
注意事项
我的评估函数使用指数函数,这可以通过 Horner 规则避免,如另一个答案中所发布的那样,该答案在 Numpy 的 polyval
函数中可用
关于python - 如何创建处理多项式的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18093509/