用牛顿迭代法求解:
设其平方根为x,则有x2=a,即x2-a=0。设函数f(x)= x2-a,在曲线上任取一点(x0,f(x0)),其中x0≠0那么曲线上该点的切线方程为
(1-1)
求该切线与x轴的交点( 即取 f(x)=0 代入上式 )得
(1-2)
初值不能取0,然后再循环中加上绝对值判断即可。
代码如下:
int main(int argc, char* argv[])
{
int N;
cin>>N ;
double x1 = 1;//初值
double x2 = x1/2.0+N/2.0/x1;
while( fabs(x2-x1)>0.001)
{
x1 = x2;
x2 = x1/2.0+N/2.0/x1;
}
cout<<x1<<endl;
system("pause");
return 0;
}