Board logo

标题: [数值计算] 批处理计算圆周率任意位 [打印本页]

作者: plp626    时间: 2009-2-22 21:50     标题: 批处理计算圆周率任意位

本帖最后由 plp626 于 2014-5-16 23:11 编辑

直接双击:默认计算100位,
命令行下:第一个参数(正整数)为计算圆周率的位数

  1. @echo off&title 计算圆周率 by plp626
  2. setlocal enabledelayedexpansion
  3. if %1.==. (set c=100) else set/a c=%1
  4. set/a c=(c*100/3)+70,cc=c/10,n=cc
  5. for /l %%a in (1 1 %cc%)do set/a f_%%a=2000
  6. for /l %%a in (%c% -132 100)do (set/a n=%%a/10,m=2*n-1
  7.    set/a "d=f_!n!*10000,f_!n!=d%%m,d=d/m,n-=1"
  8.    for /l %%b in (!n! -1 1)do (set/a n=%%b,m=2*n-1
  9.       set/a "d=d*n+f_!n!*10000,f_!n!=d%%m,d=d/m,n-=1"
  10.    )
  11.    set/a "an=e+d/10000,e=d%%10000"
  12.    if !an! lss 1000 set an=000!an!
  13.    set/p=!an:~-4!<nul
  14. )
  15. echo\&echo/&set/p=数学爱好者加我QQ:275928264,验证号:plp626
复制代码


所用公式:
pi=2*1+2*1!/3!!+2*2!/5!!+2*3!/7!!+...+2*k!/(2*k+1)!!+...


作者: yslyxqysl    时间: 2009-2-22 21:56

最后少了个<nul&pause.

[ 本帖最后由 yslyxqysl 于 2009-2-22 21:58 编辑 ]
作者: plp626    时间: 2009-2-22 22:00     标题: 回复 2楼 的帖子

no,no,no
不需要....
作者: lockmove    时间: 2009-2-22 22:39

有 set/p=  就停了吧.
pi=2*1+2*1!/3!!+2*2!/5!!+2*3!/7!!+...+2*k!/(2*k+1)!!+...

这公式在后面越来越慢,计算也有限,不过挺好了.
作者: batman    时间: 2009-2-23 08:17

plp626,兄弟,我们有好久没见了,我是cn-dos的ZW750516,你能来到我们论坛,我真是太高兴了。。。
作者: plp626    时间: 2009-2-23 17:01

zw兄,还记得俺,感觉很亲切,其实我早来这里了,只是没时间上网罢了,
作者: BBCC    时间: 2009-2-23 18:47

昨晚正想问你公式是啥的...
之前见est用python写过一个,好像速度更快...
作者: Batcher    时间: 2009-2-23 19:57     标题: 回复 7楼 的帖子

python的优势之一是它的数据类型可以存放N大的数据^_^
作者: zqz0012005    时间: 2009-2-24 18:16

plp626这个“老古董”居然重新冒出来了。
作者: 523066680    时间: 2009-2-26 16:59

核潜水艇浮起来拉 ~
话说这里成为迎宾大道了  欢迎~
作者: plp626    时间: 2011-4-25 11:34

一楼代码有一处笔误,导致后面精度有所丢失,两年多了,今儿才发现,现在已改正过来。
作者: CrLf    时间: 2011-4-25 13:03

这个牛,顶一下古董兄
作者: zz100001    时间: 2011-4-25 14:25

为什么叫“古董兄”?
作者: ▄︻┻═┳一    时间: 2011-4-25 14:28

13# zz100001


你看他的注册日期就明白了。
作者: applba    时间: 2011-4-25 15:19

关键是效率……
作者: Batcher    时间: 2011-4-25 18:07

15# applba


你觉得效率高了还是低了?
如果低了,能否提供一个更高的让大家学习一下?
作者: applba    时间: 2011-4-28 02:38

有公式什么都好说
作者: garyng    时间: 2011-8-10 16:03

牛!!批量处理竟然能实现圆周率的计算。
我发现到:
这批处理的显示速度越来越快呢!
31415926535897932384626433832795028841971693993751058209749445923078164062862089
作者: cjiabing    时间: 2012-1-9 16:38

本帖最后由 cjiabing 于 2012-1-9 17:17 编辑

http://bbs.emath.ac.cn/thread-3139-1-1.html
[讨论] 一个计算圆周率任意精度的spigot算法研究
本文转自:数学研发论坛(bbs.emath.ac.cn)
高人跑得好远!~
今天好奇研究了一会,想弄个位数更高的做点事情。
  1. 3.141 5926 5358 9793 2384 6264 3383 2795 0288 4197 1693 9937 5105 8209 7494 4592 3078 1640 6286 2089 9862 8034 8253 4211 7067 9821
复制代码

对照最后两位有点出入。——可能四舍五入了,哈哈!
有200时确实慢,不过是批处理的问题了,呵呵,佩服~!
作者: emenyi    时间: 2016-3-16 15:45

本帖最后由 emenyi 于 2016-3-16 15:49 编辑

测试了一下,以下为CMD手动输入圆周率位数(分别从1到50)所得出的计算值:
3140 \\这里最后一位为0 跟下面的数值1不相符 如果按4舍5入来算 这里应该为2 程序为每4位为一组输出 不知是否应为该原因造成的 请楼主解答 谢谢!
3141 \\这里最后一位为1
3141
3141
31415925
31415926
31415926
31415926
314159265358
314159265358
314159265358
314159265358
3141592653589792
3141592653589793
3141592653589793
3141592653589793
31415926535897932384
31415926535897932384
31415926535897932384
31415926535897932384
314159265358979323846264
314159265358979323846264
314159265358979323846264
314159265358979323846264
3141592653589793238462643382
3141592653589793238462643383
3141592653589793238462643383
3141592653589793238462643383
31415926535897932384626433832794
31415926535897932384626433832795
31415926535897932384626433832795
31415926535897932384626433832795
314159265358979323846264338327950288
314159265358979323846264338327950288
314159265358979323846264338327950288
314159265358979323846264338327950288
3141592653589793238462643383279502884196
3141592653589793238462643383279502884197
3141592653589793238462643383279502884197
3141592653589793238462643383279502884197
31415926535897932384626433832795028841971693
31415926535897932384626433832795028841971693
31415926535897932384626433832795028841971693
31415926535897932384626433832795028841971693
314159265358979323846264338327950288419716939937
314159265358979323846264338327950288419716939937
314159265358979323846264338327950288419716939937
314159265358979323846264338327950288419716939937
3141592653589793238462643383279502884197169399375105
3141592653589793238462643383279502884197169399375105

当程序每增加一组输出数据 每组数的第一个数值 和最初出现的问题一样 但也有没出错的 可否从多个数学方法给出参考?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2