计算多项式

时间:2013-02-11 04:14:48

标签: python polynomial-math

我真的没有代码可以用这个来发布,因为我非常坚持如何写它。我必须给出一个正整数列表和一个x值来复制下面的图片示例。

我所拥有的等式是p(x) = a0 + a1x + a2x**2 + a3x**3 + ... + anx**n,所以我的想法是检查列表的长度并使其自动确定它必须做多少计算,然后用任何值替换x在名单之外。不幸的是,我不知道如何写这个或从哪里开始。

4 个答案:

答案 0 :(得分:1)

以下是您实施poly的方法:

def poly(l, x):
    sum = 0
    xp =1 
    for a in l:
        sum += a *xp #add next term
        xp = x* xp #xp is x^p
    return sum

print poly([1,2,1],2)
print poly([1,0,1,0,1],3)

答案 1 :(得分:1)

def poly(a_list, x):
    ans = 0
    for n,a in enumerate(a_list):
        ans += a*x**n
    return ans

enumerate函数返回一个元组,其中包含列表中每个元素的索引和值。因此,您可以使用“for index,value in enumerate(list)”轻松遍历列表。

答案 2 :(得分:0)

您可以使用itertools starmap

>>> from itertools import starmap
>>> def poly(a_list, x):
...     val = lambda p, a: a*x**p
...     return sum(starmap(val, enumerate(a_list)))
...
>>> poly([1, 2, 1], 2)
9
>>> poly([1, 0, 1, 0, 1], 2)
21

答案 3 :(得分:0)

如果你有numpy会更好:

>>> from numpy import polyval
>>> polyval([1, 2, 1], 2)
9
>>> polyval([1, 0, 1, 0, 1], 2)
21

我认为你必须首先反转a_list。 (它恰好起作用,因为a_list是回文)