这个例子展示了如何使用ddensd
求解具有时滞的初值时滞微分方程组。这个例子最初由Jackiewicz[1]提出。
方程是
这个方程是最初的价值DDE,因为时间延迟在 .因此,无需使用求解历史来计算解,只需要初始值:
是解 .的值 满足这个方程的是 和 .
由于方程中的时间延迟在a 这个方程叫做a中性DDE.
为了在MATLAB中求解这个方程,您需要在调用延迟微分方程求解器之前对方程和延迟进行编码ddensd
,它是中立型方程的求解器。您可以将所需的函数作为本地函数包含在文件的末尾(就像这里所做的那样),或者将它们作为单独的文件保存在MATLAB路径中的一个目录中。
首先,编写一个匿名函数来定义等式中的延迟。因为两个 和 表格有延误 ,只需要一个函数定义。这个延迟函数随后被传递给求解器两次,第一次是为了指示延迟 和一次 .
Delay = @(t,y) t/2;
现在,创建一个函数来编写这个方程。这个函数应该具有签名yp = ddefun (t y所说,ypdel)
,地点:
t
是时间(自变量)。
y
是解(因变量)。
所说
包含的延迟y.
ypdel
包含的延迟
.
这些输入由求解器自动传递给函数,但变量名决定如何编写方程。在这种情况下:
所说
ypdel
函数yp = ddefun (t y所说,ypdel) yp = 2 * cos (2 * t *所说^ (2 * cos (t)) +日志(ypdel)——日志(2 * cos (t))——罪(t);结束
注意:在示例的末尾,所有函数都是作为局部函数包含的。
最后,定义积分区间
的初始值,然后利用ddensd
解算器。通过在第四个输入参数的单元格数组中指定初始值,将它们传递给求解器。
Tspan = [0 0.1];y0 = 1;s1 = 2;Sol1 = ddensd(@ddefun, delay, delay, {y0,s1}, tspan);
再解一次方程,这次用的是 对于初始条件。
s2 = 0.4063757399599599;Sol2 = ddensd(@ddefun, delay, delay, {y0,s2}, tspan);
解决方案结构sol1
和sol2
有足够的场地x
和y
包含求解器在这些时间采取的内部时间步长和相应的解。金宝搏官方网站但是,您可以使用德瓦尔
求特定点处解的值。
画出两种解决方案来比较结果金宝搏官方网站。
情节(sol1.x sol1.y、sol2.x sol2.y);传奇(“y”(0)= 2”,“y”(0)= .40637 . .”,“位置”,“西北”);包含(“t”);ylabel (“解决方案y”);标题(Jacki金宝搏官方网站ewicz初始值NDDE的两种解);
这里列出的是DDE求解器的本地帮助函数ddensd
调用来计算解决方案。或者,您可以将这些函数作为它们自己的文件保存在MATLAB路径中的一个目录中。
函数yp = ddefun (t y所说,ypdel) yp = 2 * cos (2 * t *所说^ (2 * cos (t)) +日志(ypdel)——日志(2 * cos (t))——罪(t);结束
中立型泛函微分方程的任意阶一步方法数值分析杂志。第21卷,第3卷。1984.486 - 511页。