绘制Duffing振子的分叉图的程序.docx

上传人:b****3 文档编号:5312000 上传时间:2022-12-15 格式:DOCX 页数:9 大小:16.24KB
下载 相关 举报
绘制Duffing振子的分叉图的程序.docx_第1页
第1页 / 共9页
绘制Duffing振子的分叉图的程序.docx_第2页
第2页 / 共9页
绘制Duffing振子的分叉图的程序.docx_第3页
第3页 / 共9页
绘制Duffing振子的分叉图的程序.docx_第4页
第4页 / 共9页
绘制Duffing振子的分叉图的程序.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

绘制Duffing振子的分叉图的程序.docx

《绘制Duffing振子的分叉图的程序.docx》由会员分享,可在线阅读,更多相关《绘制Duffing振子的分叉图的程序.docx(9页珍藏版)》请在冰豆网上搜索。

绘制Duffing振子的分叉图的程序.docx

绘制Duffing振子的分叉图的程序

绘制Duffing振子的分叉图的程序

这些程序思想有些可能不正确,有问题,自己改进,我不再负责对这些程序解释。

因为我都不知道道理在哪里。

但是期望您能在程序的提示下,进一步的做改进或者改正,以期获得更为精确的结果。

别照搬和迷恋别人的程序!

%%%%%%绘制Duffing振子的庞加莱截面图的程序

%%buchang:

已知激励下步长数值的大小,

%%tend程序仿真达到150个激励周期的总时间,

%clear;clc

%globalmck1k3F0omega

%

%m=1;c=0.1;k1=0;k3=1;omega=1;F0=12

%x0=[3;4];

%tstart=0;Tbushu=600;buchang=(2*pi/omega)/Tbushu;tend=(2*pi/omega)*150;

%tspan=[tstart:

buchang:

tend];

%[t,y]=ode45('dafin3',tspan,x0);

%count=find(t>(2*pi/omega*40));%去掉前40个周期的激励时间以消除瞬态响应的影响

%Y=y(count,:

);

%TData=Y(1:

Tbushu,1)-Y((Tbushu+1):

Tbushu*2,1);

%[maxvalue,indices]=max(abs(TData))

%pointnumber=round((tend-2*pi/omega*40)/buchang/Tbushu)-1;

%dis=zeros(pointnumber,1);

%velo=zeros(pointnumber,1);

%fori=1:

pointnumber

%dis(i,1)=Y(Tbushu*(i-1)+indices,1);

%velo(i,1)=Y(Tbushu*(i-1)+indices,2);

%end

%figure,plot(dis,velo,'b.','markersize',5);

%%%%%绘制Duffing振子的分叉图的程序

%clear;clc

%globalmck1k3F0omega;

%m=1;k1=0;k3=1;omega=1;F0=12;

%range=[0.01:

0.01:

1];

%YY=[];k=0;

%forc=range

%k=k+1;

%y0=[3,4];

%tspan=[0:

0.01:

200];

%[t,Y]=ode45('dafin3',tspan,y0);

%count=find(t>100);

%Y=Y(count,:

);

%%画x的分岔图。

%j=1;

%n=length(Y(:

1));

%fori=2:

n-1

%ifY(i-1,1)+epsY(i+1,1)+eps%简单的取出局部最大值。

%YY(k,j)=Y(i,1);%使最大值计数个数自动增加

%j=j+1;

%end

%end

%ifj>1

%plot(c,YY(k,[1:

j-1]),'b.','markersize',5);

%end

%holdon;

%index(k)=j-1;

%end

%xlabel('c');

%ylabel('xmax');

%title('dafinbifurcationdiagram');

%%%绘制分岔图的程序

%clear,clc

%globalmck1k3F0omega

%

%m=1;c=0.1;k1=0;k3=1;omega=1;F0=12;

%ccanshu=0.01:

0.01:

1;

%fork=1:

100

%c=ccanshu(k)

%x0=[3;4];

%tspan=[0:

0.01*2*pi:

500];

%[t,y]=ode45('dafin3',tspan,x0);

%dis=zeros(50,1);

%velo=zeros(50,1);

%fori=1:

50

%dis(i,1)=y(100*(i+20),1);

%velo(i,1)=y(100*(i+20),2);

%end

%Dismatrix(k,:

)=dis';

%end

%figure,plot(ccanshu,Dismatrix,'b.','markersize',3);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%线性参数k1的变化产生的分岔图

%clear;clc

