算法 - 练习(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。 
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值