魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
楼主: aubell
打印 上一主题 下一主题

有人尝试过手动计算圆周率pi吗? [复制链接]

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

11#
发表于 2011-6-8 12:38:16 |显示全部楼层

回复 26# 的帖子

在半径为 1 的圆里面
假设内接正多形的边数为n, 一边长为 x ,周长就应该是 n * x ;
下一次切割以后,边数会变成2*n ,边长会变成 SQRT( 2- SQRT(4-x*x) ) 的形式,简写
成 f(x),周长是 2*n* f(x)

一直切割下去,周长就可以接近 2*PI 了

[ 本帖最后由 aubell 于 2011-6-8 12:44 编辑 ]

割圆数据.JPG (125.79 KB, 下载次数: 93)

割圆数据.JPG

Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

12#
发表于 2011-6-8 12:57:03 |显示全部楼层

回复25#

算筹
笔和纸
算盘
计算尺
加法机
积分机
计算器
计算机
超级计算机
网络计算,分子计算,量子计算... ...

纯手动定义在笔和纸的地方,算盘也不可以用,但可以用算筹,
从算盘到计算器算做半手动;
从计算机以后算做脑动。

[ 本帖最后由 aubell 于 2011-6-8 12:58 编辑 ]
Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

13#
发表于 2011-6-8 12:59:58 |显示全部楼层
据说日本词汇里面的“自动”,不是指机器自动运行,而是
是人自己动手的意思。自动==手动
Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

14#
发表于 2011-6-9 21:24:31 |显示全部楼层

这一层贴收集到的计算pi的一些程序

这层贴几个程序,计算PI;
包括BBP算法。
向算法的设计者和程序的设计者致敬。

又收集到有人用BrainF**K写的,计算PI的程序,而且可以计算的很远,
放在yapi中,连同一个BrainFK的解释器。

有空了在分析这个程序是怎么写的,牛人太牛了。

[ 本帖最后由 aubell 于 2011-7-18 19:12 编辑 ]

pi.rar

206.53 KB, 下载次数: 28

yapi.rar

2.69 KB, 下载次数: 0

Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

15#
发表于 2011-6-10 00:11:54 |显示全部楼层

回复 31# 的帖子

先给个推导过程。
至于为什么小于3.1415927,这个问题很难。

[ 本帖最后由 aubell 于 2011-6-10 11:52 编辑 ]

split.JPG (100.52 KB, 下载次数: 84)

split.JPG

Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

16#
发表于 2011-6-10 00:19:34 |显示全部楼层

回复 32# 的帖子

据说那是阿基米德的方法;刘徽和祖冲之只用内接圆就可以有上限。
Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

17#
发表于 2011-6-10 12:44:27 |显示全部楼层

笔算开平方的方法

这一层发笔算开平方的方法(非原创)
一、
例 求316.4841的平方根.
第一步,先将被开方的数,从小数点位置向左右每隔两位用逗号,分段,如把数316.4841分段成3,16.48,41.
第二步,找出第一段数字的初商,使初商的平方不超过第一段数字,而初商加1的平方则大于第一段数字,本例中第一段数字为3,初商为1,因为12=1<3,而(1+1)2=4>3.
第三步,用第一段数字减去初商的平方,并移下第二段数字,组成第一余数,在本例中第一余数为216.
第四步,找出试商,使(20×初商+试商)×试商不超过第一余数,而【20×初商+(试商+1)】×(试商+1)则大于第一余数.
第五步,把第一余数减去(20×初商+试商)×试商,并移下第三段数字,组成第二余数,本例中试商为7,第二余数为2748.依此法继续做下去,直到移完所有的段数,若最后余数为零,则开方运算告结束.若余数永远不为零,则只能取某一精度的近似值.
第六步,定小数点位置,平方根小数点位置应与被开方数的小数点位置对齐.本例的算式如下:






二、
也可以用这种算法:
  假设被开放数为a,如果用sqrta)表示根号a 那么(sqrt(x)-sqrt(a/x))^2=0的根就是sqrta
  变形得
  sqrt(a)=x+a/x/2
所以你只需设置一个约等于(x+a/x/2 的初始值,代入上面公式,可以得到一个更加近似的值,再将它代入,就得到一个更加精确的值……依此方法,最后得到一个足够精度的(x+a/x/2的值。
  如:计算sqrt(5)
  设初值为2
  1)sqrt(5)=(2+5/2)/2=2.25
  2)sqrt(5)=(2.25+5/2.25)/2=2.236111
  3)sqrt(5)=(2.236111+5/2.236111)/2=2.236068
  这三步所得的结果和sqrt(5)相差已经小于0.001
(这个就是迭代法了。)




三、
二分法:
  设f(x)=x^2-a
那么sqrt(a)就是f(x)=0的根。
你可以先找两个正值m,n使f(m)<0,f(n)>0
根据函数的单调性,sqrt(a)就在区间(mn)间。
然后计算(mn/2,计算f((mn/2),如果它大于零,那么sqrt(a)就在区间(m,(mn/2)之间。
小于零,就在((mn/2n)之间,如果等于零,那么(mn/2当然就是sqrt(a)。这样重复几次,你可以把sqrt(a)存在的范围一步步缩小,在最后足够精确的区间内随便取一个值,它就约等于sqrt(a)
(这种大概是计算机用的)


[ 本帖最后由 aubell 于 2011-6-10 12:48 编辑 ]

square.gif (7.98 KB, 下载次数: 79)

square.gif

Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

18#
发表于 2011-6-10 12:50:45 |显示全部楼层

回复 33# 的帖子

笔算开平方是不容易的,你想,一层根号下来,小数位数少掉一半;
要算到7位小数的PI,初始的第一个根号3应该算多少位小数呢??
Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

19#
发表于 2011-6-14 20:04:08 |显示全部楼层

回复 54# 的帖子

大概还是要用级数来计算了。
Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

20#
发表于 2011-6-29 22:10:30 |显示全部楼层

回复 57# 的帖子

如果过程中保留18位小数,其实只要计算60项不到就可以得到 3.14159265358979 了。
Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

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

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2024-6-17 14:38

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部