2

私はそれを書く方法にかなり固執しているので、私は本当にこれで投稿するコードを持っていません。次の例を複製するには、正のintとx値のリストを指定する必要があります。

>>> poly([1, 2, 1], 2)
9
>>> poly([1, 0, 1, 0, 1], 2)
21
>>> poly([1, 0, 1, 0, 1], 3)
91

私が持っている方程式はですp(x) = a0 + a1x + a2x**2 + a3x**3 + ... + anx**nので、リストの長さをチェックして、実行する必要のある計算の数を自動的に決定するように作成し、xをリスト外の値に置き換えるというアイデアがありました。残念ながら、それをどのように書くか、どこから始めればよいのかわかりません。

4

4 に答える 4

2
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)」を使用してリストを簡単に反復処理できます。

于 2013-02-11T04:28:40.997 に答える
2

あなたがnumpyを持っているならさらに良い:

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

ただし、最初に a_list を逆にする必要があると思います。( a_list はパリンドロームであるため、たまたま機能します)

于 2013-02-11T05:04:39.060 に答える
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)
于 2013-02-11T04:26:14.340 に答える
0

itertoolsスターマップを使用できます

>>> 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
于 2013-02-11T04:58:07.657 に答える