首页 > 编程语言 > 详细

蓝桥杯 C/C++参考题目 开平方(数学题,迭代法求开方)

时间:2014-03-12 22:50:54      阅读:691      评论:0      收藏:0      [点我收藏+]

开平方

如果没有计算器,我们如何求2的平方根?
可以先猜测一个数,比如1.5,然后用2除以这个数字。如果我们猜对了,则除法的结果必然与我们猜测的数字相同。我们猜测的越准确,除法的结果与猜测的数字就越接近。
根据这个原理,只要我们每次取猜测数和试除反馈数的中间值作为新的猜测数,肯定更接近答案!这种计算方法叫做“迭代法”。

下面的代码模拟了如何用手工的方法求2的平方根的过程。请填写缺少的代码。

把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

bubuko.com,布布扣
1     double n = 2;
2     double a = 0;
3     double b = n;
4     while(fabs(a-b)>1E-15)
5     {
6         a = (a+b)/2;
7         b = __________;
8     }
9     printf("%f\n", a);
bubuko.com,布布扣

 


 

  水题,数学题,迭代法求开方

  a为每次取的猜测数,b为所谓的“试除反馈数”,实际上就是 b=n/a。如果猜数a大了,b就小;猜数a小了,b就大;所以不断取他们的中间值( (a+b)/2 )就会越来越接近开方的正确结果。直到他们的差fabs(a-b)小于1E-15的精度限制,就认为猜数a就是正确的开方结果。

  代码:

 

bubuko.com,布布扣
 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <cmath>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     double n = 2;
 9     double a = 0;
10     double b = n;
11     while(fabs(a-b)>1E-15)
12     {
13         a = (a+b)/2;
14         b = n/a;
15     }
16     printf("%f\n", a);
17 }
bubuko.com,布布扣

 

Freecode : www.cnblogs.com/yym2013

蓝桥杯 C/C++参考题目 开平方(数学题,迭代法求开方),布布扣,bubuko.com

蓝桥杯 C/C++参考题目 开平方(数学题,迭代法求开方)

原文:http://www.cnblogs.com/yym2013/p/3597342.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!