声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4032|回复: 13

[编程技巧] 如何求解时滞(时延)方程?

[复制链接]
发表于 2006-10-18 13:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
有这样子一个时滞方程(附图):[dy(1)/dt;dy(2)/dt]=-C*[y(1);y(2)]+A*[tanh(y(1));tanh(y(2))]+B*[tanh(y(1)(t-T));tanh(y(2)(t-T)]
其中时滞T=1+0.1*sin(t);
C=[1 0;0 1];
A=[2.0 -0.1;-5.0 3.0];
B=[-1.5 -0.1;-0.2 -2.5];
请教怎么样用MATLAB来求解呢?
是龙格-库塔法ode45吗?怎么写代码?
谢谢

[ 本帖最后由 xsj3917 于 2006-10-19 09:20 编辑 ]

时滞方程

时滞方程

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2006-10-19 09:04 | 显示全部楼层
ode45不能解你的方程,你参考一下matlab的帮助文件,你的方程要用dde23 去解
Solve delay differential equations (DDEs) with constant delays
我也没仔细看
自己加把劲,你的问题很简单的...
 楼主| 发表于 2006-10-19 09:18 | 显示全部楼层
谢谢您的回复,dde23对应的时滞是常数,但是这里时滞项是一个变量,而非常量,所以说难办啊
能给个Example吗?

[ 本帖最后由 xsj3917 于 2006-10-19 10:37 编辑 ]
发表于 2006-10-19 09:22 | 显示全部楼层
参考matlab自带的例子ddex1
 楼主| 发表于 2006-10-19 16:50 | 显示全部楼层
很遗憾ddex1 的时滞也是常数
发表于 2006-10-20 10:17 | 显示全部楼层
原帖由 xsj3917 于 2006-10-19 16:50 发表
很遗憾ddex1 的时滞也是常数



常数和非常数类似的,dde23的完整调用格式是
sol = dde23(ddefun,lags,history,tspan,options,p1,p2,...)

如果非常话,你可以通过p1,p2...进行传递
发表于 2007-7-1 23:43 | 显示全部楼层
对于时变时滞的微分方程需要用SIMLINK来做了,里面有专门的可变时滞的模块,楼主可以尝试一下。当然,不排除用M语言来实现,要麻烦些。但是DDE23还不知道如何解决时变时滞的问题。请6楼的朋友指点。
发表于 2007-7-2 10:34 | 显示全部楼层
龙格-库塔法不可以球吗?
发表于 2010-3-27 21:27 | 显示全部楼层

请教含有延时的微分代数方程的求解

你好,我的课题中涉及到含有延时的微分代数方程的求解,我想请教一下在.m文件中如何求解这类方程呢?
发表于 2011-5-5 23:25 | 显示全部楼层
你好,这个问题已经解决了吗?我现在也遇到了这个问题,麻烦看到留言回复,或者加我:83493430
谢谢!
 楼主| 发表于 2011-5-6 09:13 | 显示全部楼层
因为Matlab运行速度慢的原因,我最终用C做的仿真,就是根据龙格-库塔法的公式用c语言写的代码
发表于 2011-5-6 09:18 | 显示全部楼层
回复 11 # xsj3917 的帖子

可否分享下你的成果呢?
 楼主| 发表于 2011-5-6 09:25 | 显示全部楼层
double *lgkt(double x, double x1, double y, double y1)  //龙格-库塔法迭代
{
        double* u=new double[2];
        kx1=-x+A[0][0]*g(x)+A[0][1]*g(y)+B[0][0]*g(x1)+B[0][1]*g(y1);
        ky1=-y+A[1][0]*g(x)+A[1][1]*g(y)+B[1][0]*g(x1)+B[1][1]*g(y1);
        kx2=-(x+h*kx1/2)+A[0][0]*g(x+h*kx1/2)+A[0][1]*g(y+h*ky1/2)
                +B[0][0]*g(x1+h*kx1/2)+B[0][1]*g(y1+h*ky1/2);
        ky2=-(y+h*ky1/2)+A[1][0]*g(x+h*kx1/2)+A[1][1]*g(y+h*ky1/2)
                +B[1][0]*g(x1+h*kx1/2)+B[1][1]*g(y1+h*ky1/2);
        kx3=-(x+h*kx2/2)+A[0][0]*g(x+h*kx2/2)+A[0][1]*g(y+h*ky2/2)
                +B[0][0]*g(x1+h*kx2/2)+B[0][1]*g(y1+h*ky2/2);
        ky3=-(y+h*ky2/2)+A[1][0]*g(x+h*kx2/2)+A[1][1]*g(y+h*ky2/2)
                +B[1][0]*g(x1+h*kx2/2)+B[1][1]*g(y1+h*ky2/2);
        kx4=-(x+h*kx3)+A[0][0]*g(x+h*kx3)+A[0][1]*g(y+h*ky3)
                +B[0][0]*g(x1+h*kx3)+B[0][1]*g(y1+h*ky3);
        ky4=-(y+h*ky3)+A[1][0]*g(x+h*kx3)+A[1][1]*g(y+h*ky3)
                +B[1][0]*g(x1+h*kx3)+B[1][1]*g(y1+h*ky3);
        x=x+h*(kx1+2*kx2+2*kx3+kx4)/6;
        y=y+h*(ky1+2*ky2+2*ky3+ky4)/6;
        u[0]=x;
        u[1]=y;
        return u;
}
g()是双曲正切函数

评分

1

查看全部评分

发表于 2011-7-8 09:48 | 显示全部楼层
暂时看不太懂,但是给了我方向
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-18 13:19 , Processed in 0.061454 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表