显式Euler、梯形方法、预校Euler方法的比较.doc_第1页
显式Euler、梯形方法、预校Euler方法的比较.doc_第2页
显式Euler、梯形方法、预校Euler方法的比较.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微分方程数值解实验报告姓名丁建伟学号200708020211日期2010106实验项目显式Euler、梯形方法、预校Euler方法的比较指导教师徐强1、 上机实验的问题和要求(需求分析): 考虑一阶常微分方程初值问题dy/dx = -y2, 0=x=1, y(0)=1,其精确解为y = 1/(1+x),使用三种方法求初值问题数值解。给出步长h=1/16,1/32,1/64,1/128,1/256时的x=1点处的整体截断误差E(h)=|yn - y(1)|,并从误差、收敛阶、计算量方面比较三种方法。 目的与要求: 掌握三种方法的程序实现 掌握比较算法优缺点的方法二、程序设计的基本思想,原理和算法描述:算法的基本思想:用离散问题代替连续问题,在解的存在区间(a,b)上根据所给出的n值取n + 1个节点:即a=x0x1x2.xn=b,相邻两个节点距离h=(b-a)/n,利用数值计算方法寻求y(x)在节点上的近似值:y0, y1, . yn。原理:显式Euler方法: 梯形方法:预校Euler方法:算法描述:由已知条件和根的存在区间,经过变换,三种方法的迭代公式分别为:显式Euler方法:梯形方法:预校Euler方法:3、 主要程序代码或命令:#include#include /需要用到绝对值abs()和求平方根sqrt()函数void main() int n; int i; printf(请输入n的值:); /输入变量n的值scanf(%d,&n);float y=1.0,y0=1.0,y1=1.0; /赋初始值。float e,e0,e1; /绝度误差float h;h=1/float(n);for(i=1;i=n;i+) y=y-h*y*y; /显式Euler方法的变换公式。 y0=(1/h)*(sqrt(2-(h*y0-1)*(h*y0-1)-1.0); /梯形方法的变换公式。 y1=y1-(h/2)*(y1*y1+(y1-h*y1*y1)*(y1-h*y1*y1);/预校Euler方法变换公式。 printf(n=%d,i); printf(Euler方法); printf(y=%f,y); printf(梯形方法); printf(y0=%f,y0); printf(预校Euler方法); printf(y1=%fn,y1); e=fabs(y-0.5);e0=fabs(y0-0.5);e1=fabs(y1-0.5);printf(请输出最终结果y=%f,误差为%f;y0=%f,误差为%f;y1=%f,误差为%f,y,e,y0,e0,y1,e1);四、调试和运行程序过程中产生的问题及采取的措施:1、编译时出错,检查程序发现没有加入使用函数预处理,在开头加上#include。2、编译时,没有注意数据类型转换,如float h;h=1/n;是错误的,因为n是整形的,当n值大于1时,h老为零。应进行模式转换,h=1/float(n);这样才是正确的。3、对浮点数求绝对值时,应使用fabs()函数,而不是abs()。五、运行输出结果及分析:上述程序在Visual C+ 6.0环境下加以实现。经过多次测试,程序运行正确。例如:输入n值:16 ,运行结果如图所示,图中显示了使用三种方法每一步的值及误差。由上图可知:1. 在x=1点处的整体截断误差E(h)=|yn - y(1)|,显式Euler方法为0.011194,梯形方法为0.000244,预校Euler方法为0.000256.。由此可得,在误差精度上,梯形方法最好,预校Euler方法次之,显式Euler最差。2. 由变换公式知,显式Euler方法的截断误差O(n2),梯形方法和预校Euler方法都为O(n3)。3. 从计算量上,预校Euler方法最大,梯形方法次之,显式Euler方法最简单。通过这次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论