1

たとえば、シリーズを生成するpython関数(al)を作成しようとしています

   f(x) = 1 + x + x^2 + ... + x^n

シリーズの項の数を指定します。(上記はそのようなシリーズの 1 つの例にすぎないことを思い出してください。) 次のようにある程度はできます。

def addTwoFunctions(f, g):
    return lambda x : f(x) + g(x)

私が今それをばかげた方法でやれば、それはうまくいきます:

// initialize h as a function
h = lambda x : 0*x

print h(2)                            # output = 0 

// first term in the series "1"
g = lambda x : x**0
h = addTwoFunctions(h, g)
print h(2)                            # output = 1

// second term  "x"
g = lambda x : x**1
h = addTwoFunctions(h, g)
print h(2)                            # output = 3

// third term "x^2"
g = lambda x : x**2
h = addTwoFunctions(h, g)
print h(2)                            # output = 7

これにより、正しい出力が作成されます (コメントで示されているように)。ただし、forループに入れた場合

print h(2)

for i in range(3) :
    g = lambda x: x**i
    h = addTwoFunctions(h,g)
    print h(2)
    pass

次のように出力を生成します

 0
 1
 4
 12

関数 h が for ループの各エントリで 2 倍になるかのように。ここで何か間違ったことをしていますか?

前もって感謝します、ニキル

4

0 に答える 0