声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2043|回复: 10

[稳定性与分岔] 有没有可参考的两个自由度的分岔图程序?

[复制链接]
发表于 2011-5-5 16:48 | 显示全部楼层 |阅读模式

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

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

x
单自由度分岔和两个自由度分岔图的程序的区别?有没有可参考的两个自由度的分岔图程序
回复
分享到:

使用道具 举报

发表于 2011-5-5 22:36 | 显示全部楼层
回复 1 # lihaitao123 的帖子

论坛上已有很多相关的程序,请自行搜索
 楼主| 发表于 2011-5-6 11:16 | 显示全部楼层
回复 2 # hsfy919 的帖子

我找了一个duffing改了一下,不知道咋回事
function du=CQ(t,u,flag,f)
global     delta1 delta2 alpha1 xi1 alpha2 xi2  beta2  omega
omega = 0.6283;
beta2 =151.4993;
delta1 =7.2858e+006;
alpha1 = 3.7452e+010;
xi1 = 37.8748;
alpha2 =23.4969;
delta2 =19.5807;
xi2 =3.7875e+003;
      du=[u(2);
        -delta1*u(1)-alpha1*u(1)^3-xi1*u(2)+alpha2*u(3)+alpha2/2*u(1)*cos(2*omega*t)-beta2*u(4)+1/2*beta2*u(2)-1/2*beta2*u(2)*cos(2*omega*t)+f*sin(omega*t);
        u(4);
        -delta2*u(3)-xi2*u(4)+delta2*u(1)*sin(omega*t)+xi2*u(2)*sin(omega*t)];


clear all;
clc
global omega delta1 delta2 alpha1 xi1 alpha2 xi2  beta2 f  ;
omega = 0.6283;
beta2 =151.4993;
delta1 =7.2858e+006;
alpha1 = 3.7452e+010;
xi1 = 37.8748;
alpha2 =23.4969;
delta2 =19.5807;
xi2 =3.7875e+003;
range=[1:0.05:10];
period=2*pi/omega; %
k=0;
YY1=[];
step=2*pi/10;  %步长。
for f=range
    disp(f)
    y0=[0 0 0 0];
    k=k+1;
    % discard the first 60 periodic data;
    %除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
    tspan=[0:step:60*period];
    [t,Y]=ode45('CQ',tspan,y0);
    y0=Y(end,:);
    j=1;
    for i=60:200
        tspan=[i*period:step:(i+1)*period];
        [t,Y]=ode45(@CQ,tspan,u0);
        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);
报错
??? Input argument "u" is undefined.
 楼主| 发表于 2011-5-6 14:21 | 显示全部楼层
请问:当omega beta2 delta1 alpha1 xi1 alpha2 delta2
xi2  都取1,能运行,别的就基本算不了,有啥好办法没
发表于 2011-5-7 01:07 | 显示全部楼层
回复 4 # lihaitao123 的帖子

我运行了你的程序,发现错误不是你所说的
??? Input argument "f" is undefined.
Error in ==> CQ at 11
      du=[u(2);
错误是说你的“f”没有定义,其实你的f值没有传递到函数文件
对你的主程序进行了修改
clear all;
clc
global omega delta1 delta2 alpha1 xi1 alpha2 xi2  beta2 f  ;
omega = 0.6283;
beta2 =151.4993;
delta1 =7.2858e+006;
alpha1 = 3.7452e+010;
xi1 = 37.8748;
alpha2 =23.4969;
delta2 =19.5807;
xi2 =3.7875e+003;
range=[1:0.05:10];
period=2*pi/omega; %
k=0;
YY1=[];
step=2*pi/10;  %步长。

for f=range
    disp(f)
    y0=[0 0 0 0];
    k=k+1;
    % discard the first 60 periodic data;
    %除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
    tspan=[0:step:60*period];
    [t,Y]=ode45('CQ',tspan,y0,[],f);
    y0=Y(end,:);
    j=1;
    for i=60:200
        tspan=[i*period:step:(i+1)*period];
        [t,Y]=ode45('CQ',tspan,u0,[],f);
        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);
程序是通了,至于有警告,是因为你取的参数有问题,一般是方程本身造成的
 楼主| 发表于 2011-5-7 09:28 | 显示全部楼层
回复 5 # hsfy919 的帖子

谢谢主任,现在程序能运行了,我把CQ函数,变了就行了。再问一个问题,一般分岔图的的周期都是period=2*pi/omega?omega是激励频率。
发表于 2011-5-7 09:30 | 显示全部楼层
本帖最后由 liliangbiao 于 2011-5-7 09:40 编辑

先弄懂你要做的是什么,弄懂你引用的程序是基于怎样的思想编写的,程序实现的是什么,能实现什么,不要一味的不假思索的移植过来,拿过来就用。程序调试通了,又能如何?程序通了,就能说明程序能实现你要的结果!?版主懂不懂?别跟着瞎起哄,我建议版主多给出思想,别老是瞎指挥!说的有点不客气了,还是见谅!现在这个版块越来越不好了,简直都是在索取,为何不交流思想??版主我觉得很有责任来改进这些!
我还是觉得我们应该交流思想,程序现在满天飞,不懂又有何用?java不懂不要紧,C++不懂不要紧,。。。只要懂得思想,移植到自己会编写的程序上,都是没问题的,思想比程序重要!

 楼主| 发表于 2011-5-7 20:59 | 显示全部楼层
回复 7 # liliangbiao 的帖子

学长批评的是。
 楼主| 发表于 2011-5-7 21:01 | 显示全部楼层
理论的提高比收获一个程序意义更重大。
 楼主| 发表于 2011-5-8 09:12 | 显示全部楼层
回复 5 # hsfy919 的帖子

我做车桥耦合时,激励频率和速度是相关的,这样也能做关于出分插图么!
发表于 2011-5-9 18:05 | 显示全部楼层
回复 7 # liliangbiao 的帖子

感谢liliangbiao提出的宝贵意见
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-26 07:55 , Processed in 0.055068 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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