![]() |
[讨论]关于欧拉公式编程的商榷
4 个附件
下面这张图片,是浙江某名牌大学发布的“《Mathcad 2001及概率统计应用》电子教案”中“实验27”一篇中的用欧拉公式计算π值的程序。无独有偶,在本论坛中以下两篇资料也都是在“实验27”一篇中,引用了这个程序。
一、mathcad 实验36例 二、[资料]mathcad学习资料汇编 程序的图片如下(纯黑色的): 你看看,在最后一项的值小于亿分之一之际,求出的π值竟然是3.9835919006706,用这个程序计算怎不冤枉先贤呢?其实这个程序编制有错,下面我们来分析它: 一、程序一开始就在 while 循环之外事先给 s 赋值为0,给 i 赋值为 1 ,于是过渡变量 term 也就相应地在循环外事先被赋以值 1 (1/i^2=1)了。 进入循环后,s 被首先赋值 s+term=1 所以无穷级数的第一项已经赋值为 1 了。下一行再给 term 赋值为 1/i^2=1 这个值已经写定之后,才在第三行将 i 加 1 。第二次循环又给 s 的第二项写入 1 。然后在下一循环中才正常写入级数的各项。于是这个程序体现的是下面的无穷级数 1+1+1/2+1/4+1/9+1/16+1/25.............. 而不是1+1/2+1/4+1/9+1/16+1/25.............. 程序纠错,将循环中的第二行与第三行位置对调,使过渡变量 term 在 i 加了 1 之后再赋值,避免给他重复赋值。 二、程序中循环的限制条件使用的是 限制的是无穷级数最后一项的取值,这个限制是有效的,但不直观,使用者如想增多项数,得先算出(1/i^2) 的值,否则,就只好随便指定一个很小的数字“以管窥豹”了。 程序改进,该程序中的序数变量 i 本就等同于无穷级数的项数,所以改写循环条件为 i≤1000000 ,直接限制无穷级数的项数,以改善程序的可读性。 附上保持mathcad14原状的“纠错后的程序”图片。 请大家对照本文的相应程序,细细研读。最好在 mathcad 14 的工作页界面内逐行实验,对提高我们编写程序的能力,是很有帮助的。 |
回复: [讨论]关于欧拉公式编程的商榷
good example in the details of programming.
|
回复: [讨论]关于欧拉公式编程的商榷
[QUOTE=widgeon;25069]good example in the details of programming.[/QUOTE]
Hope that the increased contact and better communication。 希望以后增加接触更好沟通。 |
所有时间均为北京时间。现在的时间是 20:55。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.