给定精度e,求(1+x)^α,|x|<1的近似值和迭代次数 |
【问题描述】 给定一个精度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位有效数字)。 【样例输入1】 0.63628 0.5 0.00000001 【样例输出1】 28 1.27917161 【样例输入2】 0.47683 -0.5 0.00000001 【样例输出2】 23 0.82287667 【样例说明】 输入x为0.63628,a为0.5,e为0.00000001(小数点后8位),当n为28时,根据Taylor展开式求得(1+x)a近似值为1.279171611(小数点后9位),n为29时,根据Taylor展开式求得(1+x)a近似值为1.279171605(小数点后9位),两结果之差绝对值约为0.000000006(小数点后9位),小于要求的精度,所以最小迭代次数为28,最后一次计算的(1+x)a的值为1.27917161(小数点后保留8位有效数字);同样,输入x为0.47683,a为-0.5,e为0.00000001(小数点后8位),当n为23时,根据Taylor展开式求得(1+x)a近似值为0.822876669(小数点后9位),n为24时,根据Taylor展开式求得(1+x)a近似值为0.822876664(小数点后9位),两结果之差绝对值约为0.000000005(小数点后9位),小于要求的精度,所以最小迭代次数为23,最后一次计算的(1+x)a的值为0.82287667(小数点后保留8位有效数字) 注意:为保证数据的准确性和一致性,请使用double数据类型保存计算结果。 更详细的说明请移步与 https://blog.csdn.net/qq_41682681/article/details/80739087 下面附上我的代码 #include <iostream> |