OJ1(迭代算法)

求平方根的迭代公式:x1 = 1/2 * (x0 + a/x0)

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
/* 注解:
a 为 所给数
x0 初始化为 a的平方根 
a/2 为a的初值

算法:	   
迭代求出x1 ,此时与a的真正平方根误差较大
把新求出的x1 带入x0,从而再求出一个新的x1,经过不断迭代,此值将趋近于真正的平方根值
比较前后两次求得的平方根x0,x1,若差值小于指定值,即达到了要求精度,x1 为 a 的平方根	 
		
*/ 
	double x1,x0,a;
	cin>>a;
	if(a < 0)
	{
		cout<<"error!"<<endl;	
	}else{
		x0 = a/2;
		x1 = 1.0/2 * (x0 + a/x0);  	// 1/2 结果为0, 应为1.0/2 = 0.5
//		cout << x0 << " " << x1<<endl;  		debug
		do{
			x0 = x1;
			x1 = 1.0/2 * (x0 + a/x0);
//			cout << x0 << " " << x1<<endl;			debug
		}while(fabs(x0-x1) >= 1e-6);  
			printf("%f",x1);
			return 0;
	}
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值