当前位置:嗨网首页>书籍在线阅读

02-求实数的平方根

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

16.1 求实数的平方根

问题描述

19.png 输入一个实数,求这个实数的平方根。

【分析】

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

算法步骤如下。

(1)自定一个初值x0,作为a的平方根值,取a/2作为a的初值。

(2)利用上述迭代公式求出一个x1,把求得的x1代入x0中。

(3)再次利用迭代公式求出一个新的x1,比较x0和x1,如果它们的差值小于指定的EPS(精度,假设为1e−6),则该值趋于真正的平方根,x1可以作为平方根的近似值;否则,将x1代入x0,执行步骤(2)。

第16章\实例16-01.cpp
/********************************************
*实例说明:求实数的平方根
*********************************************/
1  #include<stdio.h>
2  #include<math.h>
3  void main() 
4  { 
5      double a,x0,x1; 
6      printf("请输入一个实数:"); 
7      scanf("%lf",&a); 
8      if(a<0) 
9          printf("输入错误,请重新输入!\n"); 
10     else 
11     { 
12         x0=a/2; 
13         x1=(x0+a/x0)/2; 
14         do 
15         { 
16             x0=x1; 
17             x1=(x0+a/x0)/2; 
18         }while(fabs(x0-x1)>=1e-6); 
19     } 
20     printf("%g的平方根是%g\n",a,x1); 
21 }

运行结果如图16.1所示。

399.png

图16.1 运行结果

【说明】

① 设定一个初值x0,从x0开始不断“逼近”真正的平 方根。

② 利用迭代公式求出x1。第一次求出的x1是一个不精确的值,与真正的平方根相比,误差很大,还需要进一步迭代,不断“靠近”真正的平方根。

③ 不断迭代,直到x1与x0的差值的绝对值小于1e−6时,我们就将x1作为a的平方根。