c语言天书__圆周率的计算及分析

c语言天书__圆周率的计算及分析

ID:5644778

大小:33.00 KB

页数:5页

时间:2017-12-21

c语言天书__圆周率的计算及分析_第1页
c语言天书__圆周率的计算及分析_第2页
c语言天书__圆周率的计算及分析_第3页
c语言天书__圆周率的计算及分析_第4页
c语言天书__圆周率的计算及分析_第5页
资源描述:

《c语言天书__圆周率的计算及分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、求圆周率π的C程序分析longa=10000,b,c=2800,d,e,f[2801],g;main(){for(;b-c;)f[b++]=a/5;for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);scanf("%s");}简短的4行代码,就可以精确计算机出800位的PI(圆周率)值。实在太震撼人心了。这样的程序也能运行,竟然还能能完成这样让人难以置信的任务,真是

2、太神了。一、源程序本文分析下面这个很流行的计算PI的小程序。下面这个程序初看起来似乎摸不到头脑,不过不用担心,当你读完本文的时候就能够基本读懂它了。程序一:很牛的计算Pi的程序#includeinta=10000,b,c=2800,d,e,f[2801],g;main(){for(;b-c;)   f[b++]=a/5;for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)   for(b=c;d+=f[b]*a,f[b]=d%--g,d/

3、=g--,--b;d*=b);}二、数学公式数学家们研究了数不清的方法来计算PI,这个程序所用的公式如下:pi=2+ 1/3*(2+ 2/5*(2+ 3/7*(2+... (2+ k/2k+1*(2+...))...)))至于这个公式为什么能够计算出PI,已经超出了本文的能力范围。下面要做的事情就是要分析清楚程序是如何实现这个公式的。我们先来验证一下这个公式:程序二:Pi公式验证程序#includevoidmain(){  floatpi=2;  int i;  for(i=100

4、;i>=1;i--)     pi=pi*(float)i/(2*i+1)+2;  printf("%f",pi);  getchar();}上面这个程序的结果是3.141593。三、程序展开在正式分析程序之前,我们需要对程序一进行一下展开。我们可以看出程序一都是使用for循环来完成计算的,这样做虽然可以使得程序短小,但是却很难读懂。根据for循环的运行顺序,我们可以把它展开为如下while循环的程序:程序三:for转换为while之后的程序#includeinta=10000

5、,b,c=2800,d,e,f[2801],g;main(){inti;for(i=0;i

6、g--;               b--;               if(b==0)break;               d=d*b;           }        c=c-14;        printf("%.4d",e+d/a);        e=d%a;   }}注:for([1];[2];[3]){[4];}的运行顺序是[1],[2],[4],[3]。如果有逗号操作符,例如:d=0,g=c*2,则先运行d=0,然后运行g=c*2,并且最终的结果是最后一个表达式的值,

7、也就是这里的c*2。下面我们就针对展开后的程序来分析。四、程序分析要想计算出无限精度的PI,我们需要上述的迭代公式运行无数次,并且其中每个分数也是完全精确的,这在计算机中自然是无法实现的。那么基本实现思想就是迭代足够多次,并且每个分数也足够精确,这样就能够计算出PI的前n位来。上面这个程序计算800位,迭代公式一共迭代2800次。inta=10000,b,c=2800,d,e,f[2801],g;这句话中的2800就是迭代次数。由于float或者double的精度远远不够,因此程序中使用整数类型(实

8、际是长整型),分段运算(每次计算4位)。我们可以看到输出语句printf("%.4d",e+d/a);其中%.4就是把计算出来的4位输出,我们看到c每次减少14(c=c-14;),而c的初始大小为2800,因此一共就分了200段运算,并且每次输出4位,所以一共输出了800位。由于使用整型数运算,因此有必要乘上一个系数,在这个程序中系数为1000,也就是说,公式如下:1000*pi=2K+1/3*(2K+2/5*(2K+3/7*(2K+...(2K+k/2k+1*(2K

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。