如何创建处理多项式的函数?

2024-05-12 23:17:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有关于多项式的问题,我花了大约4个小时在这上面,但我就是搞不懂。我对Python和编程还不太熟悉,我尝试过在纸上写出来,但我就是不知道。

  1. 编写并测试一个Python函数negate(p),该函数对其coefficients列表所表示的多项式p求反,并返回一个新的多项式(表示为列表)。换言之,编写一个使数字列表为负的函数。

  2. 编写一个Python函数eval_polynomial(p, x),返回P(x)的值,其中P是由其系数列表p表示的多项式。例如,eval_polynomial([1, 0, 3], 2)应该返回1*2^2+0*2+3=7。使用一个while循环。

  3. 编写并测试一个函数multiply_by_one_term(p, a, k),它将给定的多项式p(由系数列表表示)乘以ax^k,并将乘积作为新列表返回。

如果有人能帮助我,我将非常感激。


Tags: 函数列表by编程eval数字onemultiply
1条回答
网友
1楼 · 发布于 2024-05-12 23:17:30

我建议使用numpy.poly1dnumpy.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

如果要构建自己的函数,假设peem>按顺序包含系数: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]

注意

我的evaluate函数使用指数函数,这可以用Horner规则来避免,正如在另一个答案中所述,这可以在Numpy的polyval函数中找到

相关问题 更多 >