用迭代方法求一个数的平方根。(谭浩强 C 语言 第三版 129 页第 6.11 题)
用迭代法求 x = √a 。求平方根的迭代公式如下,要求前后两次求出的 x 的差的绝对值小于 10 的 -5 次方。
我们可以先假设一个 x 的初始值是 x0 ,用以上的公式楸树 x 的下一个值 x1,再将 x1 代入上面的公式,求出 x2。继续计算下去,直到前后两次求出的 x 值 ( xn 和 xn+1)满足以下条件 | xn+1 - xn| < 1/(10 * 10 * 10 * 10 * 10 )
#include <stdio.h>
#include <math.h>
void main()
{
printf("嗨客网(www.haicoder.net)\n\n");
float a, x0 , x1;
printf("请输入一个正整数:");
scanf("%f",&a);
x0 = a/2;
x1 = ( x0 + a/x0) / 2;
do
{
x0 = x1;
x1 = (x0 + a/x0)/2;
} while(fabs(x0 - x1) >= 1e-5);
printf("%5.2f 的平方根结果为:%8.5f\n",a,x1);
}
运行后,控制台输出如下:
这里我们引入了 C 语言的数学运算包 math.h。我们按照公式从 x0 开始计算。这边也用到了 fabs 函数,用来计算绝对值。