给你介绍个连分数法,这个是最巧妙的了
*********是为了占位,不然格式是乱的
√2
=1+(√2-1)
*********1
****= 1+ -------
********√2+1
**********1
****= 1+ -----------
*********2+ √2-1
**********1
****= 1+ -----------
*************1
*********2+ --------
************√2+1
注意到又出现了
*************1
***********-------
***********√2+1
所以后面都是重复的
所以
****************1
****= 1+ ------------------------
****************1
**********2+ -------------------
********************1
***************2+ -------------
*********************2+....
即不断把一个数字写成其整数部分和小数部分之和
再把小数部分写成其倒数的倒数
可以无限做下去
这个数可记为[1,2,2,2,2,2。。。。]
你要精确到多少位只需根据需要取多少个2代入连分式来近似就行啦
可以证明这是逼近的最快方法
以1745为例:
从个位起,1745有4位数,所以开始只看16
去满足x×x≤17的x的最大值
得到x=4,余数为1
将剩下的2位移下来
得到3位数145
根据前面得到的x=4
求(x×20+y)×y≤145
得到y=1,余数为64
此时整数部分结束
接下来算小数,点小数点
同样的道理
余数后补2个0,得到6400
求满足(xy×20+z)×z≤6400的z的最大值
即满足(41×20+z)×z≤6400的z的最大值
得到z=7,余数为611
.............
之后的依次类推
得到所要求的开平方的位数再多一位
以四舍五入
用泰勒公式:
或者先设定一个函数:y=x^0.5.
(1+a)^h≈1+ah(当a非常趋于0的时候)
所以呢,2^0.5,就等于1\7(100-2)^0.5=10\7[1+(-1/50)]^0.5
≈10\7[1+(-1/50)*0.5]=99/70
这个结果与根号2已经差得很少了,你可现把换成其他的代换方法,使a尽量的接近0,这样不用计算机也能算出一个精确度很高的数.
或者可以用牛顿迭代法,这个这儿就不说了。
两个方法:
1最原始编制平方表的时候是用比较法(课本上讲过)
先试1.4平方,1.5平方,然后再试出第二位小数应该在哪两个之间。。。。。以此类推
2手算开平方:
移步:
http://zhidao.baidu.com/question/15427985.html
可以使用渐进分数
或者你怎么想
1.4*1.4<2<1.5*1.5
1.41*1.41<2<1.42*1.42
这样一点点推算出来
渐进分数看这里
http://baike.baidu.com/view/1037558.htm