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

news/2024/11/30 18:31:18/

如何求一个数字的算术平方根(又叫开根号,或者开方)? 大家普遍都是用计算器直接计算的,对于程序员来说,就是调用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)  //fabs函数是一个求绝对值的函数,求出x的绝对值{x1 = x2;x2 = (x1+a/x1)/2;     ///////迭代的核心代码}return x1;
}

x1减少,a/x1增加 , x1减少的幅度大于x2的检少幅度。
时间复杂度 < lgN

参考:https://blog.csdn.net/bone_ace/article/details/45870975


http://www.ppmy.cn/news/761181.html

相关文章

Linux--自动化的构建项目:make、Makefile

make是一个命令 Makefile是一个文件 Makefile的构成&#xff1a; ①依赖关系 ②依赖方法 编写Malefile文件的最终目标是生成项目&#xff0c;换句话说就是&#xff0c;想让Makefile把我的源代码编译&#xff0c;自动形成可执行文件 示例&#xff1a; 注&#xff1a;.PHONY…

前端开发怎么给变量起名

为变量命名最重要的考虑事项是&#xff0c;该名字要完全、准确地描述出该变量所代表的事物。通常&#xff0c;对变量的描述就是最佳的变量名。 命名注意事项 1. 使用有意义的变量名 变量名应该能够清晰地描述变量的用途和含义&#xff0c;使其易于理解和使用。避免使用无意义…

lol1月8日服务器维护,LOL1月16日更新维护到几点 8.1版本更新内容

出售物品 通常来说&#xff0c;出售一件物品意味着你之后会购买一件别的物品。在出售物品后立即离开基地在大多数情况下都是由于点错导致的。 如果你在出售物品的0.25秒内关闭了道具商店&#xff0c;那次的出售将被取消。 生命条更新 可读性改善 更高对比度的红色生命条 更深色…

超酷模仿LOL界面用Qt实现连接mysql数据库登陆,并记住账号——附代码下载、mysql驱动

文章目录 1 效果2 核心代码3 代码下载 1 效果 有背景音乐&#xff0c;登陆成功背景音乐消失&#xff0c;返回登陆&#xff0c;又有背景音乐。登陆账号和密码为空都会报错&#xff0c;并且重设焦点为空的控件上。账号密码存在mysql数据库中&#xff0c;使用mysqlsql驱动连接&am…

CSS 颜色 字体 背景 文本 边框 列表 display属性

1 颜色属性 <div style"color:blueviolet">ppppp</div><div style"color:#ffee33">ppppp</div><div style"color:rgb(255,0,0)">ppppp</div><div style"color:rgba(255,0,0,0.5)">ppppp&l…

android 弹窗有边框_android中常用的弹出提示框

我们在平时做开发的时候&#xff0c;免不了会用到各种各样的对话框&#xff0c;相信有过其他平台开发经验的朋友都会知道&#xff0c;大部分的平台都只提供了几个最简单的实现&#xff0c;如果我们想实现自己特定需求的对话框&#xff0c;大家可能首先会想到&#xff0c;通过继…

Web前端大作业——基于HTML+CSS+JavaScript仿英雄联盟LOL游戏网站

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

android 弹窗有边框_常用的android弹出对话框

我们在平时做开发的时候&#xff0c;免不了会用到各种各样的对话框&#xff0c;相信有过其他平台开发经验的朋友都会知道&#xff0c;大部分的平台都只提供了几个最简单的实现&#xff0c;如果我们想实现自己特定需求的对话框&#xff0c;大家可能首先会想到&#xff0c;通过继…