利用迭代法求平方根——迭代法开平方运算-创新互联

一、题目

用迭代法求:

创新互联专注于企业营销型网站、网站重做改版、沂水网站定制设计、自适应品牌网站建设、H5场景定制商城建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为沂水等各大城市提供网站开发制作服务。

x=\sqrt{a}

的值。要求精度为0.00001,即10^{-5}

二、迭代公式

求平方根的迭代公式为:

x_{n+1}=\frac{1}2{(x_{n}+\frac{a}{x_{n}})}

当满足

|x_{n+1}-x_{n}|\leqslant 0.00001

时,这时的x_{n+1}即是求得的根。如果

x_{n+1}-x_{n}=0

得到是精确值。如果不为0,则是近似值。

三、C++代码

先给出开平方运算的函数。再给出主程序,主程序中,得到结果 后进行一次验证。

里面很有意思的一点是,当我把精度设 为0.00001时,得到的结果是小数点后5位。但把精度设为0.000001时,结果也是小数点后5位。

//====================================
//sqrt.cpp
//------------------------------------
#include#includeusing namespace std;
//------------------------------------
double SQRT( double a )         // 迭代法开平方运算
{
	double y = a ;              //
	double x = 0.0;             // 给迭代赋初值
	while( fabs( y - x ) >0.00001 )    //迭代精度:0.00001
	{
		x = y;
		y = ( x + a / x ) * 0.5;
	}
	return y;          //返回迭代结果。       
}
//-------------------------------------
int main()
{
	double a, r;
	cout<< "Please input a digit for squart: " ;
	cin >>a;

	while( a< 0 )     //判断输入的数是否小于0。小于0则重新输入。
	{
		cout<< "The digit is less 0.Please input a digit once."<< endl;
		cin >>a;
	}

	r = SQRT( a );
	cout<< "Sqrt(a)="<< r<< endl;
	cout<< r * r<< endl;               //做个验证

	system( "PAUSE" );
	return 0;
}
//-------------------------------------------------------
四、结果

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享标题:利用迭代法求平方根——迭代法开平方运算-创新互联
当前地址:http://azwzsj.com/article/dochjg.html