资源描述:
《数值分析报告-常微分数值解地求法c语言》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、本科生课程设计报告实习课程数值分析学院名称管理科学学院专业名称信息与计算科学学生姓名学生学号指导教师实验地点实验成绩二〇一六年六月二〇一六年六12摘要常微分方程数值解法是计算数学的一个分支.是解常微分方程各类定解问题的数值方法.现有的解析方法只能用于求解一些特殊类型的定解问题,实用上许多很有价值的常微分方程的解不能用初等函数来表示,常常需要求其数值解.所谓数值解,是指在求解区间内一系列离散点处给出真解的近似值.这就促成了数值方法的产生与发展. 关键词:数值解法;常微分121.实验内容和要求常微分方程初值问题有精确解。
2、要求:分别取步长h=0.1,0.01,0.001,采用改进的Euler方法、4阶经典龙格-库塔R-K方法和4阶Adams预测-校正方法计算初值问题。以表格形式列出10个等距节点上的计算值和精确值,并比较他们的计算精确度。其中多步法需要的初值由经典R-K法提供。运算时,取足以表示计算精度的有效位。2.算法说明2.1函数及变量说明表1函数及变量定义函数/变量名类型说明fdouble要求的微分方程p_fdouble微分方程原函数Euler,Euler_ProK_R,Adamsdouble欧拉,改进欧拉,经典K_R,4阶Ad
3、ams预测-校正方法MainVoid主函数1、欧拉方法:12(i=0,1,2,3,......n-1)(其中a为初值)1、改进欧拉方法:(i=0,1,2......n-1)(其中a为初值)2、经典K-R方法:4、4阶adams预测-校正方法预测:校正:Adsms内插外插公式联合使用称为Adams预测-校正系统,利用外插公式计算预测,用内插公式进行校正。计算时需要注意以下两点:1、外插公式为显式,内插公式为隐式。故用内插外插公式时需要进行迭代。121、这种预测-校正法是四步法,计算Yn+1时,不但用到前一步信息,而且要
4、用到更前三步信息,,因此它不是自动开始的,实际计算时必须借助某种单步法,用Runge-Kutta格式为它提供初始值,依据局部截断误差公式得:进一步将Adams预测-校正系统加工成下列方案:运用上述方案计算时,要先一步的信息和更前一步的信息因此在计算机之前必须给出初值和,可用其他单步法来计算,则一般令他为零。1.源程序12#include#include#include#include//微分方程doublef(doublex,doubley)
5、{return(-y+cos(2*x)-2*sin(2*x)+2*x*exp(-x));//returnx*pow(y,-2)*2.0/3.0;}//原函数doublep_f(doublex){returnx*x*exp(-x)+cos(2*x);//returnpow(1.0+pow(x,2),1.0/3.0);}//求精确解double*Exact(doublea,doubleb,doubleh){inti;doublec=(b-a)/h;double*y=newdouble[c+1];for(i=0;i<=c;
6、i++)y[i]=p_f(a+i*h);returny;}//欧拉方法double*Euler(doublea,doubleb,doubleh,doubley0){inti;doublec=(b-a)/h;double*y=newdouble[c+1];y[0]=y0;for(i=1;i<=c;i++){y[i]=y[i-1]+h*f(a+(i-1)*h,y[i-1]);//printf("%f",f(a+(i-1)*h,y[i-1]));}returny;}//改进欧拉方法double*Euler_Pro(do
7、ublea,doubleb,doubleh,doubley0){inti;12doublec=(b-a)/h,yb;double*y=newdouble[c+1];y[0]=y0;for(i=1;i<=c;i++){yb=y[i-1]+h*f(a+(i-1)*h,y[i-1]);y[i]=y[i-1]+0.5*h*(f(a+(i-1)*h,y[i-1])+f(a+i*h,yb));}returny;}//经典K-R方法double*K_R(doublea,doubleb,doubleh,doubley0){doubl
8、eK1,K2,K3,K4,x;inti;doublec=(b-a)/h;double*y=newdouble[c+1];y[0]=y0;for(i=1;i<=c;i++){x=a+(i-1)*h;K1=f(x,y[i-1]);K2=f(x+0.5*h,y[i-1]+0.5*h*K1);K3=f(x+0.5*h,y[i-1]+0.5*h*K2);