Python解題-(1+x)^a

題目

【問題描述】

給定一個精度e,用下列Taylor公式計算(1+x)a,|x|<1的近似值。

(1+x)a=1+ax+a(a-1)x2/2!+…+[a(a-1)…(a-n+1)]xn/n!+…, |x|<1

其中|x|<1,e爲實數,a爲實數。編寫程序根據用戶輸入的x(|x|<1)、a和e的值,利用上述Taylor展開式計算(1+x)a的近似值,要求前後兩次迭代之差的絕對值小於e,給出相應的最小迭代次數n和最後一次計算的(1+x)a的值。
【輸入形式】

從控制檯輸入小數x(|x|<1且x不等於0)、實數a和實數e(0<e<|x|),兩數中間用空格分隔。

【輸出形式】

控制檯輸出公式結果:輸出迭代次數n和最後一次計算的(1+x)a的值(以一個空格分隔,並且輸出(1+x)a時要求小數點後保留8位有效數字)。

思路

根據公式,兩次迭代直接差xxx/i,用while控制精度,最後輸出

代碼

x,a,e = input().split()
x = float(x)
a = float(a)
e = float(e)
x = 0
y = 1
sum = 1
count = 0
i = 1
while abs(abs(y)-abs(x))>e:
    x = y
    y = x*a*x/i
    sum += y
    i += 1
    a -= 1
print(i,"%.8f" % sum)

Python真是妙啊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章