主要内容

具有不连续的心血管模型DDE

这个例子展示了如何使用dde23求解一个有不连续导数的心血管模型。这个例子最初是由Ottesen[1]提供的。

方程组是

P 一个 ˙ t - 1 c 一个 R P 一个 t + 1 c 一个 R P v t + 1 c 一个 V str P 一个 τ t H t

P ˙ v t 1 c v R P 一个 t - 1 c v R + 1 c v r P v t

H ˙ t α H T 年代 1 + γ H T p - β H T p

的条款 T 年代 T p 是同一方程在有和无时滞时的变式。 P 一个 τ P 一个 分别表示有和无时滞时的平均动脉压。

T 年代 1 1 + P 一个 τ α 年代 β 年代

T p 1 1 + P 一个 α p - β p

这个问题有一些物理参数:

  • 动脉顺应性 c 一个 1 55 毫升 / 毫米汞柱

  • 静脉合规 c v 519 毫升 / 毫米汞柱

  • 外周阻力 R 1 05 0 84 毫米汞柱 年代 / 毫升

  • 静脉流出阻力 r 0 068 毫米汞柱 年代 / 毫升

  • 中风的体积 V str 67 9 77 9 毫升

  • 典型平均动脉压 P 0 93 毫米汞柱

  • α 0 α 年代 α p 93 121 毫米汞柱

  • α H 0 84 证券交易委员会 - 2

  • β 0 β 年代 β p 7

  • β H 1 17

  • γ H 0

系统受到外围压力的严重影响,而外围压力从 R 1 05 R 0 84 开始在 t 600 .因此,系统在点处的低阶导数存在不连续 t 600

常数解的历史是由物理参数定义的

P 一个 P 0 P v t 1 1 + R r P 0 H t 1 房车 str 1 1 + r R P 0

为了在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;

代码延迟

接下来,创建一个变量τ表示恒定的时间延迟 τ 这些项的方程 P 一个 τ t P 一个 t - τ

τ= 4;

代码方程

现在,创建一个函数来编写方程。这个函数应该有签名dydt = ddefun (t, y, Z, p),地点:

  • t为时间(自变量)。

  • y为解(因变量)。

  • Z (n, j)接近延迟 y n d j ,何处迟延 d j 是由分量给出的j德(t, y)

  • p是用于传递参数值的可选第四个输入。

前三个输入由求解器自动传递给函数,变量名决定如何编写方程。参数的结构p在调用求解器时传递给函数。在这种情况下,延迟表示为:

  • Z (: 1) P 一个 t - τ

函数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];结束

注意:在示例的末尾,所有函数都包含为局部函数。

代码解决方案历史

接下来,创建一个向量来定义三个组件的常量解决方案历史 P 一个 P v , H .解的历史就是解的时间 t t 0

P0 = 93;Paval = P0;Pvval = (1 / (1 + p.R/ p.R)) * P0;Hval =(1 /(’变为贬义词* p.Vstr)) *(1 /(1 +’变为贬义词/’变为贬义词))* P0;历史= [Paval;Pvval;Hval];

解决方程

使用ddeset指出在…处存在不连续 t 600 .最后,定义积分区间 t 0 t f 并使用dde23解算器。指定ddefun使用匿名函数来传递参数结构,p

选择= ddeset (“跳跃”, 600);Tspan = [0 1000];sol = dde23(@(t,y,Z) ddefun(t,y,Z,p), tau, history, tspan, options);

策划解决方案

解决方案结构索尔的字段sol.xsol.y包含求解器所采取的内部时间步骤和相应时间的解。金宝搏官方网站(如果您需要在特定的点解决方案,您可以使用德瓦尔在特定的点评估解决方案。)

绘制第三个解决方案分量(心率)与时间的关系。

情节(sol.x sol.y(3:))标题(“压力反射反馈机制的心率。”)包含(“t”) ylabel (“H (t)”

图中包含一个坐标轴。标题为“压力反射反馈机制的心率”的轴。包含类型为line的对象。

本地函数

这里列出的是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页。

另请参阅

|||

相关的话题