求平方根(迭代)
- 求平方根的迭代公式:x1 = (x0 + a/x0) / 2
#include<stdio.h>
#include<math.h>
void main()
{
float a, x0, x1;
printf("Input a = ");
scanf("%f", &a);
if(a < 0)
printf("Error!\n");
else
{
x0 = a / 2; //给x0设置一个初值a/2,作为a的平方根值
x1 = (x0 + a/x0) / 2; //利用迭代公式求出一个x1,此值与真正的a的平方根值相比会有很大的误差
//不断地求出新的x0、x1,当两者的差值小于我们指定的值时,
//即达到我们要求的精度,则认为x1就是a的平方根值。
do
{
x0 = x1;//把新求得的x1再赋给x0,用新的x0再去求出一个新的x1
x1 = (x0 + a/x0) / 2;
} while(fabs(x0 - x1) >= 1e-6);
}
printf("Reseult: \n");
printf("sqrt(%.0f) = %f\n", a, x1);
}
/* 总结:
迭代法常用于求方程或方程组的近似根,假设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:
1. 将一个方程的近似根赋给变量x0;
2. 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;
3. 当x0与x1的差的绝对值小于指定的精度要求时,即为结果;否则,重复步骤2。
*/