资源描述:
《龙格—库塔实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、龙格—库塔法解常微分方程实验报告一、实验题目求解初值问题二、实验引言1、实验目的进一步理解龙格—库塔方法的设计思路和算法流程,培养动手实践能力和分析能力。2、实验意义龙格—库塔方法的推导基于泰勒展开方法,因而它要求的解具有较好的光滑性质。反之,如果解得光滑性差,那么,使用四阶龙格—库塔法方法求得的数值解,其精度可能反而不如梯形方法。实际计算中,应当针对问题的具体特点选择合适的算法。三、算法设计1.基本思想由Lagrange微分中值定理,记,则得到这样,给出的一种算法,就得到求解微分方程初值问题的一种计算公式。四阶龙格_库塔法是用,,和的加权平均值来近似。最经典的四阶龙格—库塔公式为:
2、四阶龙格—库塔法的误差估计局部截断误差为。2.算法流程图计算N=fix((b-x0)/h)n=1x0+h=>x1f(x0,y0)=>K1f(x0+h/2,y0+h/2*K1)=>K2f(x0+h/2,y0+h/2*K2)=>K3f(x0+h,y0+h*K3)=>K4y0+h/6*(K1+2*K2+2*K3+K4)=>y1输出x1,y1n=n+1x1=>x0y1=>y0n=N?结束开始读入x0,y0,b,h四、程序设计programlonggekutaimplicitnonereal,parameter::b=1real::h=0.2integer::nreal::x,K1,K2,K3
3、,K4,yreal,external::fx=0y=1open(unit=10,file='1.txt')dowhile(x<=b)K1=f(x,y)K2=f(x+h/2,y+K1*h/2)K3=f(x+h/2,y+K2*h/2)K4=F(x+h,y+K3*h)y=y+(k1+2*K2+2*K3+K4)*h/6x=x+hwrite(10,*)x,yenddoendfunctionf(x,y)implicitnonereal::f,x,yf=y-2*x/yendfunction五、结果及讨论1.实验结果0.1.0.1.0.1.0.1.1.1.1.1.六、算法评价1、本次实验实现了常微分
4、方程初值问题数值解法中的四阶龙格—库塔法2、对欧拉法和龙格—库塔法进行比较:在相同步长的情况下,欧拉法每步只计算一个函数值,四阶龙格—库塔法每步需计算四个函数值,就是说,四阶龙格—库塔法的计算量差不多是欧拉法的四倍,为了比较它们的计算精度,可以将欧拉法的步长取为,将四阶龙格—库塔法的步长取为。这样,如果用二种方法求解同一初值问题,则它们的计算量相当。在计算量相当的条件下,比较它们的计算结果,就能够看出它们的精度差异。3、比较了其数值解与精确解之间的误差。可以发现四阶龙格—库塔法都非常接近精确解。附:向前欧拉法程序programxiangqianoulaimplicitnonereal
5、,parameter::a=0,b=1integer,parameter::k=10real::h=0.1,y0=1integer::nreal::x,yy=y0open(unit=10,file='1.txt')don=0,k-1x=a+n*hy=y+h*(y-2*x/y)write(10,*)x+h,yenddoend运行结果:0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.1.1.