声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1530|回复: 7

[稳定性与分岔] 求助,大家帮我看看这个分岔图

[复制链接]
发表于 2009-3-23 19:18 | 显示全部楼层 |阅读模式

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

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

x
大侠们,帮我看下这个分岔图,觉得不太对,为什么在纵轴0.0附近有条直线,我一直找不到原因。希望给点提示。非常感谢!
1分岔图.jpg
回复
分享到:

使用道具 举报

发表于 2009-3-24 08:23 | 显示全部楼层

回复 楼主 cailiang 的帖子

你 画 相图,里面经过0点没有 ?
 楼主| 发表于 2009-3-24 09:13 | 显示全部楼层
相图里经过零点了,这个分岔图是满足庞加莱截面里画出来的,那怎么解决呢?
发表于 2009-3-24 12:19 | 显示全部楼层

回复 板凳 cailiang 的帖子

是啊
那你怎么会找不到这个零点呢?没有看懂你的问题
 楼主| 发表于 2009-3-24 19:00 | 显示全部楼层
相图是这个样子,我画出来的和这个一样,但是分岔图就不一样了,它的就没有那零点的一条直线,程序也不难啊,可就是找不到原因啊?
1相图(vc=1.0).jpg
发表于 2009-3-24 19:14 | 显示全部楼层
能把程序发出来看看吗?
 楼主| 发表于 2009-3-25 10:12 | 显示全部楼层
还有个问题就是在计算李雅普诺夫指数时,是不是一定要将非自治的系统通过变换转化成自治的系统?急求!
你有想法吗?是相图的还是分岔图的?
 楼主| 发表于 2009-3-25 14:16 | 显示全部楼层
这是分岔图的程序:
real function f(v,w)
if (v.eq.0.0) then
    f=-1.0
else if (v.lt.0.0) then
    f=1.0 /(1.0+v*w)
else if (v.gt.0.0) then
    f=-1.0/(1.0+v*w)
end if
end function f
real a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,d1,d2,d3,d4
real x1,x10,x2,x20,y10,y20,t0,t,h,w,u1e,u2e,u
g1(t,x1,x2)=x2-x1-(x1-0.1*t)
g2(t,x1,x2)=x1-x2-(x2-0.1*t)
open(1,FILE='1分岔图.TXT',STATUS='old')
open(2,FILE='2分岔图.TXT',STATUS='old')
x10=0.00367950
y10=0.0
x20=0.00613586           
y20=0.0
h=0.001
do w=0.0,1.5,0.005
  do t0=0.0,500.0,0.001
   a1=h*y10
   b1=h*g1(t0,x10,x20)+h*f(y10,w)
   c1=h*y20
   d1=h*g2(t0,x10,x20)+h*f(y20,w)
   a2=h*(y10+1.0*b1/2)
   b2=h*g1(t0+1.0*h/2,x10+1.0*a1/2,x20+1.0*c1/2)+h*f(y10+1.0*b1/2,w)
   c2=h*(y20+1.0*d1/2)
   d2=h*g2(t0+1.0*h/2,x10+1.0*a1/2,x20+1.0*c1/2)+h*f(y20+1.0*d1/2,w)
   a3=h*(y10+1.0*b2/2)
   b3=h*g1(t0+1.0*h/2,x10+1.0*a2/2,x20+1.0*c2/2)+h*f(y10+1.0*b2/2,w)
   c3=h*(y20+1.0*d2/2)
   d3=h*g2(t0+1.0*h/2,x10+1.0*a2/2,x20+1.0*c2/2)+h*f(y20+1.0*d2/2,w)
   a4=h*(y10+b3)
   b4=h*g1(t0+h,x10+a3,x20+c3)+h*f(y10+b3,w)
   c4=h*(y20+d3)
   d4=h*g2(t0+h,x10+a3,x20+c3)+h*f(y20+d3,w)
   x10=x10+1.0*(a1+2.0*a2+2.0*a3+a4)/6
   y10=y10+1.0*(b1+2.0*b2+2.0*b3+b4)/6
   x20=x20+1.0*(c1+2.0*c2+2.0*c3+c4)/6
   y20=y20+1.0*(d1+2.0*d2+2.0*d3+d4)/6
   u1e=0.1*t0-1.0/(1.0+0.1*w)
   u2e=0.1*t0-1.0/(1.0+0.1*w)
   u=1.0*(x10-u1e+x20-u2e)/2.0
   if (u==0.0.and.t0>50.0) then
    write(1,*)w,'   ',y10
   end if
   !if (x20==u2e.and.t0>3000.0) then
    !write(2,*)w,'   ',y20
   !end if
   end do
end do
end
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-19 18:40 , Processed in 0.067884 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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