skywm 发表于 2007-1-12 20:48

为什么画不出Chua电路的混沌图

我编了如下的程序,想画出Chua电路的混沌图
function dX=Chua_sim(t,X)
C1=15.6;
C2=1;
C3=33;

% Chua
dX=[C1*(X(2) -X(1) -gf(X(1))) ;
C2*(X(1) -X(2)+X(3) );
   -C3*X(2)];

function out=gf(in)
M0= -8/7;
M1= -5/7;
out=M1*in + 0.5*(M0-M1)*(abs(in+1)-abs(in-1));

初始值选(0,1,0),系统参数是 Alligood, Chaos,1996一书上的,他说这组参数能产生混沌,可用
=ODE45(@Chua_sim,,);
产生的结果很快发散,换别的参数,这个程序也不能产生混沌,还请指教哪里出了问题,多谢!

xjzuo 发表于 2007-1-12 21:26

回复

原因可能在于你写Chua's方程不对.

skywm 发表于 2007-1-13 20:18

程序没有可能,用此程序可以产生周期轨道,不知道哪位实际用过Chua的matlab程序

shenyongjun 发表于 2007-1-13 21:22

多试一些初始条件。对于非线性系统,即使所有系统参数均相同,但是不同的初始条件有可能得到完全不同的结果。

xjzuo 发表于 2007-1-13 22:51

回复

我以前碰到过的chua's方程是如下形式:
a*(y(2)-y(1))-gx=0;
xigma*(-a*(y(2)-y(1))+y(3))=0;
-c*(y(2)+r*y(3))=0.
%%%%%%%%%%%%%%%%
相应的程序如下:
%%%%%%%%%%%%%%
function dy=Chuaseq(t,y,a,b,c);
% 定义Chua's Circuit方程
xigma=0.066;
r=0.071;
if abs(y(1))<1
   gx=y(1);
elseif abs(y(1))<10;
   gx=(-1+b*(abs(y(1)-1)))*sign(y(1));
else
   gx=(10*(abs(y(1))-10)+(9*b-1))*sign(y(1));
end
dy=zeros(3,1);
dy=[a*(y(2)-y(1))-gx;
    xigma*(-a*(y(2)-y(1))+y(3));
    -c*(y(2)+r*y(3))];
%%%%%%%%%%%%%%%%
调用如下:
%%%%%%%%%%%%%%%%
=ode45(@Chuaseq,,,[],0.923,0.636,0.779);
plot3(y(:,1),y(:,2),y(:,3));
%%%%%%%%%%%%%%%%%%%
你可以参考一下以上程序.
不过效果看上去还是不如矩阵形式(另一种计算方法)的计算结果好.

[ 本帖最后由 xjzuo 于 2007-1-13 22:53 编辑 ]

skywm 发表于 2007-1-14 22:29

多谢,只是copy程序后,运行得到的是平衡点(如图),不是希望的double-scroll chaos,不知道是什么问题

xjzuo 发表于 2007-1-15 10:12

回复

接下来你可以自己动动手,调节相应的参数, 再看看书,
应该就可以得到自己想要的周期、双涡、单涡等各种情况了.

skywm 发表于 2007-1-19 22:49

我发表程序就是因为找不出这样的系统参数,而怀疑自己程序问题,不知道您能不能给出自己程序产生相应状态的系统参数?

xjzuo 发表于 2007-1-19 23:45

回复

这个应该要你自己动手查资料了,方程已给定,例子也有了,相应的参数只是需要调节.
我本身不是做这方面的,不可能我还要专门花时间帮你去找资料吧?
有些时候不能要求一切都给你做好了放在那里的.

skywm 发表于 2007-1-20 20:36

多谢!一周前我是参考Alligood,Chaos,1996一书编的程序,确定的参数,可出不来。最近几天找了些资料,确实找到了一组产生双涡的参数。比如上述程序,
Alaph = 10.0000, Beta = 15.0000, Gamma = 0.0385, a = -1.2700, b = -0.6800
页: [1]
查看完整版本: 为什么画不出Chua电路的混沌图