迭代法与开方求值
来源:互联网 发布:知彼手机定位苹果 编辑:程序博客网 时间:2024/05/24 04:43
迭代法与计算机求解开方运算密切相关,在计算机中如何开方?我们先了解一下计算机如何做加减乘除。
加法和减法运算在计算机中是最简单的,硬件上可以通过全加器来实现,具体细节不再展开。那么,计算机如何做乘除运算呢。
1.乘法
由于计算机中,所有数值都是用2的N次方来表示的:2^n0+2^n1+2^n2+2^n3+2^n4.....
因此x*y,(x)*(2^n0+2^n1+2^n2+2^n3+2^n4)=(x*2^n0)+(x*2^n1)+(x*2^n2)+(x*2^n3)+(x*2^n4)+......即(x左移n0)+(x左移n1)+(x左移n2)+(x左移n3)+(x左移n4)+......
用15(x)*13(y)来举例,15*13 为1111*1101
a.首先y的最低位为1(2^0),x左移0位得到1111
b.然后y的最低第二位为0,没有2^1存在,因此本次无运算(结果可以看作为0)
c.然后y的最低第三位为1(2^2),x左移2位得到111100
d.然后y的最低第四位为1(2^3),x左移3位得到1111000
e.把a、b、c、d的结果相加1111+0+111100+1111000=11000011(195),该结果就是乘法的结果
特别的,x*y中,如果y是2的N次方,因此相当于x右移N位。
2.除法(加减交替法)
x/y其实就是,x不断减y的过程。小学时候学的长长除法就是这个原理。
用二进制的除法x/y,比十进制容易写,商不是0即是1,而且如果除数大于除数的1倍,商就是标记在另一个位上面了
二进制除法x/y=0.1001/0.1011手工计算如下
0.1001/0.1001
设ri表示第i次运算后所得的余数,则:
若ri>0,则商1,余数和商左移1位,再减去除数,即ri+1=2ri-y
若ri<0,则商0,余数和商左移1位,再加上除数,即ri+1=2ri+y
用85/6来举例,85/6=1010101/110
a.101(0101)左移1位到第3位都小于110,因此商=000
b.1010(101)左移四位是1010,比110大,商=0001,余数=1010-110=100(101)
c.余数100(101)左移一位是1001,比110大,商=00011,余数=1001-110=11(01)
d.余数11(01)左移一位是110,等于110,商=000111,余数=0(1)
e.余数0(1)左移一位是01,小于110,商=0001110,余数=01
因此85/6=1010101/110=0001110,即14,余数为最后的余数1
由此可见,计算机做乘法运算更加简单,它只需要移位相加即可,但除法运算就稍微复杂。那么,它如何进行开方运算呢?
答案是:算法。即通过算法将复杂的开方运算变为简单的乘除运算。
具体的做法如下:
- 为了计算数字S的平方根,从选择一个任意的猜测值g开始。一种可能就是将g设为S,尽管也可以选择任何其他的整数值。
- 如果猜测值g足够接近正确的平方根,算法结束,函数将g作为结果返回。
- 如果g不够精确,用g和S/g的平均值作为新的猜测值。因为这两个值中的一个小于确切的平方根,另一个则大于确切的平均值, 选择平均值会使你得到一个更接近正确答案的值。
- 把新的猜测值存入变量g,从第二步开始重复过程、
计算公式如下:
- 迭代法与开方求值
- 迭代法实现开方运算
- 牛顿迭代法求开方
- 牛顿迭代法求高精度开方
- 牛顿迭代法求开方值
- 牛顿迭代法求高精度开方
- java 实现 牛顿迭代法求开方
- 通俗易懂地讲解牛顿迭代法求开方
- leetcode:Sqrt(x) 牛顿迭代法求整数开方
- 开方
- 开方
- Jacobi迭代法与Gauss-Seidel迭代法
- Jacobi迭代法与Gauss-Seidel迭代法
- 开方与常数0x5f3759df
- 数值精度------开方与平方
- leetcode 69. Sqrt(x)(C语言,牛顿迭代法求开方问题)46
- Logistic回归与牛顿迭代法
- 多项式求逆 与 多项式开方
- Kaggle方案简介 | Understanding the Amazon from Space: 1st place
- python使用MFC创建窗口
- 思考力|《零秒思考》
- Bootstrap Search Suggest与php边输入边查询
- 机器学习算法与Python实践(4)
- 迭代法与开方求值
- Python使用Windows API创建窗口
- ImageLoder
- Python创建对话框
- python处理按钮消息
- 贝塞尔曲线扫盲
- 未处理NullReferenceException--未将对象引用设置到对象的实例
- JAVAWEB第二天 JS函数与变量
- python向对话框中添加控件