声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2825|回复: 13

[稳定性与分岔] 蔡氏电路的分岔图

[复制链接]
发表于 2008-5-30 10:13 | 显示全部楼层 |阅读模式

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

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

x
请各位高手给个蔡氏电路的MATLAB仿真的分岔的代码
方程如下:
x1'=-1.8x1+6.3x2-a(|x1-1|-|x1+1|)
x2'=0.7x1-0.2x2+x3
x3'=-7.0x2
谢谢!
回复
分享到:

使用道具 举报

发表于 2008-5-30 10:38 | 显示全部楼层

回复 楼主 的帖子

没有直接用的程序,但是你可以按着做分岔图的方法,先编写一个遇到问题再来讨论
发表于 2008-5-30 13:28 | 显示全部楼层
根据自己的系统编写一下吧,不是特别难的事情!
发表于 2008-5-30 16:27 | 显示全部楼层
可以根据我空间中的程序进行调试,得到如下的结果即可!
chuafy.PNG
 楼主| 发表于 2008-5-30 22:34 | 显示全部楼层

回复 4楼 的帖子

谢谢你的回复,不过我是新手,能问下具体是你空间的哪个程序,Rossler系统的分叉图Matlab实现,是这个吗?
发表于 2008-6-1 13:52 | 显示全部楼层

liliangbiao的那程序有点错误

我做了好多系统用这个程序做的,根本做不出来,不知道怎么回事
发表于 2008-6-1 16:12 | 显示全部楼层
或许和初始条件有关
 楼主| 发表于 2008-6-1 17:44 | 显示全部楼层

请大家分析下我的程序

我根据liliangbiao的那程序自己编了个:
function dx=yang(t,x)
global A ;
dx=zeros(3,1);
dx(1)=6.3*x(2)-1.8*x(1)-A*(abs(x(1)-1)-abs(x(1)+1));
dx(2)=0.7*x(1)-0.7*x(2)+x(3);
dx(3)=-7.0*x(2);

function chua
clear;
global A
range=[0.1: 0.0001: 0.35];
period=2*pi;
k=0;
YY1[];
Step=2*pi/100;
for A=range
  x0=[0 0.001 0];
  A
  k=k+1;     %出去前面60个周期的数据,并将最后的结果作为下一次积分的初值。
  tspan=[0:step:60*period];
  [t,Y]=ode45('yang',tspan ,x0);
  y0=Y(end,:);
  j=1;
  for i=60:200
    tspan=[i*period:step(i+1)*period];
    [t,Y]ode45('yang',tspan ,x0);
    YY1(k j)=Y(end,1);
    j=j+1;    %取出每一个周期内的第一个解的最后一个值。
    y0=Y(end,:);
   end
end
bifdata=YY1(:,end-51:end);
plot(range,bifdata,'k','markersize',1)
仿真后系统提示:
??? Error: File: C:\MATLAB6p5\work\chua.m Line: 7 Column: 4
Missing operator, comma, or semicolon.Missing operator, comma, or semicolon.
大家帮忙找下原因,急用谢谢了!
发表于 2008-6-1 18:42 | 显示全部楼层
原帖由 ymsncx 于 2008-6-1 17:44 发表
我根据liliangbiao的那程序自己编了个:
function dx=yang(t,x)
global A ;
dx=zeros(3,1);
dx(1)=6.3*x(2)-1.8*x(1)-A*(abs(x(1)-1)-abs(x(1)+1));
dx(2)=0.7*x(1)-0.7*x(2)+x(3);
dx(3)=-7.0*x(2);

funct ...


这些地方有错误:YY1=[];YY1(k, j)=Y(end,1);
发表于 2008-6-2 17:36 | 显示全部楼层

老是出现这个问题.

??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.

Error in ==> fencha2 at 29
zhang=[zhang; fradata1];

>>
发表于 2008-6-2 17:37 | 显示全部楼层

程序是这样的

function u =rosser(t,x)
global c
a=16;
b=2;
x0=[2,1,2]';
u =[a*(x(2)-x(1)), c*x(1)-x(1)*x(3), x(1)*x(2)-b*x(3)]';

clear all
global c
zhang=[];
M=[29:0.01:32];
counter=1;
for counter=1:length(M)
       c=M(counter);
    i=2;
xmax=0;
xmaxold=0;
frmdata=[];
error=0;
tspan=[0 300];
var=1;
y0=[0.5;0.4;0.3];
[t,x]=ode45('rosser',tspan,y0);
while i < size(x,1)
        if x(i-1,var) < x(i,var) & x(i+1,var) <= x(i,var)
            xmax=x(i,var);
            if xmaxold ~= 0
                frmdata=[frmdata ; xmax xmaxold];
            end
                xmaxold=xmax;
        end
        i=i+1;
end
r=length(frmdata)-20:length(frmdata);
fradata1(1,r)=frmdata(r,1);
zhang=[zhang; fradata1];
end
plot(M,zhang,'k.','markersize',1);
        xlabel(sprintf('c'));
ylabel(sprintf('x'))
发表于 2008-6-2 17:39 | 显示全部楼层

请教各位高手

运行上面这个程序求解分岔的时候出现?? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.

Error in ==> fencha2 at 29
zhang=[zhang; fradata1];

>>
发表于 2008-6-2 19:04 | 显示全部楼层
fradata1(1,r)=frmdata(r,1);
这一行有问题,r是一个列矩阵,你这么表达没明白什么意思
显示两个矩阵必须有相同的行和列
发表于 2008-6-2 19:42 | 显示全部楼层

不明白

这个是liliangbiao 的程序,不知道为什么他能做出分岔图,我换了个系统就做不出来了,奇怪的很!!大家分析哈什么原因?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-30 11:31 , Processed in 0.064832 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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