资源描述:
《《工程常用算法》综合实践作业七》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《工程常用算法》综合实践作业七完成日期:2010年12月20日小组成员:学号姓名学号姓名学号姓名常微分初值问题如下:请用Euler方法、四阶经典Runge-Kutta格式和四阶Adams方法求解。要求:任选一种方法,但希望得到“优秀”成绩的小组必须完成后两种求解方法。【完成四阶经典Runge-Kutta、四阶Adams】二、程序流程图三、完整的程序及简要的注释【四阶经典Runge-Kutta】#include#include#defineN40intpos(intn,intm){//定义指针赋值
2、returnN*n+m;}doublef(doublex,doubley){returny-2*x/y;//定义函数f(x,y)}voidrungekutta(doublea,doubleb,doubleh){printf("经典四阶runge-kutta算法:");float**p;float**p1;doublex[N],y[N];p=(float**)x;p1=(float**)y;printf("ntx[n]ty[n]");printf("0t0.000000t1.000000");doubleK
3、1,K2,K3,K4;intn=1;while(n<=N){x[0]=a;y[0]=b;x[n]=x[n-1]+h;K1=f(x[n-1],y[n-1]);//四阶runge-kutta算法K2=f(x[n-1]+h/2,y[n-1]+h*K1/2);K3=f(x[n-1]+h/2,y[n-1]+h*K2/2);K4=f(x[n-1]+h,y[n-1]+h*K3);y[n]=y[n-1]+h/6*(K1+2*K2+2*K3+K4);printf("%dt%lft%lf",n,x[n],y[n]);n++;}}intmai
4、n(void)//初值输入{rungekutta(0,1,0.025);return0;}【四阶Adams】#include#include#defineN40intpos(intn,intm){//定义指针赋值returnN*n+m;}doublef(doublex,doubley){returny-2*x/y;//定义函数f(x,y)}voidrungekutta(doublea,doubleb,doubleh){printf("四阶Adams算法:");float**p;float
5、**p1;doublex[N],y[N];p=(float**)x;p1=(float**)y;printf("ntx[n]ty[n]");printf("0t0.000000t1.000000");doubleK1,K2,K3,K4;intn=1;while(n<=3){x[0]=a;y[0]=b;x[n]=x[n-1]+h;K1=f(x[n-1],y[n-1]);//四阶runge-kutta算法K2=f(x[n-1]+h/2,y[n-1]+h*K1/2);K3=f(x[n-1]+h/2,y[n-1]+h*K
6、2/2);K4=f(x[n-1]+h,y[n-1]+h*K3);y[n]=y[n-1]+h/6*(K1+2*K2+2*K3+K4);printf("%dt%lft%lf",n,x[n],y[n]);n++;}intm=4;while(m<=N){x[m]=x[m-1]+h;//四阶Adams算法y[m]=y[m-1]+h/24*(55*f(x[m-1],y[m-1])-59*f(x[m-2],y[m-2])+37*f(x[m-3],y[m-3])-9*f(x[m-4],y[m-4]));printf("%dt%lft
7、%lf",m,x[m],y[m]);m++;}}intmain(void)//初值输入{rungekutta(0,1,0.025);return0;}四、程序运行结果【以下部分是手写的部分】五、对不同实现方法的运行结果进行比较六、问题与总结(必须给出自评成绩A/B/C/D)【写出简要总结】【自评成绩:】一、计算公式及计算方法(手写在作业最后即可)