资源描述:
《数值计算课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数值计算课程设计1.经典四阶龙格库塔法解一阶微分方程组1.1经典四阶龙格库塔法解一阶微分方程组算法说明龙格-库塔(Runge-Kutta)方法都是由一个合适的泰勒方法推导而来,使得其最终全局误差为○()。对每步进行若干次函数求值,从而省去高阶导数计算。N=4的龙格-库塔方可以适用于一般的应用,因为它非常精确,稳定,且易于编程。4阶龙格-库塔方法(RK4)可模拟N=4的泰勒方法的精度。这种算法可以描述为自初始点(,)开始,利用)(1-1)生成近似序列,其中,+))(1-2)1.2经典四阶龙格库塔法解一阶微分方程组算法流程图开始输入初值x[0
2、],y[0],z[0]微分区间[a,b]以及步长stepx[i]=x[i-1]+(k1+2*k2+2*k3+k4)/6;y[i]=y[i-1]+(m1+2*m2+2*m3+m4)/6;z[i]=z[i-1]+(n1+2*n2+2*n3+n4)/6i<=n输出结果结束图1-1算法流程图39数值计算课程设计1.3经典四阶龙格库塔法解一阶微分方程组算法软件调试请输入x[0],y[0],z[0]1.0-1.00.0请输入上下限0.05.00.05-2.599651.018991.459290.5510.41394.775491.278361.05
3、27.10595.272790.1.5529.94844.115790.2.0523.57692.1621-0.2.5512.6808-0.-0.3.050.-2.09469-0.3.55-11.0943-3.48987-0.4.05-19.2121-3.95653-0.Pressanykeytocontinue1.4经典四阶龙格库塔法解一阶微分方程组算法程序代码#include#includeusingnamespacestd;doublef1(doublet,doublex,doubley,doubl
4、ez){return(-x+6*y+z*z);}doublef2(doublet,doublex,doubley,doublez){return(-y+3*z+2*sin(t));}doublef3(doublet,doublex,doubley,doublez){return(-z+exp(-t)+cos(t));}intmain()39数值计算课程设计{constn=10;doubleh,t,k1,k2,k3,k4,m1,m2,m3,m4,n1,n2,n3,n4,a,b;inti,j;doublex[n],y[n],z[n];cout
5、<<"请输入x[0],y[0],z[0]"<>x[0]>>y[0]>>z[0];cout<<"请输入上下限"<>a>>b;j=0;h=(b-a)/n;for(i=1;i<=n;i++){t=a+(i-1)*h;k1=f1(t,x[i-1],y[i-1],z[i-1]);m1=f2(t,x[i-1],y[i-1],z[i-1]);n1=f3(t,x[i-1],y[i-1],z[i-1]);k2=f1(t+h/2.0,x[i-1]+k1*h/2.0,y[i-1]+m1*h/2.0,z[i-1]+n1*h
6、/2.0);m2=f2(t+h/2.0,x[i-1]+k1*h/2.0,y[i-1]+m1*h/2.0,z[i-1]+n1*h/2.0);n2=f3(t+h/2.0,x[i-1]+k1*h/2.0,y[i-1]+m1*h/2.0,z[i-1]+n1*h/2.0);k3=f1(t+h/2.0,x[i-1]+k2*h/2.0,y[i-1]+m2*h/2.0,z[i-1]+n2*h/2.0);m3=f2(t+h/2.0,x[i-1]+k2*h/2.0,y[i-1]+m2*h/2.0,z[i-1]+n2*h/2.0);n3=f3(t+h/2.0,
7、x[i-1]+k2*h/2.0,y[i-1]+m2*h/2.0,z[i-1]+n2*h/2.0);k4=f1(t+h/2.0,x[i-1]+k3*h/2.0,y[i-1]+m3*h/2.0,z[i-1]+n3*h/2.0);m4=f2(t+h/2.0,x[i-1]+k3*h/2.0,y[i-1]+m3*h/2.0,z[i-1]+n3*h/2.0);39数值计算课程设计n4=f3(t+h/2.0,x[i-1]+k3*h/2.0,y[i-1]+m3*h/2.0,z[i-1]+n3*h/2.0);x[i]=x[i-1]+(k1+2*k2+2*k
8、3+k4)/6;y[i]=y[i-1]+(m1+2*m2+2*m3+m4)/6;z[i]=z[i-1]+(n1+2*n2+2*n3+n4)/6;cout<