《四阶Runge-Kutta方法.docx》由会员分享,可在线阅读,更多相关《四阶Runge-Kutta方法.docx(2页珍藏版)》请在第一文库网上搜索。
1、实验题目四阶Runge-Kutta方法班级:09医软一班小组成员:赵善飞09714057,翟增辉09714054负责算法编程实现局部马卫卫09714026负责数据输入输出程序和实验报告王燕09714040负责后期运行结果检验实验名称:利用四阶龙格-库塔方法求解微分方程的初值问题。实验目的:编写关于四阶龙格-库塔c+程序求解微分方程的初值问题。实验原理:一阶常微分方程初值问题的数值解法是近似计算中很重要的局部。常微分方程初值问题的数值解法是求方程6.1J的解在点列Z=XE+45=)上的近似值X,这里儿是ZT到工的步长,一般略去下标记为。常微分方程初值问题的数值解法一般分为两大类:1单步法:这类方
2、法在计算1时,只用到心十Z和方,即前一步的值。因此,在有了初值以后就可以逐步往下计算。典型方法如龙格-库塔(R-K)方法。(2J多步法:这类方法在计算以”时,除用到、乙和”以外,还要用=12,&;Q0),即前面卜步的值。典型方法如Adams方法。经典的R-K方法是一个四阶的方法,它的计算公式是:h=(1+2(+2K3+K4)6叫=UpH)hh2=(xh-y+/K|)6.2K3=Un+pyri+g2)K4=f(1t+h,yn+h3)经过修改正的可用c+算法R-K四阶算法:开始程序设计流程Xa=O,xb=1,y=1C+程序如下:#inc1udec1assRKXprivate:输入步长m值doub1
3、ek1,k2,k3,k4;b=xb;a=xa;u=y;doub1ef=u-2*tu;doub1eh,b,u,a;pub1ic:voidseth(doub1c1=0)h=1;)设步长voidsetf(doub1exa=0,doub1exb=0,doub1ey=0)设初值和范围(xa,xb)(b=xb;a=xa;u=y;1doub1ef(doub1et,doub1eU)函数值,可根据你所求的不同的方程进行修改函数设定doub1ef=-u*(1+t*u);returnf;)voiddork()/R-K主函数(for(intcount=0;count(b-a)/h;count+)k1=f(acount*h,u);k2=f(a+count*h+h2,u+h*k1/2);k3=f(a+count*h+h2,u+h*k22);k4=f(a+count*h+h,u+h*k3);u=u+h*(kI+2*k2+2*k3+k4)6;cout,count,次迭代;coutu=,u,k1=k1,k2=k2,k3=k3,k4=k4end1;voidmain()(RKmy;doub1em;COUtV请输入步长值:m;my.seth(m);my.setf(O,1,1);my.dork();当步长为0.2时,u的值与例题中y的值相等,故程序正确。