相对应代码
%欧拉法
h=0.1;
x=(0:h:1);
y(1)=1;
n=length(x);
for i=1:n-1
y(i+1)=y(i)+h*chp61(x(i),y(i));
m=(1+x).^3;
% err=m(i)-y(i)
end
plot(x,y),hold on;
plot(x,m), hold off;
legend('Euler','Exact','real');
%改进欧拉法
h=0.2;
x=(0:h:1);
y(1)=1;
n=length(x);
for i=1:n-1
K1=chp61(x(i),y(i)) ;
K2=chp61(x(i)+h,y(i)+h*K1);
y(i+1)=y(i)+ h/2*(K1+K2)
m=(1+x).^3
%err=m(i)-y(i)
end
%plot(x,y),hold on;
% plot(x,m), hold off;
%legend('modEuler','Exact','real');
function f=chp61(x,y)
% f=-0.5*y/(1+2*x);
% f=x^2-3*y;
f=3*y/(1+x);
%龙格库塔法
h=0.1;
x=(0:h:1);
y(1)=1;
n=length(x);
for i=1:n-1
k1 = chp61(x(i), y(i));
k2 = chp61(x(i) + h/2, y(i) + h*k1/2);
k3 = chp61(x(i) + h/2, y(i) + h*k2/2);
k4 = chp61(x(i) + h, y(i) + h*k3);
y(i+1) = y(i) + h*(k1 + 2*k2 + 2*k3 + k4) / 6;
m=(1+x).^3;
%err=m(i)-y(i)
end
plot(x,y),hold on;
plot(x,m), hold off;
legend('longeKuta','Exact','real');
%龙格库塔法
ts=0:0.1:1;
y0=1;
[t,y]=ode45('chp61',ts,y0 );
m=(1+x).^3;
% ans=[t',y'];
%err=[t',m']-ans
plot(t',y')
hold on
plot(t',m')
hold off
legend('longeKuta','Exact','real');