常微分方程数值解实验报告 学院:数学与信息科学 专业:信息与计算科学 姓名:郑思义 学号:2 0 121 6 52 4 课程:常微分方程数值解实验一:常微分方程得数值解法1、分别用 E u le r法、改进得 Euler 法(预报校正格式)与 S—K 法求解初值问题
(h=0、1)并与真解作比较
1、1 实验代码:%欧拉法functio n [x,y]=naeuler(d yfun,xspan,y 0,h)%d yfun 就是常微分方程,x s pan 就是 x 得取值范围,y0就是初值,h 就是步长x=x s p an(1):h:xspan(2);y(1)=y 0; fo r n=1:length(x)-1 y(n+1)=y(n)+h*feval(d yf un,x(n),y(n));e n d %改进得欧拉法f unction [x,m,y]=na e uler2(d yfun,xspa n,y 0,h)%d yf u n 就是常微分方程,x s pan 就是x得取值范围,y0 就是初值,h 就是步长
%返回值x为 x 取值,m为预报解,y为校正解x=xspan(1):h:xspa n(2);y(1)=y0; m=zer o s(len g th(x)-1,1);fo r n=1:le n g t h(x)-1 k1=f ev al(d y fun,x(n),y(n));y(n+1)=y(n)+h*k1; m(n)=y(n+1);k2=f ev al(dyfu n,x(n+1),y(n+1));y(n+1)=y(n)+h*(k 1+k2)/2;end %四阶 S—K 法functio n [x,y]=rk(d yfun,xsp a n,y0,h)%d yf un 就是常微分方程,x s pa n就是x得取值范围,y0 就是初值,h 就是步长
x=xs p an(1):h