算法 - 练习(3)

求平方根(迭代)

  • 求平方根的迭代公式: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。 
*/
发布了53 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/jy_z11121/article/details/98586287
今日推荐