资源描述:
《工程常用算法作业五-45组.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《工程常用算法》综合实践作业五作业名称:常微分方程数值解法完成日期:2015年07月07日班级学号姓名主要工作说明自评成绩编写程序及调试A45组总结绘制流程图及排版题目:常微分初值问题如下:请用四阶经典Runge-Kutta格式、四阶Adams显示方法和隐式方法求解,比较三种方法的计算结果。要求:任选一种方法,但希望得到“优秀”成绩的小组必须完成最后一种求解方法。二、程序流程图三、完整的程序及简要的注释/**********隐式Adams法**************/#include#includevoidkongge(void)//子函
2、数,用来输出空格{inti;for(i=0;i<12;i++){printf("");}}doublef(doublex,doubley);//子函数声明doubleyy(doublex);//子函数声明doublef(doublex,doubley)//子函数定义f(x,y){doublea;a=y-2*x/y;returna;}doubleyy(doublex)//子函数定义y函数{doublea;a=sqrt(2*x+1);returna;}voidmain(){doublek1,k2,k3,k4,h=0.1,x0=0,x1,y0=1,y1,y11,ff[11],y[
3、11];inti,j;y[0]=1;for(i=1;i<4;i++)//龙格-库塔法算y1,y2,y3{k1=f(x0,y0);k2=f(x0+h/2,y0+k1*h/2);k3=f(x0+h/2,y0+h*k2/2);k4=f(x0+h,y0+h*k3);y1=y0+h*(k1+2*k2+2*k3+k4)/6;y[i]=y1;y0=y1;x0=i*h;}for(i=0;i<4;i++)//计算f1,f2,f3{x0=i*h;ff[i]=f(x0,y[i]);}for(i=4;i<=10;i++)//Adams方法计算{y0=y[i-1]+h*(-9*ff[i-4]+37*
4、ff[i-3]-59*ff[i-2]+55*ff[i-1])/24;//预测值y[i]=y[i-1]+h*(ff[i-3]-5*ff[i-2]+19*ff[i-1]+9*f(i*h,y0))/24;//校正值ff[i]=f(i*h,y[i]);}printf("隐式Adams:");printf("计算值");kongge();printf("准确值");kongge();printf("误差");for(i=0;i<11;i++)//输出计算结果{printf("x=%.1fy[%d]=%-13.10fy(%d)=%-13.10fe=%-13.10f",i*h
5、,i,y[i],i,yy(h*i),fabs(y[i]-yy(h*i)));}getchar();}四、程序运行结果五、对不同实现方法的运行结果进行比较六、问题与总结