四、调试分析过程(1) 在设计过程中遇到第三小问需要保存100位圆周率的时候,和同学讨论后才明白结果可以用数组保存并输出, 附加小问时圆外切正多边形时刚来采用的是d=sqrt(1.0+b*b/4)-1; b=2*(sqrt(b*b+4)-2)/b,后来发现误差很大,改用公式调试过程出现的问题 及解决方法 b=2*(b*b/4-d*d)/b才能够接近,思考后发现b=2*(b*b/4-d*d)/b(误差较小)将d代入,得b=2*(b*b/4-(sqrt(b*b/4+1)-1)*(sqrt(b*b/4+1)-1))/b;(就这样写误差还是比较小的,几乎跟内切法的精度一样),再化简得b=2*(b*b/4-(b*b/4+1)-1+2*sqrt(b*b/4+1))/b;(这个时候误差就大了,i只有49152),再化简b=2*(2*sqrt(b*b/4+1)-2)/b即b=2*(sqrt(b*b+4)-2)/b(误差依然比较大),所以断定d*d为误差所在。我的理解:无论如何,b,d等这些值是一定有偏差的,b=2*(b*b/4-d*d)/b=2*(b/2+d)*(b/2-d)/b,由于d进行了开根处理,误差微乎其微,几乎可以忽略不计,即可以当他们是常数,这个式子的误差级别y=ax+b(a,b为常量),b=2*(sqrt(b*b+4)-2)/b的误差级别y=a/x+b(a,b为常量),x在(0,1]区间显然后者的误差比较大); 调试程序的时候会遇到小错误,但经过反复修改后程序能够运行。 17
四、调试分析过程(2) 测试数据 及测试结果 18
五、总结 设计用到的知识点 收获与体会 不足与努力方向 19
1. 函数的递归调用 2. 循环结构 3. 一维数组。 我们应当用不同方向和方法去解决问题。在我们解决不了问题的时候,要尝试着去分析问题回归问题的最基本。 多次失败,让我找到了前进的方向,不得不说,C语言是一个神奇的东西,以后会更加努力学习相关知识。
六、参考文献 [1] www.http://www.china-audit.com/,百度百科(祖冲之迭代法) [2] 杨克昌编著,计算机程序设计典型例题精解,国防科技大学大学出版社,1999年3月,第297-299页) 参考书籍及 参考论文与 网址 20