Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MathCAD论坛
MathCAD论坛 MathCad是由MathSoft公司推出的一种交互式数值计算系统
回复
 
主题工具 显示模式
旧 2009-03-01, 11:50   #1
zpz11111
版主
 
注册日期: 2008-07-03
年龄: 92
帖子: 245
声望力: 22
zpz11111 是一个将要出名的人
默认 [讨论]关于欧拉公式编程的商榷

下面这张图片,是浙江某名牌大学发布的“《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 的工作页界面内逐行实验,对提高我们编写程序的能力,是很有帮助的。
上传的图像
文件类型: jpg img0048_14782765.jpg (14.7 KB, 23 次查看)
文件类型: jpg 正确.jpg (35.5 KB, 21 次查看)
zpz11111 当前离线   回复时引用此帖
旧 2009-03-02, 08:21   #2
widgeon
初级会员
 
注册日期: 2009-01-09
年龄: 40
帖子: 15
声望力: 17
widgeon 正向着好的方向发展
默认 回复: [讨论]关于欧拉公式编程的商榷

good example in the details of programming.
widgeon 当前离线   回复时引用此帖
旧 2009-03-02, 10:45   #3
zpz11111
版主
 
注册日期: 2008-07-03
年龄: 92
帖子: 245
声望力: 22
zpz11111 是一个将要出名的人
默认 回复: [讨论]关于欧拉公式编程的商榷

引用:
作者: widgeon 查看帖子
good example in the details of programming.
Hope that the increased contact and better communication。

希望以后增加接触更好沟通。
zpz11111 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[求助]MATLAB中积分上下限带有参数的二重积分如何做? juliannewton MATLAB论坛 3 2009-03-22 00:38
[求助]MATLAB中的非线性限制的优化问题 yx2001001 MATLAB论坛 1 2009-03-06 16:40
急问,如何采用所给数据进行曲面拟合? ormosia MATLAB论坛 3 2008-10-21 10:44
[求助]求GM(1,N)的代码 hapenl MATLAB论坛 0 2008-09-20 06:10
仪表信息图像采集处理研究 liuna2008 MATLAB论坛 0 2008-04-12 18:53


所有时间均为北京时间。现在的时间是 07:34


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.