有没有可参考的两个自由度的分岔图程序?
单自由度分岔和两个自由度分岔图的程序的区别?有没有可参考的两个自由度的分岔图程序 回复 1 # lihaitao123 的帖子论坛上已有很多相关的程序,请自行搜索 回复 2 # hsfy919 的帖子
我找了一个duffing改了一下,不知道咋回事
function du=CQ(t,u,flag,f)
global delta1 delta2 alpha1 xi1 alpha2 xi2beta2omega
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 xi2beta2 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=;
period=2*pi/omega; %
k=0;
YY1=[];
step=2*pi/10;%步长。
for f=range
disp(f)
y0=;
k=k+1;
% discard the first 60 periodic data;
%除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
tspan=;
=ode45('CQ',tspan,y0);
y0=Y(end,:);
j=1;
for i=60:200
tspan=;
=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. 请问:当omega beta2 delta1 alpha1 xi1 alpha2 delta2
xi2都取1,能运行,别的就基本算不了,有啥好办法没 回复 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 xi2beta2 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=;
period=2*pi/omega; %
k=0;
YY1=[];
step=2*pi/10;%步长。
for f=range
disp(f)
y0=;
k=k+1;
% discard the first 60 periodic data;
%除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
tspan=;
=ode45('CQ',tspan,y0,[],f);
y0=Y(end,:);
j=1;
for i=60:200
tspan=;
=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);
程序是通了,至于有警告,是因为你取的参数有问题,一般是方程本身造成的 回复 5 # hsfy919 的帖子
谢谢主任,现在程序能运行了,我把CQ函数,变了就行了。再问一个问题,一般分岔图的的周期都是period=2*pi/omega?omega是激励频率。 本帖最后由 liliangbiao 于 2011-5-7 09:40 编辑
先弄懂你要做的是什么,弄懂你引用的程序是基于怎样的思想编写的,程序实现的是什么,能实现什么,不要一味的不假思索的移植过来,拿过来就用。程序调试通了,又能如何?程序通了,就能说明程序能实现你要的结果!?版主懂不懂?别跟着瞎起哄,我建议版主多给出思想,别老是瞎指挥!说的有点不客气了,还是见谅!现在这个版块越来越不好了,简直都是在索取,为何不交流思想??版主我觉得很有责任来改进这些!
我还是觉得我们应该交流思想,程序现在满天飞,不懂又有何用?java不懂不要紧,C++不懂不要紧,。。。只要懂得思想,移植到自己会编写的程序上,都是没问题的,思想比程序重要!
回复 7 # liliangbiao 的帖子
学长批评的是。 理论的提高比收获一个程序意义更重大。 回复 5 # hsfy919 的帖子
我做车桥耦合时,激励频率和速度是相关的,这样也能做关于出分插图么! 回复 7 # liliangbiao 的帖子
感谢liliangbiao提出的宝贵意见
页:
[1]