加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

徒手开n次方根的方法:

(2014-02-28 11:41:28)
标签:

it

分类: 技能
(a为高位根,c为(高位值-高位根的n次方)+本位,本位b满足不等式)
原理:设被开方数为X,n次方,设前一步的根的结果为a,现在要试根的下一位,设为b, 


则有:(10*a+b)^n-(10*a)^n<=c(前一步的差与本段合成);b取最大值 
用纯文字描述比较困难,下面用实例说明: 
我们求 2301781.9823406 5次方根: 
1:将被开方的数以小数点为中心,向两边每隔n位分段(下面用'表示);不足部分在两端用0补齐; 
23'01781.98234'06000'00000'00000'.......... 
从高位段向低位段逐段做如下工作: 
初值a=0,c=23(最高段) 
2:b,条件:(10*a+b)^n-(10*a)^n<=c,b^5<=23,且为最大值;显然b=1 
c=23-b^5=22,与下一段合成, 
c=c*10^n+下一段=22*10^5+01781=2201781 
3:a=1(计算机语言赋值语句写作a=10*a+b),找下一个b, 
条件:(10*a+b)^n-(10*a)^n<=c,:(10+b)^5-10^5<=2201781, 
b取最大值8,c=412213,与下一段合成, 
c=c*10^5+下一段=412213*10^5+98234=41221398234 
4:a=18,找下一个b, 
条件:(10*a+b)^n-(10*a)^n<=c,:(180+b)^5-180^5<=41221398234, 
b取最大值7 
说明:这里可使用近似公式估算b的值: 
10*a>>b,(10*a+b)^n-(10*a)^n≈n*(10*a)^(n-1)*b,: 
b≈41221398234/n/(10*a)^(n-1)=41221398234/5/180^4≈7.85,b=7 
以下各步都更加可以使用此近似公式估算b之值 
c=1508808527;与下一段合成, 
c=c*10^5+下一段=1508808527*10^5+06000=150880852706000 
5:a=187,找下一个b, 
条件:(10*a+b)^n-(10*a)^n<=c,: 
(1870+b)^5-1870^5<=150880852706000, 
b取最大值2,c=28335908584368;与下一段合成, 
c=c*10^5+下一段=2833590858436800000 
6:a=1872,找下一个b, 
条件:(10*a+b)^n-(10*a)^n<=c,: 
(18720+b)^5-18720^5<=2833590858436800000, 
b取最大值4,c=376399557145381376;与下一段合成, 
c=c*10^5+下一段=37639955714538137600000 
............................. 
最后结果为:18.724......
=====================

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有