编制matlab程序,R-K公式求解初值问题,matlab编程

分别用2阶和3阶R-K公式求解初值问题(步长h=0.05)

dfun = @(x,y) cos(x)*sqrt(y);
h = 0.05;

h = 0.05;
X = 1.2:h:2.05;
%% RK2
x = 1.2; % 初始值
y = 3.2; 
for ii = 1:length(X)
   x = X(ii); 
   k1 = dfun(x,y);
   k2 = dfun(x+h,y+h*k1);
   y = y + h*(k1+k2)/2;
   Y1(ii) = y;
end

%% RK3
x = 1.2; % 初始值
y = 3.2; 
for ii = 1:length(X)
   x = X(ii); 
   k1 = dfun(x,y);
   k2 = dfun(x+h/2,y+h*k1/2);
   k3 = dfun(x+h,y+h*(2*k2-k1)/2);
   y = y + h*(k1+4*k2+k3)/6;
   Y2(ii) = y;
end

figure
plot(X,Y1,X,Y2,'r--')
legend('RK2','RK3')
ylabel('y')
xlabel('x')

结果