【发布时间】:2021-03-03 21:46:30
【问题描述】:
我正在尝试学习如何在 Matlab 上解决 DDE(延迟差异。eq),并且我正在使用一个非常有用的 (Youtube-tutorial) 来解决示例。在 3 维系统的情况下,代码如下:
tau = [1 0.5];
tf = 10;
sol = dde23(@dde,tau,@history,[0 tf]);
t = linspace(0,tf,200);
y = deval(sol,t);
figure(1)
plot(t,y)
function y = history(t)
y = [1;0;-1];
end
按照教程的dde函数是:
function dydt = dde(t,y,tau)
y1tau1 = tau(:,1);
y2tau2 = tau(:,2);
dydt = [y1tau1(1)
y(1) - y1tau1(1) + y2tau2(2)
y(2) - y(3)];
end
,如果我理解的话,我们有一个 3by2 矩阵,其中包含状态变量及其各自的延迟:第一列是三个状态变量中每一个的第一个延迟 tau_1,第二列是 tau_2 . 然而,这个矩阵只有 2 个非零分量,它们是 y_1 的 tau_1 延迟和 y_2 的 tau_2。 鉴于此,我认为它会是相同的(至少在这种情况下,我们只有 y_1 的一个延迟和 y_2 的一个延迟),就好像函数是:
function dydt = dde(t,y,tau)
dydt = [tau(1)
y(1) - tau(1) + tau(2)
y(2) - y(3)];
end
我为他们两个都运行了脚本,结果在质量和数量上都完全不同,我不知道为什么。有人能解释一下区别吗?
【问题讨论】:
标签: matlab differential-equations