今天看到一个问题:计算机如何实现开根号?

如何求一个数字的算术平方根(又叫开根号,或者开方)? 大家普遍都是用计算器直接计算的,对于程序员来说,就是调用sqrt()方法。但是其内部又是怎么实现的呢?下面作了下总结。

———-

方法一:迭代法

学过计算方法的应该都还有印象:一个函数 f(x) 在区间 [a,b] 上连续,且 f(x)=0 在 x∈[a,b] 上有解,求x?
最简单的就是用二分法:分别求f(a)、f(b)、f[(a+b)/2],哪两个乘积为负数则把那两个区间当做 [a,b] ,然后一直循环,直到 a-b 达到要求的精度为止。
再有一种就是用迭代法:迭代法有很多种,公共的思想是选一个数值,然后不断循环迭代,让它逐渐逼近真实解。至于怎么迭代可以让它趋近真实解,不同问题的求解用的迭代方法不同,我们暂且先忽略。
其实二分法也算是迭代法的一种了。

好了,直接看开根号的迭代法代码吧:

double _sqrt(double a)
{double x1 = a;double x2 = a/2;while(fabs(x1-x2) > 0.00000001){x1 = x2;x2 = (x1+a/x1)/2;     ///////迭代的核心代码}return x1;
}

方法二:数学推导

用计算机设计算法解决问题时,特别是数学问题,最直观的思路有两个。
一个是利用计算机强大的计算能力,用穷举、递归、迭代等方法,直接求解,或者不断趋近、收敛于真实解。例如有些密码的破解,例如线性方程组的求解等等。
另外一种就是利用数学,把问题用数学推导简化成一条公式,再通过计算机求解这条公式即可。最典型的就是圆周率Pi的计算公式:π/4=1-1/3+1/5-1/7+1/9-1/11+……

百度里面有一个求开方的很好的方法,原址见此。

以上方法可以笔算求解出任意一个正数的算术平方根。可是为什么要乘以20呢?为什么a要这样试验得到呢?这些数学原理我们不用深究,毕竟我们的目的不是搞数学研究。
我们的重点是,这应该怎样转化成程序代码呢?我的大约思路是:
1、用要求开方的这个数用字符数组存储,然后把它分隔成两个两个字符,用atoi函数转成int型存在一个整型数组里边,然后对这个整型数组进行操作。这样就能求任意长的数字的开方了,这是用第一种方法做不到的。
2、看上面的图,暂且把193.9叫做商,把29、383、3869叫做除数。则:把商的每一位数存在int型数组里边,则各个除数都能用商的各位数表示出来了。
3、逻辑实现:重点有两个,一个是除法的实现,另外一个是小数的处理。
具体的代码就不放出来了。

以上两种解法,只是解决了开根号的问题而已。我们注重的是求解思路,而不是具体的方法。毕竟生活中的问题不少,而解法又各式不同。但知道了从哪个方向去利用计算机开根号,那开立方、求对数 这些问题也就都容易解了。

生命不息,学习不止,以后如果还遇到其他解法,再来补上。

转载请注明出处,谢谢!(原文链接:http://blog.csdn.net/bone_ace/article/details/45870975)

计算机如何实现开根号?相关推荐

  1. 12、计算机如何实现开根号?

    如何求一个数字的算术平方根(又叫开根号,或者开方)? 大家普遍都是用计算器直接计算的,对于程序员来说,就是调用sqrt()方法.但是其内部又是怎么实现的呢? 方法一:迭代法 学过计算方法的应该都还有印 ...

  2. 普通计算机怎么算根号_「根号计算器」12、计算机如何实现开根号? - seo实验室...

    根号计算器 如何求一个数字的算术平方根(又叫开根号,或者开方)? 大家普遍都是用计算器直接计算的,对于程序员来说,就是调用sqrt()方法.但是其内部又是怎么实现的呢? 方法一:迭代法 学过计算方法的 ...

  3. 用计算机算出手机号码,手机计算器开根号怎么按(万能科学计算器在线使用方法)...

    在日常生活中,因为手机的方便些,也越来越成为我们生活中不可或缺的一部分了.因此,大家对手机也并不陌生,那么你的手机里有自带的计算器功能吗?你知道手机里自动的计算器功能如何正常使用吗?你知道手机自带的计 ...

  4. 计算机表格常用根式,excel怎么建立常用根式_在excel中怎样开根号�9�3

    EXCEL 如何开根号 用函数 =sqrt((C6-A6) (D6-B6)) excel表格中怎么开根号 1.在Excel中使用开根号,可以插入公式的方法实现.点入公式,选择根式即可. 2.操作如下. ...

  5. 用手机计算机计算三次根号,手机自带计算器不行求推荐一个能开3次根号的 – 手机爱问...

    2006-08-14 如像我遇到处理标准偏差,我没计算器,数字又很大,不知道开根号后的值.需要开根号,没工具.如何在计算机上处理. 有EXCEL中可直接实现计算标准偏差功能. DSTDEV 请参阅 将 ...

  6. 计算机开根号原理,根号的原理_怎么开的根号,有原理吗

    怎么开的根号,有原理吗 JPG,526x296,128KB,444_250 怎么在数轴上画出根号3,求详细过程和原理 JPG,600x293,231KB,514_250 求根号 X 2 2 9 根号 ...

  7. 3的0.8次方科学计算机怎么按,教教我按计算器啊比如3的40次方怎么按啊还有9开根号的0.8次...

    教教我按计算器啊比如3的40次方怎么按啊还有9开根号的0.8次 答案:3  信息版本:手机版 解决时间 2019-02-03 10:53 已解决 2019-02-03 07:27 教教我按计算器啊比如 ...

  8. 科学型计算机开四次方,电脑上的科学计算器怎么开根号(科学计算器开4次方根操作方法)...

    原标题:电脑上的科学计算器怎么开根号(科学计算器开4次方根操作方法) 大家应该都知道,2017年中级会计职称考试全面实行无纸化,考生要在电脑上完成整个答题过程.说起这个,最让考生们头疼的可能就是计算器 ...

  9. 【数学】手写开根号(牛顿迭代法 | 二分)

    题目链接 [编程题]开根号 题面 在没有任何数学库函数的情况下,求一个数 m 开 n 次方的结果. 输入描述: 每组输入只有1行,包括有一个正实数m和一个正整数n,其中1<=n<=321 ...

最新文章

  1. 新手推荐!天池数据挖掘挑战赛,2019全球数据智能大赛正式启动!60万奖金等你来拿...
  2. #!(sha-bang)--脚本的开始
  3. oracle监听程序无法分配,Oracle监听器服务不能启动的解决方法
  4. Java会话技术之 —— Spring Session
  5. 小波分解与小波包分解的区别
  6. 163邮箱链接服务器失败是怎么回事,outlook邮箱添加163邮箱账户失败该怎么办?...
  7. Python代码打包在xp系统上运行~~
  8. VS code Could not establish connection to IP 解决方法
  9. mysql distribute by_hive与mysql的数据分区的异同
  10. 5月语言排行榜:R 跌出前二十,Python 紧咬 C++
  11. 蘑菇街Java后台面试总结
  12. 软件架构师 第一部分 基础篇 第四章 识别架构特性
  13. Android之手机振动和振铃
  14. 强化学习——蛇棋游戏策略迭代实现
  15. 大品牌光环下的「嘉多保」,可以重疾多次赔的神仙产品
  16. 【微信小程序】behaviors使用传参
  17. 欧洲语言参照标准C2,成都排名前十的德语培训班-排行榜
  18. 串口和鼠标冲突,导致鼠标异常问题
  19. 完整的项目管理流程什么样?一次读懂项目管理5步骤
  20. 几种常用打开/修改系统镜像system.img工具

热门文章

  1. Linux 系统设置 : modprobe 命令详解
  2. OJ刷题---鸡兔同笼问题
  3. I2C总线读取MPU6050
  4. 如何配置自己的服务器接入微信服务器
  5. 【翻译】Wide Deep Learning for Recommender Systems--推荐系统的广泛深度学习
  6. 电脑批量合成B站视频使用 FFmpeg(bilibili视频m4s合成mp4)
  7. 使用一条sql语句在postgres中查询总数和分页数据
  8. 防火墙技术及应用(一)
  9. linux 应用层gpio中断_linux下GPIO中断驱动US100传感器--Apple的学习笔记
  10. 华为云主机添加云监控