%globalmck1k3F0omega

%m=1;c=0.1;k3=1;omega=1;F0=12;

%kcanshu=0.01:

0.01:

2;

%fork=1:

200

%k1=kcanshu(k)

%x0=[3;4];

%tspan=[0:

0.01*2*pi:

500];

%[t,y]=ode45('dafin3',tspan,x0);

%dis=zeros(50,1);

%velo=zeros(50,1);

%fori=1:

50

%dis(i,1)=y(100*(i+20),1);

%velo(i,1)=y(100*(i+20),2);

%end

%Dismatrix(k,:

)=dis';

%end

%plot(kcanshu,Dismatrix,'b.','markersize',5);

%title('参数变化下的分岔图')

%xlabel('线性刚度参数k1的变化')

%ylabel('X值')

%%非线性参数k3的变化产生的分岔图

%clear;clc

%globalmck1k3F0omega

%m=1;c=0.1;k1=0;omega=1;F0=12;

%kcanshu=0.01:

0.01:

2;

%fork=1:

200

%k3=kcanshu(k)

%x0=[3;4];

%tspan=[0:

0.01*2*pi:

500];

%[t,y]=ode45('dafin3',tspan,x0);

%dis=zeros(50,1);

%velo=zeros(50,1);

%fori=1:

50

%dis(i,1)=y(100*(i+20),1);

%velo(i,1)=y(100*(i+20),2);

%end

%Dismatrix(k,:

)=dis';

%end

%plot(kcanshu,Dismatrix,'b.','markersize',5);

%title('参数变化下的分岔图')

%xlabel('非线性参数k3的变化')

%ylabel('X值')

%%激励参数F0变化产生的分岔图

%clear;clc

%globalmck1k3F0omega

%m=1;c=0.1;k1=0;k3=1;omega=1;

%F0canshu=0.1:

0.1:

20;

%fork=1:

200

%F0=F0canshu(k)

%x0=[3;4];

%tspan=[0:

0.01*2*pi:

500];

%[t,y]=ode45('dafin3',tspan,x0);

%dis=zeros(50,1);

%velo=zeros(50,1);

%fori=1:

50

%dis(i,1)=y(100*(i+20),1);

%velo(i,1)=y(100*(i+20),2);

%end

%Dismatrix(k,:

)=dis';

%end

%plot(F0canshu,Dismatrix,'b.','markersize',5);

%title('参数变化下的分岔图')

%xlabel('激励参数F0的变化')

%ylabel('X值')

%%%激励频率omega变化产生的分岔图

%clear;clc

%globalmck1k3F0omega

%m=1;c=0.1;k1=0;k3=1;F0=12;

%omegacanshu=0.1:

0.1:

10;

%fork=1:

100

%omega=omegacanshu(k)

%x0=[3;4];

%tspan=[0:

0.01*2*pi/omega:

500];

%[t,y]=ode45('dafin3',tspan,x0);

%dis=zeros(50,1);

%velo=zeros(50,1);

%fori=1:

50

%dis(i,1)=y(round(100*omega*(i+20)),1);

%velo(i,1)=y(round(100*omega*(i+20)),2);

%end

%Dismatrix(k,:

)=dis';

%end

%plot(omegacanshu,Dismatrix,'b.','markersize',5);

%title('参数变化下的分岔图')

%xlabel('激励频率omega的变化')

%ylabel('X值')

%clear;clc

%globalmck1k3F0omega

%n=3,rhs_ext_fcn=@dafin_ext2,fcn_integrator=@ode45,tstart=0,stept=0.5,tend=200,

%ystart=[340],ioutp=10,

%m=1;c=0.1;k1=0;F0=12;k3=1;

%omegacanshu=0.1:

0.1:

10;

%fork=1:

100

%omega=omegacanshu(1,k),lyapunovzhishu(k,:

)=lyapunovfun(n,rhs_ext_fcn,fcn_integrator,tstart,stept,tend,ystart,ioutp)

%end

%figure,plot(omegacanshu,lyapunovzhishu),

%title('Lyapunov动力学指数');

%xlabel('激励频率omega变化');ylabel('Lyapunov指数');

%%%绘制分岔图的程序

%clear;clc

%globalmck1k3F0omega

%

%m=1;c=0.1;k1=0;k3=1;omega=1;F0=12;

%ccanshu=0.01:

0.01:

1;

%fork=1:

100

%c=ccanshu(k)

%x0=[3;4];

