声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2794|回复: 8

[非线性振动] 求助duffing方程的分岔图程序

[复制链接]
发表于 2007-9-4 08:27 | 显示全部楼层 |阅读模式

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

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

x
求救!!duffing方程的分岔图程序???

[ 本帖最后由 xinyuxf 于 2007-9-4 10:58 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-9-4 09:31 | 显示全部楼层

回复 #1 董世勇 的帖子

在论坛中搜索有关分岔的程序。将m程序修改为自己的方程就可以了
发表于 2007-9-5 18:07 | 显示全部楼层
% Author: Thomas Lee

% E-mail: lixf1979@126.com % Corresponding: School of Mathematics, Physics and Software Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China





function dx=duffing(t,X)

global F wd;

r=0.168;

x=X(1);

y=X(2);

psi=X(3);

dx=zeros(3,1);

dx(1)=y;

dx(2)=-r*y+1/2*x*(1-x^2)+F*sin(psi);

dx(3)=wd;







clear;

global F wd;

wd=1.0;

range=[0.10:0.0001:0.3];

period=2*pi/wd; %

k=0;

YY2=[];

step=2*pi/100;  %步长。

for F=range

    y0=[0 0 0];

   F

    k=k+1;

    % discard the first 60 periodic data;

    %除去前面60个周期的数据,并将最后的结果作为下一次积分的初值

    tspan=[0:step:60*period];

    [t,Y]=ode45(@duffing,tspan,y0);

    y0=Y(end,:);

    j=1;

    for i=60:200

        tspan=[i*period:step:(i+1)*period];

        [t,Y]=ode45(@duffing,tspan,y0);

        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);

评分

1

查看全部评分

发表于 2010-11-3 18:35 | 显示全部楼层
厉害的,先拜读一下。
发表于 2011-5-5 18:42 | 显示全部楼层
好好学习一下,谢谢
发表于 2011-5-6 16:43 | 显示全部楼层
回复 2 # 无水1324 的帖子

无水老师,怎么上传超过500k的图片
发表于 2011-5-6 16:57 | 显示全部楼层
回复 3 # liliangbiao 的帖子

我一直有个疑问,这个因为wd=1,所以无所谓,如果不是的话,step是不是应该为step=period/100啊!还请指教
发表于 2012-3-4 10:45 | 显示全部楼层
xiexie,分享 不错
发表于 2012-3-7 15:31 | 显示全部楼层
感谢分享,可是为什么不出来图呢?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-15 10:58 , Processed in 0.091414 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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