【问题描述】
给定一个精度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 【输出形式】 控制台输出公式结果:输出迭代次数n和最后一次计算的(1+x)a的值(以一个空格分隔,并且输出(1+x)a时要求小数点后保留8位有效数字)。 根据公式,两次迭代直接差xxx/i,用while控制精度,最后输出 Python真是妙啊思路
代码
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)