《四阶Runge-Kutta方法.docx》由会员分享,可在线阅读,更多相关《四阶Runge-Kutta方法.docx(2页珍藏版)》请在优知文库上搜索。
1、实验题目四阶Runge-Kutta方法班级:09医软一班小组成员:赵善飞09714057,翟增辉09714054负责算法编程实现局部马卫卫09714026负责数据输入输出程序和实验报告王燕09714040负责后期运行结果检验实验名称:利用四阶龙格-库塔方法求解微分方程的初值问题。实验目的:编写关于四阶龙格-库塔c+程序求解微分方程的初值问题。实验原理:一阶常微分方程初值问题的数值解法是近似计算中很重要的局部。常微分方程初值问题的数值解法是求方程6.1的解在点列鸠=I+优(=/*)上的近似值L,这里儿是、到土的步长,一般略去下标记为。常微分方程初值问题的数值解法一般分为两大类:1)单步法:这类方
2、法在计算儿时,只用到+K当和),即前一步的值。因此,在有了初值以后就可以逐步往下计算。典型方法如龙格-库塔(R-K)方法.(2)多步法:这类方法在计算y时,除用到与+1、乙和以外,还要用上一式=1,2,M;A),即前面步的值。典型方法如AdamS方法。经典的R-K方法是一个四阶的方法,它的计算公式是:”“=”+(+2K2+2K,+K).=)K2=f(xtl+g,y+I)6.2)=(j+p以+K2)Ki=f(x+h,yn+hKi)经过修改正的可用C+算法R-K四阶算法:开始程序设计流程Xa=O,xb=l,y=lC+程序如下:#includeclassRKprivate:输入步长m值doublek
3、l,k2,k3,k4;b=xb;a=xa;u=y;doublef=u-2*tu;doubleh,b,u,a;public:voidseth(doublel=0)h=l;)设步长voidsetf(doublexa=0,doublexb=0,doubley=0)设初值和范围(xa,xb)b=xb;a=xa;u=y;doublef(doublet,doubleU)函数值,可根据你所求的不同的方程进行修改函数设定doublef=-u*(lt*u);returnf;voiddork()/R-K主函数for(intcount=0;count(b-a)/h;count+)k1=f(a+count*h,u);k2=f(a+count*h+h2,uh*kl2);k3=f(a+count*h+h2,u+h*k22);k4=f(a+count*h+h,u+h*k3);u=u+h*(k12*k2+2*k3+k4)6;COUt第count次迭代;coutu=,ukl=klk2=k2k3=k3k4=k4endl;;voidmain()RKmy;doublem;COlIt”请输入步长值:,m;my.seth(m);my.setf(OJJ);my.dork();当步长为0.2时,U的值与例题中y的值相等,故程序正确。