題目
【問題描述】
給定一個精度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真是妙啊