导航:首页 > 源码编译 > 平方根速算法

平方根速算法

发布时间:2022-03-09 04:45:20

Ⅰ 平方根的手工计算方法

算法1: 假设被开放数为a,如果用sqrt(a)表示根号a 那么((sqrt(x)-sqrt(a/x))^2=0的根就是sqrt(a) 变形得 sqrt(a)=(x+a/x)/2 所以你只需设置一个约等于(x+a/x)/2的初始值,代入上面公式,可以得到一个更加近似的值,再将它代入,就得到一个更加精确的值……依此方法,最后得到一个足够精度的(x+a/x)/2的值。 如:计算sqrt(5) 设初值为2 1)sqrt(5)=(2+5/2)/2=2.25 2)sqrt(5)=(2.25+5/2.25)/2=2.236111 3)sqrt(5)=(2.236111+5/2.236111)/2=2.236068 这三步所得的结果和sqrt(5)相差已经小于0.001 或者可以用二分法: 设f(x)=x^2-a 那么sqrt(a)就是f(x)=0的根。 你可以先找两个正值m,n使f(m)<0,f(n)>0 根据函数的单调性,sqrt(a)就在区间(m,n)间。 然后计算(m+n)/2,计算f((m+n)/2),如果它大于零,那么sqrt(a)就在区间(m,(m+n)/2)之间。 小于零,就在((m+n)/2,n)之间,如果等于零,那么(m+n)/2当然就是sqrt(a)。这样重复几次,你可以把sqrt(a)存在的范围一步步缩小,在最后足够精确的区间内随便取一个值,它就约等于sqrt(a)。

亲,我在尽力帮助你,当然了,错误还是可能出现的,如果你还有其他问题或者关于本题的问题可以继续与我讨论哦,给好评哦,谢谢

Ⅱ 平方根倒数速算法的介绍

平方根倒数速算法是适用于快速计算(积的平方根的倒数,在此需取符合IEEE 754标准格式的32位浮点数)的一种算法。平方根倒数速算法(英语:Fast Inverse Square Root,亦常以“Fast InvSqrt()”或其使用的十六进制常数0x5f3759df代称)是用于快速计算(积的平方根的倒数,在此需取符合IEEE 754标准格式的32位浮点数)的一种算法。此算法最早可能是于90年代前期由SGI所发明,后来则于1999年在《雷神之锤III竞技场》的源代码中应用,但直到2002-2003年间才在Usenet一类的公共论坛上出现。这一算法的优势在于减少了求平方根倒数时浮点运算操作带来的巨大的运算耗费,而在计算机图形学领域,若要求取照明和投影的波动角度与反射效果,就常需计算平方根倒数。此算法首先接收一个32位带符浮点数,然后将之作为一个32位整数看待,以将其向右进行一次逻辑移位的方式将之取半,并用十六进制“魔术数字”0x5f3759df减之,如此即可得对输入的浮点数的平方根倒数的首次近似值;而后重新将其作为浮点数,以牛顿法反复迭代,以求出更精确的近似值,直至求出符合精确度要求的近似值。在计算浮点数的平方根倒数的同一精度的近似值时,此算法比直接使用浮点数除法要快四倍。

Ⅲ 平方根的计算方法

67081的平方根=259

算法1:
假设被开放数为a,如果用sqrt(a)表示根号a 那么((sqrt(x)-sqrt(a/x))^2=0的根就是sqrt(a)
变形得
sqrt(a)=(x+a/x)/2
所以你只需设置一个约等于(x+a/x)/2的初始值,代入上面公式,可以得到一个更加近似的值,再将它代入,就得到一个更加精确的值……依此方法,最后得到一个足够精度的(x+a/x)/2的值。
如:计算sqrt(5)
设初值为2
1)sqrt(5)=(2+5/2)/2=2.25
2)sqrt(5)=(2.25+5/2.25)/2=2.236111
3)sqrt(5)=(2.236111+5/2.236111)/2=2.236068
这三步所得的结果和sqrt(5)相差已经小于0.001

