利用欧拉方法求常微分方程近似数值解.docVIP

  • 239
  • 0
  • 约1.3千字
  • 约 4页
  • 2015-09-06 发布于重庆
  • 举报

利用欧拉方法求常微分方程近似数值解.doc

利用欧拉方法求常微分方程近似数值解,欧拉微分方程,欧拉运动微分方程,欧拉平衡微分方程,欧拉型微分方程,微分方程的欧拉算法,微分方程的欧拉解法,欧拉型常微分方程,偏微分方程数值解,微分方程数值解法

利用欧拉方法求常微分方程近似数值解 实 验 报 告 实验名称 (教师填写) 利用欧拉方法求常微分方程近似数值解 实验目的 (教师填写) 1.学会利用欧拉方法求微分方程的数值解。 2.观察欧拉显式方法的收敛性。 3.观察欧拉显式方法的数值不稳定性。 实验题目 (教师填写) 完成第一题。(第二题选作。) 1.取用欧拉显式方法求解一阶线性微分方程: 计算到并与精确解比较。 2.取用欧拉显式方法求解线性微分方程: 并画出曲线。用改进的欧拉方法(或欧拉隐式方法)重复求解上述问题。试解释你所观察到的现象。 实验报告要求 (教师填写) 实验内容与步骤 (学生填写) 欧拉法 #includestdio.h #includemath.h void main() { int i; double y,h,x,m,z; printf(输入步长h); scanf(%f,h); printf(h=%f\n,h); m=1.0/h; y=1.0; x=1.0; for(i=0;im;i++) { y=y+h*(x+i*h)*pow(y,1.0/3.0); } printf(y(2)=%f\n,y); z=pow((2*2.0+2)/3.0,3.0/2.0); printf(精确解); printf(y(2)=%f,z); } 改进欧拉法 #includestdio.h #includemath.h void main() { int i; double y,y0,z,h,x,m; printf(输入步长h); scanf(%f,h); printf(h=%f\n,h); m=1.0/h; y=1.0; x=1.0; for(i=0;im;i++) { y0=y+h*(x+i*h)*pow(y,1.0/3.0); y=y+h/2*((x+i*h)*pow(y,1.0/3.0)+(x+i*h+h)*pow(y0,1.0/3.0)); } printf(y(2)=%f\n,y); z=pow((2*2.0+2)/3.0,3.0/2.0); printf(精确解); printf(y(2)=%f,z); } 实验结果与实验结论 (学生填写) 欧拉法 h=0.1, y(2)=2.723877 h=0.05, y(2)=2.775436 h=0.01, y(2)=2.817713 改进欧拉法 h=0.1, y(2)=2.827609 h=0.05, y(2)=2.828219 h=0.01, y(2)=2.828419 精确解 y(2)=2.828427 欧拉法的特点   单步,显式,一阶求导精度,截断误差阶欧拉法的缺点   欧拉法简单地取切线的端点作为下一步的起点进行计算,当步数增多时,误差会因积累而越来越大。因此欧拉格式一般不用于实际计算。 改进欧拉格式   为提高精度,需要在欧拉格式的基础上进行改进。采用区间两端的函数值的平均值作为直线方程的斜率。改进欧拉法的精度为二阶。

文档评论(0)

1亿VIP精品文档

相关文档