%tstart=0;Tbushu=100;buchang=(2*pi/omega)/Tbushu;tend=(2*pi/omega)*200;

%tspan=[tstart:

buchang:

tend];

%[t,y]=ode45('dafin3',tspan,x0);

%count=find(t>(2*pi/omega*40));%去掉前40个周期的激励时间以消除瞬态响应的影响

%Y=y(count,:

);

%TData=Y(1:

Tbushu,1)-Y((Tbushu+1):

Tbushu*2,1);

%ifk==1

%[maxvalue,indices]=max(abs(TData));

%end

%pointnumber=round((tend-2*pi/omega*40)/buchang/Tbushu)-1;

%dis=zeros(pointnumber,1);

%velo=zeros(pointnumber,1);

%fori=1:

pointnumber

%dis(i,1)=Y(Tbushu*(i-1)+indices,1);

%velo(i,1)=Y(Tbushu*(i-1)+indices,2);

%end

%Dismatrix(k,:

)=dis';

%end

%plot(ccanshu,Dismatrix,'b.','markersize',3);

%%%绘制分岔图的程序

%clear,clc

%globalmck1k3F0omega

%m=1;c=0.4;k1=-1;k3=1;F0=3;omega=2;

%ccanshu=0.01:

0.01:

1;

%fork=1:

100

%c=ccanshu(k)

%x0=[2;0];

%tstart=0;Tbushu=100;buchang=(2*pi/omega)/Tbushu;tend=(2*pi/omega)*200;

%tspan=[tstart:

buchang:

tend];

%[t,y]=ode45('dafin3',tspan,x0);

%count=find(t>(2*pi/omega*40));%去掉前40个周期的激励时间以消除瞬态响应的影响

%Y=y(count,:

);

%TData=Y(1:

Tbushu,1)-Y((Tbushu+1):

Tbushu*2,1);

%ifk==1

%[maxvalue,indices]=max(abs(TData));

%end

%pointnumber=round((tend-2*pi/omega*40)/buchang/Tbushu)-1;

%dis=zeros(pointnumber,1);

%velo=zeros(pointnumber,1);

%fori=1:

pointnumber

%dis(i,1)=Y(Tbushu*(i-1)+indices,1);

%velo(i,1)=Y(Tbushu*(i-1)+indices,2);

%end

%Dismatrix(k,:

)=dis';

%end

%figure,plot(ccanshu,Dismatrix,'b.','markersize',3);

%set(gca,'fontsize',20);

%title('随参数变化的分岔图','fontsize',20);

%xlabel('随阻尼参数c变化','fontsize',20);

%%%绘制分岔图的程序

%clear,clc

%globalmck1k3F0omega

%m=1;c=0.4;k1=-1;k3=1;F0=3;omega=2;

%k1canshu=-1:

0.01:

0.99;

%fork=1:

200

%k1=k1canshu(k)

%x0=[2;0];

%tstart=0;Tbushu=100;buchang=(2*pi/omega)/Tbushu;tend=(2*pi/omega)*200;

%tspan=[tstart:

buchang:

tend];

%[t,y]=ode45('dafin3',tspan,x0);

%count=find(t>(2*pi/omega*40));%去掉前40个周期的激励时间以消除瞬态响应的影响

%Y=y(count,:

);

%TData=Y(1:

Tbushu,1)-Y((Tbushu+1):

Tbushu*2,1);

%ifk==1

%[maxvalue,indices]=max(abs(TData));

%end

%pointnumber=round((tend-2*pi/omega*40)/buchang/Tbushu)-1;

%dis=zeros(pointnumber,1);

%velo=zeros(pointnumber,1);

%fori=1:

pointnumber

%dis(i,1)=Y(Tbushu*(i-1)+indices,1);

%velo(i,1)=Y(Tbushu*(i-1)+indices,2);

%end

%Dismatrix(k,:

)=dis';

%end

%figure,plot(k1canshu,Dismatrix,'b.','markersize',3);

%axis([-1,1,-1,4])

%set(gca,'fontsize',20);

%title('随参数变化的分岔图','fontsize',20);

%xlabel('随线性刚度参数k1的变化','fontsize',20);

%%%绘制分岔图的程序

%clear,clc

%globalmck1k3F0omega

%m=1;c=0.4;k1=-1;k3=1;F0=3;omega=2;

%k3canshu=0.01:

0.01:

1;

%fork=1:

100

%k3=k3canshu(k)

%x0=[2;0];