或者可以用二分法:
设f(x)=x^2-a
那么sqrt(a)就是f(x)=0的根。
你可以先找两个正值m,n使f(m)<0,f(n)>0
根据函数的单调性,sqrt(a)就在区间(m,n)间。
然后计算(m+n)/2,计算f((m+n)/2),如果它大于零,那么sqrt(a)就在区间(m,(m+n)/2)之间。
小于零,就在((m+n)/2,n)之间,如果等于零,那么(m+n)/2当然就是sqrt(a)。这样重复几次,你可以把sqrt(a)存在的范围一步步缩小,在最后足够精确的区间内随便取一个值,它就约等于sqrt(a)。

Ⅳ 如何快速计算平方根

比如136161这个数字,首先找到一个和136161的平方根比较接近的数,任选一个,比方说300到400间的任何一个数,这里选350,作为代表。

先计算0.5(350+136161/350),结果为369.5。然后再计算0.5(369.5+136161/369.5)得到369.0003,可以发现369.5和369.0003相差无几,并且369²末尾数字为1。断定369²=136161。

一般来说,能够开方开的尽的,用上述方法算一两次基本结果就出来了。再举个例子:计算

(4)平方根速算法扩展阅读

1、因为每次补数需要补两位,所以被开方数不只一个数位时,要保证补数不能夹着小数点。例如三位数,必须单独用百位进行运算,补数时补上十位和个位的数。

2、每一个过渡数都是由上一个过渡数变化而后,上一个过渡数的个位数乘以2,如果需要进位,则往前面进1,然后个位升十位。以此类推,而个位上补上新的运算数字。

简单地讲,过渡数27,是第一次商的1乘以20,把个位上的0用第二次商的7来换,过渡数343是前两次商的17乘以20=340。

其中个位0用第三次商的3来换,第三个过渡数3462是前三次商173乘以20=3460,把个位0用第四次的商2来换,依次类推。

3、误差值的作用。如果要求精确到更高的小数数位,可以按规则,对误差值继续进行运算。

Ⅳ 平方根倒数速算法的算法的切入点

浮点数的平方根倒数常用于计算正规化矢量。 3D图形程序需要使用正规化矢量来实现光照和投影效果,因此每秒都需做上百万次平方根倒数运算,而在处理坐标转换与光源的专用硬件设备出现前,这些计算都由软件完成,计算速度亦相当之慢;在1990年代这段代码开发出来之时,多数浮点数操作的速度更是远远滞后于整数操作,因而针对正规化矢量算法的优化就显得尤为重要。下面陈述计算正规化矢量的原理:
要将一个矢量标准化,就必须计算其欧几里得范数以求得矢量长度,而这时就需对矢量的各分量的平方和求平方根;而当求取到其长度并以之除该矢量的每个分量后,所得的新矢量就是与原矢量同向的单位矢量,若以公式表示: 可求得矢量v的欧几里得范数,此算法正类如对欧几里得空间的两点求取其欧几里得距离, 而求得的就是标准化的矢量,若以代表,则有, 可见标准化矢量时需要用到对矢量分量的平方根倒数计算,所以对平方根倒数计算算法的优化对计算正规化矢量也大有裨益。
为了加速图像处理单元计算,《雷神之锤III竞技场》使用了平方根倒数速算法,而后来采用现场可编程逻辑门阵列的顶点着色器也应用了此算法。

Ⅵ 平方根怎么算

步骤:

1、将被开方数的整数部分从个位起向左每隔两位划为一段,用撇号分开,分成几段,表示所求平方根是几位数;

2、根据左边第一段里的数,求得平方根的最高位上的数;

3、从第一段的数减去最高位上数的平方,在它们的差的右边写上第二段数组成第一个余数;

4、把求得的最高位数乘以2去试除第一个余数,所得的最大整数作为试商;

5、用商的最高位数的2倍加上这个试商再乘以试商.如果所得的积小于或等于余数,试商就是平方根的第二位数;如果所得的积大于余数,就把试商减小再试。

注:一个正数如果有平方根,那么必定有两个,它们互为相反数。显然,如果知道了这两个平方根的一个,那么就可以及时的根据相反数的概念得到它的另一个平方根。

