数值分析实验六常微分方程性态和R-K法的稳定性班级:11级数本姓名:宋梦琪学号:20110501055一、实验名称:常微分方程性态和R-K法的稳定性二、实验目的:考察下面微分方程右端项中函数y前面的参数对方程性态的影响(它可使方程为好条件的或坏条件的)和研究计算步长对R-K法计算稳定性的影响。三、实验内容及要求:实验题目:常微分方程初值问题'1,01,(0)1,yayaxxy其中,5050a。其精确解为()axyxex。四、实验要求:本实验题都用4阶经典R-K法计算(1)对参数a分别取4个不同的数值:一个大的正值,一个小的正值,一个绝对值小的负值和一个绝对值大的负值。取步长h=0.01,分别用经典的R-K法计算,将四组计算结果画在同一张图上,进行比较并说明相应初值问题的性态。(2)取参数a为一个绝对值不大的负值和两个计算步长,一个步长使参数ah在经典R-K法的稳定域内,另一个步长在经典R-K法的稳定域外。分别用经典R-K法计算并比较计算结果。取全域等距的10个点上的计算值,列表说明。五、实验代码Matlab程序如下:functioncharp5_1%数值试验5.1:常微分方程性态和R-K法稳定性试验%输入:参数a,步长h%输出:精确解和数值解图形对比%clf;result=inputdlg({'请输入[-50,50]间的参数a:'},'实验5.1',1,{'-40'});a=str2num(char(result));if(a-50|a50)errordlg('请输入正确的参数a!');return;endresult=inputdlg({'请输入(01)之间的步长:'},'实验5.1',1,{'0.01'});h=str2num(char(result));if(h=0|h=1)errordlg('请输入正确的(01)间的步长!');return;endx=0:h:1;y=x;N=length(x);y(1)=1;func=inline('1+(y-x).*a');forn=1:N-1k1=func(a,x(n),y(n));k2=func(a,x(n)+h/2,y(n)+k1*h/2);k3=func(a,x(n)+h/2,y(n)+k2*h/2);k4=func(a,x(n)+h,y(n)+k3*h);y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6;endy0=exp(a*x)+x;plot(x,y0,'g+');holdon;plot(x,y,'b--');xlabel('x');ylabel('y0=exp(ax)+x:+andR-K(x)--');六、实验步骤及结果分析:1、对参数a分别取4个不同的数值3(题中要取大的正值,但a大于5时其它曲线在图中不好显示),1,-8,-40,将四组计算结果画在同一张图上。观察图像可知:4阶经典R-K算法的绝对稳定区域是0785.2h,本实验中afy。因此,当h=0.01时,278.50a,该方法才稳定。现有5050a,因此a的稳定区域为500a。当a处于稳定性范围内时,结果收敛,为好条件。图中显示,四个参数下结果均收敛,是好条件的。2、取参数a为一个绝对值不大的负值a=-8,故348.00h时,该方法稳定。取h=0.02和h=0.5作比较。ix00.10.20.30.40.50.60.70.80.91.0y精1.00000.54930.40190.39070.44080.51830.60820.70370.80170.90071.0003y0.021.00000.54930.40190.39070.44080.51830.60820.70370.80170.90071.0003y0.51.00005.500026.0000由表中等距的10个点的计算值和图像可以看出,h值超过稳定区域时结果发散,与精确曲线相差很大,而h值在稳定区域内时,忽略舍入误差,计算结果和精确值一样。