%tstart=0;Tbushu=100;buchang=(2*pi/omega)/Tbushu;tend=(2*pi/omega)*200;

%tspan=[tstart:

buchang:

tend];

%[t,y]=ode45('dafin3',tspan,x0);

%count=find(t>(2*pi/omega*40));%去掉前40个周期的激励时间以消除瞬态响应的影响

%Y=y(count,:

);

%TData=Y(1:

Tbushu,1)-Y((Tbushu+1):

Tbushu*2,1);

%ifk==1

%[maxvalue,indices]=max(abs(TData));

%end

%pointnumber=round((tend-2*pi/omega*40)/buchang/Tbushu)-1;

%dis=zeros(pointnumber,1);

%velo=zeros(pointnumber,1);

%fori=1:

pointnumber

%dis(i,1)=Y(Tbushu*(i-1)+indices,1);

%velo(i,1)=Y(Tbushu*(i-1)+indices,2);

%end

%Dismatrix(k,:

)=dis';

%end

%figure,plot(k3canshu,Dismatrix,'b.','markersize',3);

%set(gca,'fontsize',20);

%title('随参数变化的分岔图','fontsize',20);

%xlabel('随非线性刚度参数k3的变化','fontsize',20);

%%%绘制分岔图的程序

%clear,clc

%globalmck1k3F0omega

%m=1;c=0.4;k1=-1;k3=1;F0=3;omega=2;

%F0canshu=0.1:

0.1:

10;

%fork=1:

100

%F0=F0canshu(k)

%x0=[2;0];

%tstart=0;Tbushu=100;buchang=(2*pi/omega)/Tbushu;tend=(2*pi/omega)*200;

%tspan=[tstart:

buchang:

tend];

%[t,y]=ode45('dafin3',tspan,x0);

%count=find(t>(2*pi/omega*40));%去掉前40个周期的激励时间以消除瞬态响应的影响

%Y=y(count,:

);

%TData=Y(1:

Tbushu,1)-Y((Tbushu+1):

Tbushu*2,1);

%ifk==1

%[maxvalue,indices]=max(abs(TData));

%end

%pointnumber=round((tend-2*pi/omega*40)/buchang/Tbushu)-1;

%dis=zeros(pointnumber,1);

%velo=zeros(pointnumber,1);

%fori=1:

pointnumber

%dis(i,1)=Y(Tbushu*(i-1)+indices,1);

%velo(i,1)=Y(Tbushu*(i-1)+indices,2);

%end

%Dismatrix(k,:

)=dis';

%end

%figure,plot(F0canshu,Dismatrix,'b.','markersize',3);

%set(gca,'fontsize',20);

%title('随参数变化的分岔图','fontsize',20);

%xlabel('随外界激励幅值F0的变化','fontsize',20);

%%激励频率omega变化产生的分岔图

clear;clc

globalmck1k3F0omega

m=1;c=0.1;k1=0;k3=1;F0=12;

omegacanshu=0.1:

0.1:

10;

fork=1:

100

omega=omegacanshu(k)

x0=[3;4];

tstart=0;Tbushu=100;buchang=(2*pi/omega)/Tbushu;tend=(2*pi/omega)*200;

tspan=[tstart:

buchang:

tend];

[t,y]=ode45('dafin3',tspan,x0);

count=find(t>(2*pi/omega*40));%去掉前40个周期的激励时间以消除瞬态响应的影响

Y=y(count,:

);

TData=Y(1:

Tbushu,1)-Y((Tbushu+1):

Tbushu*2,1);

ifk==1

[maxvalue,indices]=max(abs(TData));

end

pointnumber=round((tend-2*pi/omega*40)/buchang/Tbushu)-1;

dis=zeros(pointnumber,1);

velo=zeros(pointnumber,1);

fori=1:

pointnumber

dis(i,1)=Y(Tbushu*(i-1)+indices,1);

velo(i,1)=Y(Tbushu*(i-1)+indices,2);

end

Dismatrix(k,:

)=dis';

end

figure,plot(omegacanshu,Dismatrix,'b.','markersize',3);

set(gca,'fontsize',20);

title('随参数变化的分岔图','fontsize',20);

xlabel('随外界激励频率omega的变化','fontsize',20);

%%%%%%%%%%%%%%%%%%%%%%

%clear,clc

%n=3,rhs_ext_fcn=@dafin_ext2,fcn_integrator=@ode45,tstart=0,stept=0.5,tend=200,

%ys

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1