
clc;
clear all;
close all;
%% Parameters
h = 0.02; % Step size
y0 = 0; % Initial condition
t_start = 0; % Start time
t_end = 1; % End time
t = t_start:h:t_end; % Time vector
%% 1. Explicit Euler Method
y_euler = zeros(size(t));
y_euler(1) = y0;
for k = 1:length(t)-1
y_euler(k+1) = y_euler(k) + h * flab6(t(k), y_euler(k));
end
%% 2. Runge-Kutta 4th Order
y_rk = zeros(size(t));
y_rk(1) = y0;
for k = 1:length(t)-1
k1 = flab6(t(k), y_rk(k));
k2 = flab6(t(k) + h/2, y_rk(k) + h*k1/2);
k3 = flab6(t(k) + h/2, y_rk(k) + h*k2/2);
k4 = flab6(t(k) + h, y_rk(k) + h*k3);
y_rk(k+1) = y_rk(k) + (h/6)*(k1 + 2*k2 + 2*k3 + k4);
end
%% 3. MATLAB ode45 Solver
[t_ode, y_ode] = ode45(@flab6, [t_start t_end], y0);
%% Visualization
figure('Name', 'ODE Solution Methods', 'Position', [100 100 800 400]);
plot(t, y_euler, 'b-', 'LineWidth', 2, 'DisplayName', 'Explicit Euler');
hold on;
plot(t, y_rk, 'r--', 'LineWidth', 2, 'DisplayName', 'Runge-Kutta 4th Order');
plot(t_ode, y_ode, 'k:', 'LineWidth', 2, 'DisplayName', 'MATLAB ode45');
grid on;
box on;
title('Numerical Solutions of dy/dt = e^{t+y} - 1', 'FontWeight', 'bold');
xlabel('Time t');
ylabel('Solution y(t)');
legend('Location', 'northwest');
set(gca, 'FontSize', 11);
clear all;
close all;
%% Parameters
h = 0.02; % Step size
y0 = 0; % Initial condition
t_start = 0; % Start time
t_end = 1; % End time
t = t_start:h:t_end; % Time vector
%% 1. Explicit Euler Method
y_euler = zeros(size(t));
y_euler(1) = y0;
for k = 1:length(t)-1
y_euler(k+1) = y_euler(k) + h * flab6(t(k), y_euler(k));
end
%% 2. Runge-Kutta 4th Order
y_rk = zeros(size(t));
y_rk(1) = y0;
for k = 1:length(t)-1
k1 = flab6(t(k), y_rk(k));
k2 = flab6(t(k) + h/2, y_rk(k) + h*k1/2);
k3 = flab6(t(k) + h/2, y_rk(k) + h*k2/2);
k4 = flab6(t(k) + h, y_rk(k) + h*k3);
y_rk(k+1) = y_rk(k) + (h/6)*(k1 + 2*k2 + 2*k3 + k4);
end
%% 3. MATLAB ode45 Solver
[t_ode, y_ode] = ode45(@flab6, [t_start t_end], y0);
%% Visualization
figure('Name', 'ODE Solution Methods', 'Position', [100 100 800 400]);
plot(t, y_euler, 'b-', 'LineWidth', 2, 'DisplayName', 'Explicit Euler');
hold on;
plot(t, y_rk, 'r--', 'LineWidth', 2, 'DisplayName', 'Runge-Kutta 4th Order');
plot(t_ode, y_ode, 'k:', 'LineWidth', 2, 'DisplayName', 'MATLAB ode45');
grid on;
box on;
title('Numerical Solutions of dy/dt = e^{t+y} - 1', 'FontWeight', 'bold');
xlabel('Time t');
ylabel('Solution y(t)');
legend('Location', 'northwest');
set(gca, 'FontSize', 11);