clear
clc
close all
% 定义 a 的范围
a_values = 0:0.01:5;
% 初始条件
Y0 = [1; 0];
% 时间步长
dt = 0.01;
% 时间范围
t_end = dt * length(a_values);
t_total = 0:dt:t_end;
% 初始化存储结果的数组
Y_total = zeros(length(t_total), 1);
% 设置初始条件
Y_current = Y0;
Y_total(1) = Y0(1);
% 循环遍历每个 a 值
for i = 1:length(a_values)
a = a_values(i);
% 定义微分方程组
dydt = @(t, Y) [Y(2); a - Y(1) - Y(2)];
% 使用 ode45 求解
tspan = [0 dt];
[t, Y] = ode45(dydt, tspan, Y_current);
% 更新当前解
Y_current = Y(end, :);
Y_total(i + 1) = Y_current(1);
end
% 绘制结果
figure;
plot(t_total, Y_total, '-o');
title('Solution of y'''' + y'' + y = a with varying a');
xlabel('Time t');
ylabel('Solution y');
grid on;