MATLAB 数学应用 微分方程 时滞微分方程 中立型的初始值DDE

本文详细介绍了如何在MATLAB中使用ddensd函数解决一个中立型时滞微分方程(DDE),该方程涉及时间相关的时滞。首先定义了DDE的方程和时滞函数,然后创建了一个名为ddefun的函数来表示方程。接着,通过指定初始条件和积分区间,调用ddensd求解器得到解。最后,将两个不同的初始条件用于方程并绘制了解的图形以进行比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文讲述了如何使用 ddensd 求解具有时间相关时滞的初始值 DDE(时滞微分方程)方程组。

方程是:

y′(t)=2 cos(2t)y(t2)2 cos(t)+log(y′(t2))−log(2cos(t))−sin(t).y'(t)=2 cos(2t)y(\dfrac{t}{2})^{2 cos(t)}+log(y'(\dfrac{t}{2}))−log(2 cos(t))−sin(t).y(t)=2cos(2t)y(2t)2cos(t)+log(y(2t))log(2cos(t))sin(t).

此方程是初始值 DDE,因为在 t0t_0t0 处时滞为零。因此,不需要历史解来计算解,只需要初始值:

y(0)=1,y(0)=1,y(0)=1,

y′(0)=s.y'(0)=s.y(0)=s.

sss2+log(s)−log(2)=02+log(s)−log(2)=02+log(s)log(2)=0 的解。满足此方程的 sss 的值是 s1=2s_1=2s1=2s2=0.4063757399599599s_2=0.4063757399599599s2=0.4063757399599599

由于方程中的时滞存在于 y′y'y 项中,因此该方程称为中立型 DDE。

要在 MATLAB 中求解此方程,您需要先编写方程和时滞的代码,然后调用时滞微分方程求解器 ddensd,后者是中立型方程的求解器。您可以将所需的函数作为局部函数包含在文件末尾,或者将它们作为单独的文件保存在 MATLAB 路径上的目录中。

编写时滞代码

首先,编写一个匿名函数来定义方程中的迟滞。由于 y 和 y′ 都 t2t_2t2 形式的迟滞,因此只需要一个函数定义。此时滞函数后来传递给求解器两次,一次表示 yyy 的时滞,一次表示 y′y'y 的时滞。

delay = @(t,y) t/2; 

编写方程代码

现在,创建一个函数来编写方程代码。此函数应具有签名 yp = ddefun(t,y,ydel,ypdel),其中:

  • t 是时间(自变量)。
  • y 是解(因变量)。
  • ydel 包含 y 的时滞。
  • ypdel 包含 y 的时滞。

求解器会自动将这些输入传递给该函数,但是变量名称决定如何编写方程代码。在这种情况下:

  • ydel→y(t2)y(\dfrac{t}{2})y(2t)
  • ypdel →y′(t2)y'(\dfrac{t}{2})y(2t)
function yp = ddefun(t,y,ydel,ypdel) 
   yp = 2*cos(2*t)*ydel^(2*cos(t)) + log(ypdel) - log(2*cos(t)) - sin(t);
end

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

求解方程

最后,定义积分区间 [t0t_0t0 tft_ftf] 和初始值,然后使用 ddensd 求解器求解 DDE。通过在第四个输入参数的元胞数组中指定初始值,将初始值传递给求解器。

tspan = [0 0.1];
y0 = 1;
s1 = 2;
sol1 = ddensd(@ddefun, delay, delay, {y0,s1}, tspan);

第二次求解方程,这次使用 s 的备选值作为初始条件。

s2 = 0.4063757399599599;
sol2 = ddensd(@ddefun, delay, delay, {y0,s2}, tspan);

对解进行绘图

解结构体 sol1 和 sol2 具有字段 x 和 y,这些字段包含求解器在这些时间点所用的内部时间步和对应的解。但是,您可以使用 deval 计算在特定点的解。

绘制两个解以比较结果。

plot(sol1.x,sol1.y,sol2.x,sol2.y);
legend('y''(0) = 2','y''(0) = .40637..','Location','NorthWest');
xlabel('Time t');
ylabel('Solution y');
title('Two Solutions of Jackiewicz''s Initial-Value NDDE');

在这里插入图片描述

局部函数

此处列出了 DDE 求解器 ddensd 为计算解而调用的局部辅助函数。您也可以将这些函数作为它们自己的文件保存在 MATLAB 路径上的目录中。

function yp = ddefun(t,y,ydel,ypdel) 
   yp = 2*cos(2*t)*ydel^(2*cos(t)) + log(ypdel) - log(2*cos(t)) - sin(t);
end
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

结冰架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值