杭州锐达数字技术有限公司
查看: 18849|回复: 101
打印 上一主题 下一主题

[稳定性与分岔] 非自治系统分岔图绘制实例——有疑问的都到这里面来

? [复制链接]
跳转到指定楼层
楼主
发表于 2008-4-10 15:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
近期关于分岔图计算的疑问贴比较多,这里以duffing系统为例,把非自治系统分岔图绘制的问题贴出来,有问题的都可以参考该例!
duffing系统:
function dx=duffing(t,X)
global F wd;
r=0.25;
x=X(1);
y=X(2);
psi=X(3);
dx=zeros(3,1);
dx(1)=y;
dx(2)=-r*y-x^3+F*cos(psi);
dx(3)=wd;

分岔图绘制程序:
function duffing_bifur_F
clear;
global F wd;
wd=1.0;
range=[0.1:0.001:0.35];
period=2*pi/wd;
k=0;
YY1=[];
step=2*pi/100;??%步长。
for F=range
? ? y0=[0 0.001 0];
? ? F
? ? k=k+1;
? ? % discard the first 60 periodic data;
? ? %除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
? ? tspan=[0:step:60*period];
? ? [t,Y]=ode45(@duffing,tspan,y0);
? ? y0=Y(end,:);
? ? j=1;
? ? for i=60:200
? ?? ???tspan=[i*period:step:(i+1)*period];
? ?? ???[t,Y]=ode45(@duffing,tspan,y0);
? ?? ???YY1(k,j)=Y(end,1);? ?% get the omega data from every period end
? ?? ???j=j+1;? ?? ?? ?? ?? ?%取出每一个周期内的第一个解的最后一个值。
? ?? ???y0=Y(end,:);
? ? end
end
bifdata=YY1(:,end-51:end);
plot(range,bifdata,'k.','markersize',1);


下面的图是其中计算得到的一个结果!

点评

反对: 5.0
反对: 5
你们认为这个程序正确吗?我认为是不对的!至少请说明为何必须只取最后一个,除了瞬态响应之后,周期的部分会出现大片的点,说明这个是不正确的或者至少不精确的!都依赖于 ? 发表于 2011-5-7 09:46

评分

1

查看全部评分

沙发
发表于 2008-4-12 17:12 | 只看该作者
你再换个非自治系统试验一下,看看这个程序是否合适?
板凳
?楼主| 发表于 2008-4-12 18:38 | 只看该作者
合适的,我试过了!
地板
发表于 2008-4-13 10:02 | 只看该作者
有几处看不明白:loveliness:
yo是不是表示x(1),X(2),X(3)的初值呀?
YY1=[],??YY1(k??j),? ?YY1(:,end-51:end)又分别表示的是什么意思呢?
5
发表于 2008-4-13 12:41 | 只看该作者
这个程序 我原来贴在我的个人空间里面的,可是我没有做很多验证,不知道合适不?
还希望大家多多验证其他的系统试验一下!
回答上边的疑问:
1. yo是表示x(1),X(2),X(3)的初值!
2. YY1=[],??定义一个空数组,以便以后存储数值!
YY1(k??j),? ?表示取出每一个周期内的第一个解的最后一个值赋值到上边的这个空数组中!
YY1(:,end-51:end) 表示画积分200-60 后的200-60-51个数值的图像!

评分

1

查看全部评分

6
发表于 2008-4-13 14:40 | 只看该作者

回复 5楼 的帖子

谢谢指点呵呵!我也试试
7
?楼主| 发表于 2008-4-13 19:11 | 只看该作者

回复 5楼 的帖子

把你的东西弄过来了, 呵呵,不要见怪啊!
8
发表于 2009-4-9 10:44 | 只看该作者

回复 楼主 octopussheng 的帖子

你好,我也调试过这个程序做分岔图,这个duffing方程是一个外激方程,我现在要做一个参激方程的分岔图,即dx(2)=-r*y-x^3+F*x*cos(psi),F后多一个x,分岔图就做不出来了,请问是什么原因啊?我是新手,可能理论就有些不对,希望大家帮帮忙!
9
发表于 2009-4-9 15:35 | 只看该作者
楼主,用你贴出的程序计算得到的图,与你贴出的图完全不一样。附件我发不上去,不知如何将我的计算结果贴出来?盼望你的回复
10
发表于 2009-4-11 21:53 | 只看该作者

回复 9楼 学习者 的帖子

其本上差不多了,


附件你要点下面那个“发表新回复”之后就可以了
11
发表于 2009-4-12 19:15 | 只看该作者
原帖由 linyxff 于 2009-4-9 10:44 发表
你好,我也调试过这个程序做分岔图,这个duffing方程是一个外激方程,我现在要做一个参激方程的分岔图,即dx(2)=-r*y-x^3+F*x*cos(psi),F后多一个x,分岔图就做不出来了,请问是什么原因啊?我是新手,可能理论就有 ...

不能吧,应该是问题不大啊,把你的程序贴上来瞅瞅
12
发表于 2009-4-13 13:06 | 只看该作者

我的计算结果

评分

1

查看全部评分

13
发表于 2009-4-13 13:13 | 只看该作者

回复 10楼无水的帖子

无水:上面是我拷贝楼主的程序,修改其中的range=[0.1:0.001:0.5]的计算图,为何与楼主贴出的图差距这么大?盼复
14
发表于 2009-4-13 18:40 | 只看该作者

回复 13楼 学习者 的帖子

确实差异好大哦,你Poincare截面取点没有问题吧?都是用1楼的程序嘛?
15
发表于 2009-4-13 19:29 | 只看该作者
是的。我用该程序在不同的机子上算了4遍,结果相同
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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