1.试求出下面隐式微分方程的数值解,并绘制出解曲线和相轨线,已知

2.在区间[0,1]上,求解如下迟滞微分方程

具有历史条件: 当t0时, y1(t)=exp(t+1), y2(t)=exp(t+0.5), y3(t)=sin(t+1), y4(t)=y1(t), y5(t)=y1(t),请务必建立一个函数文件exer1h.m来计算历史,并提供句柄,作为dde23的历史输入。注意ddefun和历史函数都必须返回列向量。
1.试求出下面隐式微分方程的数值解,并绘制出解曲线和相轨线,已知

2.在区间[0,1]上,求解如下迟滞微分方程

具有历史条件: 当t0时, y1(t)=exp(t+1), y2(t)=exp(t+0.5), y3(t)=sin(t+1), y4(t)=y1(t), y5(t)=y1(t),请务必建立一个函数文件exer1h.m来计算历史,并提供句柄,作为dde23的历史输入。注意ddefun和历史函数都必须返回列向量。
1.

y0 = [1; 1; 2; 2];
time = [0 10];
[t, y] = ode45(@diff_eqn, time, y0);
figure(1);
plot(t, y(:,1), 'r', t, y(:,3), 'b');
legend('x_1(t)', 'x_2(t)');
title('解曲线');
figure(2);
plot(y(:,1), y(:,2), 'r', y(:,3), y(:,4), 'b');
legend('相轨线 x_1 和 x_1''', '相轨线 x_2 和 x_2''');
title('相轨线');
function dydt = diff_eqn(t, y)
dydt = zeros(4,1);
dydt(1) = y(2);
dydt(2) = exp(-y(3)^2) - y(2)*y(4)*sin(y(1)*y(3)) - 5*y(2)*y(4)*cos(y(1)^2) - t^2*y(1)*y(3);
dydt(3) = y(4);
dydt(4) = sin(t) - y(2)*y(4) - y(4)*y(2)*sin(y(1)^2) - cos(y(4)*y(4));
end
2.

defun函数
function dydt = ddefun(t, y, Ylag)
dydt = zeros(5,1); % 初始化输出为5x1的列向量
dydt(1) = Ylag(5,1) + Ylag(3,1); % y'1(t)=y5(t-1)+y3(t-1)
dydt(2) = Ylag(1,1) + Ylag(2,2); % y'2(t)=y1(t-1)+y2(t-0.5)
dydt(3) = Ylag(3,1) + Ylag(1,2); % y'3(t)=y3(t-1)+y1(t-0.5)
dydt(4) = Ylag(5,1) * Ylag(4,1); % y'4(t)=y5(t-1)*y4(t-1)
dydt(5) = Ylag(1,1); % y'5(t)=y1(t-1)
end
历史函数history
function y = history(t)
y = zeros(5,1); % 初始化输出为5x1的列向量
y(1) = exp(t + 1);
y(2) = exp(t + 0.5);
y(3) = sin(t + 1);
y(4) = exp(t + 1); % 根据题目,y4(t) = y1(t)
y(5) = exp(t + 1); % 根据题目,y5(t) = y1(t)
end
脚本
% 设置迟滞时间
lags = [1, 0.5];
% 求解迟滞微分方程
sol = dde23(@ddefun, lags, @history, [0, 1]);
% 在特定的时间点评估解
t = 0:0.01:1;
y = deval(sol, t);
% 绘制解的图形
figure;
plot(t, y);
legend('y1(t)', 'y2(t)', 'y3(t)', 'y4(t)', 'y5(t)');
xlabel('时间 t');
ylabel('解 y(t)');
title('迟滞微分方程的解');