c语言程序设计 随机数法圆周率,多种解法计算圆周率

多种解法计算圆周率

课程设计报告学院、系吉林大学珠海学院计算机科学与技术系专业名称软件工程课程设计科目C语言程序课程设计所在班级学生学号学生姓名指导教师曾志平完成时间2012年3月5月题目多种解法计算圆周率一、设计任务与目标此问题求圆周率在之前所学的C语言中已经接触过,但是算法单一,采用级数,而且收敛较慢,故运行时间较长,此程序设计要解决的问题是如何实现高精度的运算,如何对结果进行输出,并且尝试采用不同的方法进行求解圆周率。本次上机实践所使用的平台和相关软件。平台WINDOWS7相关软件VC60二、方案设计与论证随机数法求圆周率可以利用计算机中随机数函数模拟出两个01之间的浮点型点(X,Y,建立直角坐标系思想,利用边长为1的正方形内切半径为05圆的方程X05X05Y05Y05INCLUDEINCLUDEINCLUDEDEFINEN5000VOIDMAINVOIDJISHUVOIDNEIJIEVOIDSUIJIVOIDWAIQIESUIJIPRINTF“N“NEIJIEPRINTF“N“JISHUPRINTF“N“WAIQIEPRINTF“N“VOIDSUIJIDOUBLEX,YINTA0,B0SRANDTIME0WHILEA100BREAKFORI0I1BC2B1//首先用除法计算1/2N1的高精度商FORI0I0I//计算N/2N1的高精度值AIAIBJ//数组模拟手工乘法,每个数组乘以NJAI/10//如果満十则对前面数组进1AIAI10//而该数组取个位A0A01//计算1N/2N1的高精度值XA0FORJ0,I101I0IAIAI2JJAI/10AIAI10//因为公式左边还有个1/2,对结果整体乘以二,模拟手工乘法PRINTF“用级数方法求得D“,A0//控制格式并输出结果FORE0,I1I100IPRINTF“D“,AIEIFE300PRINTF“N“PRINTF“N“五、程序运行结果测试与分析由输出结果可以看出,随机数法求得圆周率浮动较大,也许是N值设为5000还过于小造成结果误差大,然后把N值设为50000后继续测试如下当N值为50000时,测试结果较为接近圆周率且比较数值浮动较小,其余小问测试结果基本接近真实圆周率的值,基本完成程序设计目标。六、结论与心得1设计中遇到的问题及解决过程在设计过程中遇到第三小问需要保存100位圆周率的时候,和同学讨论后才明白结果可以用数组保存并输出,附加小问时圆外切正多边形时刚来采用的是DSQRT10BB/41;B2SQRTBB42/B,后来发现误差很大,改用公式B2BB/4DD/B才能够接近,思考后发现B2BB/4DD/B(误差较小)将D代入,得B2BB/4SQRTBB/411SQRTBB/411/B(就这样写误差还是比较小的,几乎跟内切法的精度一样),再化简得B2BB/4BB/4112SQRTBB/41/B这个时候误差就大了,I只有49152,再化简B22SQRTBB/412/B即B2SQRTBB42/B误差依然比较大,所以断定DD为误差所在。我的理解无论如何,B,D等这些值是一定有偏差的,B2BB/4DD/B2B/2DB/2D/B,由于D进行了开根处理,误差微乎其微,几乎可以忽略不计,即可以当他们是常数,这个式子的误差级别YAXBA,B为常量,B2SQRTBB42/B的误差级别YA/XBA,B为常量,X在(0,1区间显然后者的误差比较大);调试程序的时候会遇到小错误,但经过反复修改后程序能够运行。2设计体会和收获。此次程序设计明白了对数据类型及其精度的重要性,有些科学研究需要高精度的数据,同时明白通向解决问题的道路是多种多样的,我们应当用不同方向和方法去解决问题。在我们解决不了问题的时候,要尝试着去分析问题回归问题的最基本。七、参考资料1WWWBAIDUCOM,百度百科(祖冲之迭代法)2杨克昌编著,计算机程序设计典型例题精解,国防科技大学大学出版社,1999年3月,第297299页)八、致谢致谢曾志平老师对程序提出的改进和思路;课程设计成绩评定表对课程设计工作过程的简短介绍和自我评价学生签名2012年4月11日(以下由评定小组教师填写)质量评价指标(在相应栏目打)评价项目评价质量优秀良好中等及格不及格工作量和态度实验、计算可靠性文字和图表质量总体评价评定成绩(百分制)评定小组成员签名2012年月日制定人王钲旋,单缅审定人陈守孔

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值