1、第三次实验P85 2(3)请用改进欧拉法和龙格-库塔法实现,并画图,分析误差。其中,ode 的精度设置参照 P78 方法进行设置解:令 y=z,将方程转化为一阶微分方程组,22()/),yzxnyx(1)用龙格-库塔方法求微分方程组:先建立 m 文件表示微分方程组(见 fun3.m),然后用ode45()求解此微分方程(见 exp4_6_2_3.m) % P85 2(3)function dw=fun3(x, w)% 二阶微分方程化为一阶微分方程组 % w(1)表示函数y ,w(2)表示函数z ,即dy/dxn=0.5;dw=w(2); -(x*w(2)+(x2-n2)*w(1)/x2;%(2
2、)用改进欧拉 %function x,y=Euler(f,xt,x0)% 用改进的欧拉公式求一阶常微分方程( 组) % f:定义常微分方程y=f(x,y)的函数m文件; % xt:常微分方程的自变量x的取值向量 % x0:初值 % x: 输入自变量x的列向量 % % y:常微分方程组组求解的函数y 的函数值,每列对应一个函数值x=xt(:);n=length(x0); % 初值的个数即方程的个数y=zeros(length(x),n);y(1,:)=x0(:);for k=2:length(x)h=x(k)-x(k-1);y(k,:)=y(k-1,:)+h*feval(f,x(k-1),y(k
3、-1,:); % 向前欧拉公式ytmp=y(k-1,:)+h*feval(f,x(k),y(k,:); % 向后欧拉公式y(k,:)=0.5*(y(k,:)+ytmp); % 改进的欧拉公式end% main function below%用欧拉方法和龙格-库塔方法求解xs= pi/2: 0.01*pi: 10*pi;w0=2, -2/pi;opt=odeset(reltol,1e-6,abstol,1e-9);x, w=ode45(fun3, xs, w0);y1=sin(x).*sqrt(2*pi./x);figure, set(gcf,name,实验4.5 第2题(3)subplot(131),plot(x, w(:,1), r),title(龙格 -库塔方法),xlabel(最大误差为,num2str(max(abs(w(:,1)-y1)x,y=Euler(fun3, xs, w0);subplot(132),plot(x, y(:,1),b),title(改进的欧拉公式 )xlabel(最大误差为,num2str(max(abs(y(:,1)-y1)subplot(133), plot(x,y1,k),title(精确解)%