作业帮 > 综合 > 作业

常微分方程数值求解如题,最好有matlab代码.直接解答也行.要几分都没关系.但凡有所帮助,

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/04/28 05:22:17
常微分方程数值求解

如题,最好有matlab代码.直接解答也行.
要几分都没关系.但凡有所帮助,
常微分方程数值求解如题,最好有matlab代码.直接解答也行.要几分都没关系.但凡有所帮助,
dxdt=@(t,x) x-2*t./x;
oneoverdt=1000;
dt=1/oneoverdt;
N=4*oneoverdt;
x1=zeros(1,N+1);
x1(1)=1; % 显欧
x2=x1; % 梯形
x3=x1; % RK4
for i=1:N
x1(i+1)=x1(i)+dt*dxdt((i-1)*dt,x1(i));
K1=dxdt((i-1)*dt,x2(i));
K2=dxdt(i*dt,x2(i)+dt*K1);
x2(i+1)=x2(i)+dt/2*(K1+K2);
K1=dxdt((i-1)*dt,x3(i));
K2=dxdt((i-.5)*dt,x3(i)+dt/2*K1);
K3=dxdt((i-.5)*dt,x3(i)+dt/2*K2);
K4=dxdt(i*dt,x3(i)+dt*K3);
x3(i+1)=x3(i)+dt/6*(K1+2*K2+2*K3+K4);
end
t=linspace(0,4,N+1);
plot(t,x1,t,x2,t,x3)
legend('Forward Euler','Trapezoidal','RK4')