MATLAB实战——微分方程组的解法之欧拉法与4阶龙格库塔法
MATLAB实战——微分方程组的解法之欧拉法与4阶龙格库塔法
实现:
%%Question 1 part(b)
clear all;
clc;
t0 = 0;
x0 = 1/2;
dt = 0.1;
tf = 1;
t_range = t0:dt:tf;
x_EU = zeros(1,length(t_range));
x_EU(1)= x0;
x_RK = zeros(1,length(t_range));
x_RK(1)= x0;
for k = 1:length(t_range) - 1
x_EU(k+1) = euler_scheme(x_EU(k),dt);
x_RK(k+1) = RK4_scheme(x_RK(k),dt);
end
figure;
plot(t_range,x_EU,'g-o','Markersize',5);
hold on;
plot(t_range,x_RK,'r-o','Markersize',5);
hold on;
t_analytical = t0:0.001:tf;
x_analytical = (exp(t_analytical+log(1/3)))./(1-(exp(t_analytical+log(1/3))));
plot(t_analytical,x_analytical,'k-','linewidth',1);
legend('Euler method','RK4 method','analytical method')
function dxdt = fx(x)
dxdt = (x^2)+x;
end
function x1 = euler_scheme(x0,h)