明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: cabinsummer

[风之影][Lisp大挑战第一季]圆周率

    [复制链接]
发表于 2011-11-4 21:48:08 | 显示全部楼层
这个。。。书柜里倒还有高数的书,不过。。。一看就想睡觉了!
发表于 2011-11-5 09:22:07 | 显示全部楼层
十几年前就牛玩vb了啊。我那会只想每天少吃个包子。然后存钱买个BB机。

初中毕业的人表示圆周率算不来。
 楼主| 发表于 2011-11-5 19:49:42 | 显示全部楼层
本帖最后由 cabinsummer 于 2011-11-5 20:48 编辑

继续提供思路
求反正切函数
a的反正切d位
  1. (defun arctan(a d / s n p k)
  2.   (setq s (ReverseNumber a d))
  3.   (setq n 1)
  4.   (setq p s)
  5.   (repeat (1+ (fix (/ (* 6 d (log 10))(log (* a a)))))
  6.     (setq p (divide p a))
  7.     (setq p (divide p a))
  8.     (setq k (divide p (1+ (* 2 n))))
  9.     (if (= (rem n 2) 1)
  10.       (setq s (minuslist s k))
  11.       (setq s (addlist s k))
  12.     )
  13.     (setq n (1+ n))
  14.   )
  15.   s
  16. )
发表于 2011-11-5 19:57:36 | 显示全部楼层
大学时候用c语言玩过圆周率 ,  但是不能和大师比啊
 楼主| 发表于 2011-11-5 20:09:04 | 显示全部楼层
最后封顶

计算600位
  1. (setq d 101)
  2. (strcat "3." (tostring (multi (minuslist (multi (arctan 5 d) 4)(arctan 239 d)) 4)))


输出结果
"3.141592 653589 793238 462643 383279 502884 197169 399375 105820 974944 592307 816406 286208 998628 034825 342117 067982 148086 513282 306647 093844 609550 582231 725359 408128 481117 450284 102701 938521 105559 644622 948954 930381 964428 810975 665933 446128 475648 233786 783165 271201 909145 648566 923460 348610 454326 648213 393607 260249 141273 724587 006606 315588 174881 520920 962829 254091 715364 367892 590360 011330 530548 820466 521384 146951 941511 609433 057270 365759 591953 092186 117381 932611 793105 118548 074462 379962 749567 351885 752724 891227 938183 011949 129833 673362 440656 643086 021394 946395 224737 190702 179860 943702 770539 217176 293176 752384 674818 467669 405132 "
 楼主| 发表于 2011-11-5 21:11:12 | 显示全部楼层
本帖最后由 cabinsummer 于 2011-11-5 21:51 编辑
highflybir 发表于 2011-11-1 20:51
测试部分代码见附件:


前800位结果,高飞鸟的程序计算速度是我的2.3倍

我的程序试验结果
200位耗时0.125秒
400位耗时0.641秒
600位耗时1.775秒
800位耗时3.594秒
1000位耗时6.437秒
1200位耗时10.86秒
1400位耗时16.375秒
1600位耗时23.484秒
1800位耗时32.734秒
2000位耗时43.719秒
2200位耗时57.188秒
2400位耗时74.812秒
2600位耗时94.75秒
2800位耗时126.328秒
3000位耗时157.313秒
3200位耗时169.125秒
3400位耗时212.485秒
 楼主| 发表于 2011-11-5 22:40:38 | 显示全部楼层
我那个程序还可以优化。减法计算和除法函数中,有很多数值为0的表项一直在参与计算,可以先计算出有效数字,在计算时剔除前面的0部分可以达到优化效果,有兴趣者可以尝试一下
发表于 2011-11-7 14:14:30 | 显示全部楼层
什么也不说了,膜拜楼主中……
发表于 2011-11-7 14:46:00 | 显示全部楼层
用64位的系统是不是可以更快些?这玩意不好搞
 楼主| 发表于 2011-11-7 15:07:51 来自手机 | 显示全部楼层
linshiyin2 发表于 2011-11-7 14:46 用64位的系统是不是可以更快些?这玩意不好搞

这是肯定的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 15:50 , Processed in 0.166833 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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