TC官方合作论坛

 找回密码
 立即注册
查看: 2708|回复: 8

[已解决] 请教高手:开n次方的算法

[复制链接]
发表于 2014-2-17 16:58:34 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我只知道笔算的开n次方算法,但计算时数位太多(超出双精度的表示范围),程序处理非常不便,请高手指点。
回复

使用道具 举报

发表于 2014-2-17 23:39:44 | 显示全部楼层

  1. 功能 求N次方根(被开方数,根指数)
  2. 计算结果=1,N次方根=0   
  3. 循环(计算结果!=N次方根)        
  4.     N次方根=计算结果,t=1        
  5.     遍历(i=0;i<根指数-1;i++)
  6.         t=t*N次方根
  7.     遍历结束               
  8.     计算结果=字符串.左侧(N次方根+(被开方数/t-N次方根)/根指数,16)
  9. 循环结束
  10. 返回 N次方根
  11. 功能结束
复制代码
回复 支持 反对

使用道具 举报

发表于 2014-2-17 17:18:51 | 显示全部楼层
遍历 + 开方 能否实现?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-17 19:21:45 | 显示全部楼层
小西 发表于 2014-2-17 17:18
遍历 + 开方 能否实现?

你说的开方是指TC自带的开方功能吗?
那个怎么算开高次方的值?例如123456开31次方的值?
回复 支持 反对

使用道具 举报

发表于 2014-2-17 22:36:43 | 显示全部楼层

网上

本帖最后由 小西 于 2014-2-17 23:31 编辑
贪吃蛇 发表于 2014-2-17 19:21
你说的开方是指TC自带的开方功能吗?
那个怎么算开高次方的值?例如123456开31次方的值? ...

开始想得太简单,
16 的4次方根是 2,可以用16 两次开方得到.
81的4次方根是3,也可以是81两次开方得到.
后来发现,这些只是特例.

网上找了一下资料,有关于这方面的计算,整理了一下.



  1.     被开方数=123456
  2.     根指数=31

  3.     计算结果=1,N次方根=0   
  4.     循环(计算结果!=N次方根)        
  5.         N次方根=计算结果,t=1        
  6.         遍历(i=0;i<根指数-1;i++)
  7.             t=t*N次方根
  8.         遍历结束               
  9.         计算结果=字符串.左侧(N次方根+(被开方数/t-N次方根)/根指数,16)
  10.         辅助.等待(1)
  11.     循环结束

  12.     调试输出(N次方根)


复制代码

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-18 13:14:09 | 显示全部楼层

谢谢小西,原只想要算法的,没想到小西把完整代码都发出来了,而且非常简洁、速度也快,赞!
刚试了一下,参数的取值范围是:被开方数不为0、根指数不小于1。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-19 21:37:21 | 显示全部楼层

这个算法虽然简洁,但使用中发现不足:
1,根指数为小数时精度不高:例如6.25开2.5次方计算结果为1.84201574932019,(系统自动计算器的计算结果是2.081383),正确值应该是2;
2,有时会卡住(因为计算耗时吧):例如计算5.25开2.5次方。

是否还有其它更优的算法,请指点。
回复 支持 反对

使用道具 举报

发表于 2014-2-19 22:10:51 | 显示全部楼层
贪吃蛇 发表于 2014-2-19 21:37
这个算法虽然简洁,但使用中发现不足:
1,根指数为小数时精度不高:例如6.25开2.5次方计算结果为1.84201 ...

这个的原理是根据 网上找的公式
X(n+1)=Xn+(A/Xn^(k-1)-Xn)1/K
得来的,
具体分析见百度百科.
http://baike.baidu.com/link?url= ... LLLzApWSoHg9NoJNpsu
小数位,没有深究.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-19 22:55:50 | 显示全部楼层
小西 发表于 2014-2-19 22:10
这个的原理是根据 网上找的公式
X(n+1)=Xn+(A/Xn^(k-1)-Xn)1/K
得来的,

百度到精度高的算法,但效率太低,不实用。期待好的算法……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-28 21:50 , Processed in 0.052076 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表