负数在实数系内不能开平方。只有在复数系内,负数才可以开平方。负数的平方根为一对共轭纯虚数。

例如:-1的平方根为±i,-9的平方根为±3i,其中i为虚数单位。

例如,A=5,,即求

5介于1的3次方;至2的3次方;之间(1的3次方=1,2的3次方=8)

初始值X0可以取1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,都可以。例如我们取X0 = 1.9按照公式:

第一步:X1=1.9+(5/1.9^2;-1.9)1/3=1.7。

即5/1.9×1.9=1.3850416,1.3850416-1.9=-0.5149584,-0.5149584×1/3=-0.1716528,1.9+(-0.1716528)=1.7。即取2位数值,,即1.7。

第二步:X2=1.7+(5/1.7^2;-1.7)1/3=1.71。

即5/1.7×1.7=1.73010,1.73-1.7=0.03,0.03×1/3=0.01,1.7+0.01=1.71。取3位数,比前面多取一位数。

第三步:X3=1.71+(5/1.71^2;-1.71)1/3=1.709.

第四步:X4=1.709+(5/1.709^2;-1.709)1/3=1.7099

这种方法可以自动调节,第一步与第三步取值偏大,但是计算出来以后输出值会自动转小;第二步,第四步输入值

偏小,输出值自动转大。即5=1.7099^3;

当然初始值X0也可以取1.1,1.2,1.3,。。。1.8,1.9中的任何一个,都是X1 = 1.7 > 。当然,我们在实际中初始值最好采用中间值,即1.5。 1.5+(5/1.5&sup2;-1.5)1/3=1.7。

Ⅶ 平方根怎么计算

一般学习中数学考试的开方数一般都是整数的平法...非整数根的开方数不会出现在高考以及高考之前的考试中,
整数根的开方数就不说了
计算非整数根的开方数也有很多种类方法...建议直接看第二种,第一种就是爆破...(暴力破解)我更倾向于爆破...因为不用记那么多内容,而且我也不经常去计算这些数
一:
最简单的就是式商,,也就是说大概估算一下这个数的结果,需要非常了解100以内的数的平法值(可以很快计算10000以内的数的开方)比如开方40,根据平时的经验平方数是在6~7之间(6*6=36
7*7=49)并且更接近于6,那么就设定值为6.5
,6.5*6.5
=
42.25大于40---则设定为6.3
,6.3*6.3
=
39.69
---则设定6.35,6.35*6.35
=
40.3225
---则设定6.32

