sssssxxxxx921 发表于 2007-7-11 22:10

原帖由 octopussheng 于 2007-7-11 15:53 发表 http://www.chinavib.com/forum/images/common/back.gif
我觉得做分岔图程序的思路主要分一下的几块:
(1)确定分岔参数的取值范围,并给出变化步长
(2)做一个循环,求解微分方程
(3)可以另做一个判断大小的函数如getmax(),从微分方程的解向量中取出一个极值 ...
第三步:做一个判断大小的函数如getmax(),从微分方程的解向量中取出一个极值 ... ,

这有什么用啊,做分岔图不用这一步应该也可以的啊
很疑惑

octopussheng 发表于 2007-7-12 08:06

回复sssssxxxxx921

这一步是从微分方程的解向量中取一个极值点,并在图中画出来,我是这么做的

无水1324 发表于 2007-7-12 08:14

回复 #18 sssssxxxxx921 的帖子

我也没有看懂,为什么这样做?
你知道这样的原因吗?

[ 本帖最后由 xinyuxf 于 2007-7-13 09:21 编辑 ]

octopussheng 发表于 2007-7-12 08:22

回复无水

我把采用这种方法的一个lorenz分岔图的例子列在下面,一看就明白了!
function dy = Lorenz(t,y)

global r

dy=zeros(3,1);
dy(1)=-10*(y(1)-y(2));
dy(2)=-y(1)*y(3)+r*y(1)-y(2);
dy(3)=y(1)*y(2)-8*y(3)/3;

下面是求解程序
clear all
global r
t0=;%积分时间
y0=;

%bifurcation
for r=1:0.05:30 %r的变化精度
    =ode45('Lorenz',t0,y0);
    =getmax(y(:,1));

    plot(r,Xmax,'b','markersize',1)
    hold on
    clear Xmax
end
xlabel('r')
ylabel('Xmax')

下面是getmax程序
function = getmax(y)
a=length(y);
j=1;
for i=(a-1)/2:a
    b=(y(i,1)-y(i-2,1))/2;
    c=(y(i,1)+y(i-2,1))/2-y(i-1,1);
    if y(i-2,1)<=y(i-1,1)&y(i-1,1)>=y(i,1)&c==0
      Xmax(j)=y(i-1,1);
      j=j+1;
    elseif y(i-2,1)<=y(i-1,1)&y(i-1,1)>=y(i,1)
      Xmax(j)=y(i-1,1)-b^2/(4*c);
      j=j+1;
    end
end

无水1324 发表于 2007-7-12 08:34

原帖由 octopussheng 于 2007-7-12 08:22 发表 http://www.chinavib.com/forum/images/common/back.gif
我把采用这种方法的一个lorenz分岔图的例子列在下面,一看就明白了!
function dy = Lorenz(t,y)

global r

dy=zeros(3,1);
dy(1)=-10*(y(1)-y(2));
dy(2)=-y(1)*y(3)+r*y(1)-y(2);
dy(3)=y(1)*y(2)-8 ...


谢谢
我仔细看一下,这种做法的意思是什么?是否具有通用性?

octopussheng 发表于 2007-7-12 08:39

意思我在前面已经一条一条写了,通用性还是有的,呵呵!无水可以帮助再测试一下哦!

无水1324 发表于 2007-7-12 08:53

我试了一下,得到的图还可以。就是没有去算其它的系统了。有时间试试!

octopussheng 发表于 2007-7-12 09:02

哦?可以的吧,我现在就在算一个,有结果了马上贴出来!

sssssxxxxx921 发表于 2007-7-12 09:03

回复 #19 octopussheng 的帖子

取一个极值点?:@(
这有什么原因吗    你为什么取极值点   总有一定的原因吧
或者说引用的出处   能说一下吗

octopussheng 发表于 2007-7-12 09:39

具体出处我也说不上来了,不过可以参考一下闻邦椿的《非线性振动理论中的解析方法及工程应用》

无水1324 发表于 2007-7-12 10:06

这个大概的意思是:周期运动的话,会出现相同的最大值,其实道理上与 闪频差不多,这是这种方法在系统的解出现跳跃的时候,是不准确的。个人的想法

mechanic05 发表于 2007-7-12 10:19

回复 #15 无水1324 的帖子

请教前辈:
我的参数调整后还是老样子,就是一直在算,出来数据,最后死机.到是没有出现错误提示.感觉是不收敛还是怎么的.这是什么原因?其实关于这个问题的混沌判据:如相图\时程图\LYAPUNOV指数等我都已经作出.这是个参数激励问题.只是想仔细了解参数对系统行为的影响过程.请指教.甚谢!!:@)

[ 本帖最后由 无水1324 于 2007-7-12 10:35 编辑 ]

无水1324 发表于 2007-7-12 10:36

回复 #30 mechanic05 的帖子

你的还是那个问题,计算的速度比较慢,但是还是可以出来结果,matlab出现死机,应该是“未响应”吧

无水1324 发表于 2007-7-12 10:39

原帖由 mechanic05 于 2007-7-12 10:19 发表 http://www.chinavib.com/forum/images/common/back.gif
请教前辈:
我的参数调整后还是老样子,就是一直在算,出来数据,最后死机.到是没有出现错误提示.感觉是不收敛还是怎么的.这是什么原因?其实关于这个问题的混沌判据:如相图\时程图\LYAPUNOV指数 ...


了解参数变化时的影响可以
1、画出参数变化时的LE指数图
2、画出分岔图。
你这里就是计算的速度比较慢了一点。

mechanic05 发表于 2007-7-12 10:39

回复 #16 无水1324 的帖子

前辈,在我的机子上怎摸也运行不通.就是一个劲在计算,但不出结果.看来你说的运行时间比较长,也就几分钟.不知道是何原因??:@)
页: 1 [2] 3 4 5 6 7 8 9
查看完整版本: 请教关于分岔程序