这个例子展示了如何使用dde23
求解一个有不连续导数的心血管模型。这个例子最初是由Ottesen[1]提供的。
方程组是
的条款 和 是同一方程在有和无时滞时的变式。 和 分别表示有和无时滞时的平均动脉压。
这个问题有一些物理参数:
动脉顺应性
静脉合规
外周阻力
静脉流出阻力
中风的体积
典型平均动脉压
系统受到外围压力的严重影响,而外围压力从 来 开始在 .因此,系统在点处的低阶导数存在不连续 .
常数解的历史是由物理参数定义的
为了在MATLAB中求解这个方程组,在调用延迟微分方程求解器之前,需要对方程、参数、延迟和历史进行编码dde23
,这是指具有恒定时间延迟的系统。您可以将所需的函数作为本地函数包含在文件的末尾(如这里所做的),或者将它们作为单独的、命名的文件保存在MATLAB路径的一个目录中。
首先,将问题的物理参数定义为结构中的场。
p.ca = 1.55;p.cv = 519;’变为贬义词= 1.05;’变为贬义词= 0.068;p.Vstr = 67.9;p.alpha0 = 93;p.alphas = 93;p.alphap = 93;p.alphaH = 0.84;p.beta0 = 7; p.betas = 7; p.betap = 7; p.betaH = 1.17; p.gammaH = 0;
接下来,创建一个变量τ
表示恒定的时间延迟
这些项的方程
.
τ= 4;
现在,创建一个函数来编写方程。这个函数应该有签名dydt = ddefun (t, y, Z, p)
,地点:
t
为时间(自变量)。
y
为解(因变量)。
Z (n, j)
接近延迟
,何处迟延
是由分量给出的j
的德(t, y)
.
p
是用于传递参数值的可选第四个输入。
前三个输入由求解器自动传递给函数,变量名决定如何编写方程。参数的结构p
在调用求解器时传递给函数。在这种情况下,延迟表示为:
Z (: 1)
函数dydt = ddefun (t, y, Z, p)如果t <= 600 p.R = 1.05;其他的p - r = 0.21 * exp(600-t) + 0.84;结束ylag = Z (: 1);Patau = ylag (1);Paoft = y (1);Pvoft = y (2);Hoft = y (3);pca = - (1 / (p.ca * p.R)...+ (1 / (p。c一个* p.R)) * Pvoft...+ (1/p.ca) * p.Vstr * Hoft;dPvdt = (1 / (p.cv * p.R)) * Paoft...- (1 / (p.cv * p.R))...+ 1 / (p.cv * p.r)) * Pvoft;t = 1 / (1 + (Patau / p.alpha)^p。贝塔);Tp = 1 / (1 + (p.a p / Paoft)^p。betap);/ (1 + p.gamma * Tp) / (1 + p.gamma * Tp)...- p betah * Tp;dydt = [dPadt;dPvdt;dHdt];结束
注意:在示例的末尾,所有函数都包含为局部函数。
接下来,创建一个向量来定义三个组件的常量解决方案历史 , , .解的历史就是解的时间 .
P0 = 93;Paval = P0;Pvval = (1 / (1 + p.R/ p.R)) * P0;Hval =(1 /(’变为贬义词* p.Vstr)) *(1 /(1 +’变为贬义词/’变为贬义词))* P0;历史= [Paval;Pvval;Hval];
使用ddeset
指出在…处存在不连续
.最后,定义积分区间
并使用dde23
解算器。指定ddefun
使用匿名函数来传递参数结构,p
.
选择= ddeset (“跳跃”, 600);Tspan = [0 1000];sol = dde23(@(t,y,Z) ddefun(t,y,Z,p), tau, history, tspan, options);
解决方案结构索尔
的字段sol.x
和sol.y
包含求解器所采取的内部时间步骤和相应时间的解。金宝搏官方网站(如果您需要在特定的点解决方案,您可以使用德瓦尔
在特定的点评估解决方案。)
绘制第三个解决方案分量(心率)与时间的关系。
情节(sol.x sol.y(3:))标题(“压力反射反馈机制的心率。”)包含(“t”) ylabel (“H (t)”)
这里列出的是DDE求解器的本地帮助函数dde23
调用来计算解决方案。或者,您可以将这些函数作为它们自己的文件保存在MATLAB路径的一个目录中。
函数dydt = ddefun (t, y, Z, p)正解%方程如果t <= 600 p.R = 1.05;其他的p - r = 0.21 * exp(600-t) + 0.84;结束ylag = Z (: 1);Patau = ylag (1);Paoft = y (1);Pvoft = y (2);Hoft = y (3);pca = - (1 / (p.ca * p.R)...+ (1 / (p。c一个* p.R)) * Pvoft...+ (1/p.ca) * p.Vstr * Hoft;dPvdt = (1 / (p.cv * p.R)) * Paoft...- (1 / (p.cv * p.R))...+ 1 / (p.cv * p.r)) * Pvoft;t = 1 / (1 + (Patau / p.alpha)^p。贝塔);Tp = 1 / (1 + (p.a p / Paoft)^p。betap);/ (1 + p.gamma * Tp) / (1 + p.gamma * Tp)...- p betah * Tp;dydt = [dPadt;dPvdt;dHdt];结束
[1] otsen, J. T. <带有时滞的气压反射反馈机制的建模>。j .数学。医学杂志。第36卷第1期,1997年,第41-63页。