,6.32*6.32
=
39.9424这个数已经很接近40了,可以使用.....
二:
述求平方根的方法,称为笔算开平方法,用这个方法可以求出任何正数的算术平方根,它的计算步骤如下:
1.将被开方数的整数部分从个位起向左每隔两位划为一段,用撇号分开(竖式中的11'56),分成几段,表示所求平方根是几位数;
2.根据左边第一段里的数,求得平方根的最高位上的数(竖式中的3);
3.从第一段的数减去最高位上数的平方,在它们的差的右边写上第二段数组成第一个余数(竖式中的256);
4.把求得的最高位数乘以20去试除第一个余数,所得的最大整数作为试商(3×20除
256,所得的最大整数是
4,即试商是4);
5.用商的最高位数的20倍加上这个试商再乘以试商.如果所得的积小于或等于余数,试商就是平方根的第二位数;如果所得的积大于余数,就把试商减小再试(竖式中(20×3+4)×4=256,说明试商4就是平方根的第二位数);
6.用同样的方法,继续求平方根的其他各位上的数.

Ⅷ 平方根倒数速算法的注释

由于现代计算机系统对长整型的定义有所差异,使用长整型会降低此段代码的可移植性。具体来说,由此段浮点转换为长整型的定义可知,如若这段代码正常运行,所在系统的长整型长度应为4字节(32位),否则重新转为浮点数时可能会变成负数;而由于C99标准的广泛应用,在现今多数64位计算机系统(除使用LLP64数据模型的Windows外)中,长整型的长度都是8字节。 此处“浮点数”所指为标准化浮点数,也即有效数字部分必须满足,可参见David Goldberg. What Every Computer Scientist Should Know About Floating-Point Arithmetic. ACM Computing Surveys. 1991.March, 23 (1): 5–48. doi:10.1145/103162.103163. Lomont 2003确定R的方式则有所不同,他先将R分解为与,其中与分别代表R的有效数字域和指数域。

Ⅸ 快速算平方根的技巧

比较小的数用二分法,大数用以下方法:
述求平方根的方法,称为笔算开平方法,用这个方法可以求出任何正数的算术平方根,它的计算步骤如下:
1.将被开方数的整数部分从个位起向左每隔两位划为一段,用撇号分开(竖式中的11'56),分成几段,表示所求平方根是几位数;
2.根据左边第一段里的数,求得平方根的最高位上的数(竖式中的3);
3.从第一段的数减去最高位上数的平方,在它们的差的右边写上第二段数组成第一个余数(竖式中的256);
4.把求得的最高位数乘以20去试除第一个余数,所得的最大整数作为试商(3×20除 256,所得的最大整数是 4,即试商是4);
5.用商的最高位数的20倍加上这个试商再乘以试商.如果所得的积小于或等于余数,试商就是平方根的第二位数;如果所得的积大于余数,就把试商减小再试(竖式中(20×3+4)×4=256,说明试商4就是平方根的第二位数);
6.用同样的方法,继续求平方根的其他各位上的数.
一般学生用不着学这个,大部分习题求的平方根都是整数,常用数,需要识记的,学生应当可以适当识记一些常用数的平方根

Ⅹ 怎样速算平方根

假设被开放数为a,如果用sqrt(a)表示根号a 那么((sqrt(x)-sqrt(a/x))^2=0的根就是sqrt(a)
变形得
sqrt(a)=(x+a/x)/2
所以你只需设置一个约等于(x+a/x)/2的初始值,代入上面公式,可以得到一个更加近似的值,再将它代入,就得到一个更加精确的值……依此方法,最后得到一个足够精度的(x+a/x)/2的值。
如:计算sqrt(5)
设初值为2
1)sqrt(5)=(2+5/2)/2=2.25
2)sqrt(5)=(2.25+5/2.25)/2=2.236111
3)sqrt(5)=(2.236111+5/2.236111)/2=2.236068
这三步所得的结果和sqrt(5)相差已经小于0.001

或者可以用二分法:
设f(x)=x^2-a
那么sqrt(a)就是f(x)=0的根。
你可以先找两个正值m,n使f(m)<0,f(n)>0
根据函数的单调性,sqrt(a)就在区间(m,n)间。
然后计算(m+n)/2,计算f((m+n)/2),如果它大于零,那么sqrt(a)就在区间(m,(m+n)/2)之间。
小于零,就在((m+n)/2,n)之间,如果等于零,那么(m+n)/2当然就是sqrt(a)。这样重复几次,你可以把sqrt(a)存在的范围一步步缩小,在最后足够精确的区间内随便取一个值,它就约等于sqrt(a)。

阅读全文

与平方根速算法相关的资料

热点内容
如何在app上架自己的游戏 浏览:457
安卓系统车载导航支持什么格式u盘 浏览:624
天翼云服务器怎么打开端口 浏览:907
如何启用对服务器远程的访问 浏览:774
程序员环境分析 浏览:812
tsp算法是数据挖掘算法吗 浏览:672
编译原理好处 浏览:820
怎么买服务器主机 浏览:176
什么app可以存档游戏 浏览:430
那里有螺杆压缩机修理 浏览:31
什么电脑软件检测安卓机 浏览:728
c语言编译没问题组件有错误 浏览:513
迅捷pdf编辑器破解版下载 浏览:14
电火花线切割怎么编程 浏览:777
linux查看驱动命令 浏览:998
苏州车辆解压代办大概多少钱 浏览:593
租房app什么比较靠谱 浏览:678
运动app如何测量运动心率 浏览:783
苹果手机文件夹图标背景图透明度 浏览:735
辽宁省解压旅游 浏览:273