Lozi混沌映射系统的Matlab实现

上一篇 / 下一篇  2008-07-19 10:17:02

查看( 139 ) / 评论( 4 )
振动资讯9j1F2\7u5RLp PU

% Author: Thomas Lee振动资讯Gz+K9BpE
% E-mail: lixf1979@126.com振动资讯$vy9M bdlZ1\)sXL2r
% Corresponding: School of Mathematics, Physics and Software Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China

pr7p.]-OH L0

PDF\8r'f3p0% if you want to get more information, please refer to one of the published articles of the author :

(I.o LI7e&K(f']0

6d0[%}fM0`.C`|/p M+K0%李险峰等.Lozi混沌映射的线性反馈控制.河北师范大学学报. 2007,31(4):479-483.振动资讯1b@| }_m

振动资讯.s.j.f'?$z:mK h'x

1. Phase Portrait:振动资讯pT? ?r*g

function newx=Lozi(x);

[!h~7@m[$K|0

% Lozi方程[差分方程]%newx=Lozi([x;y;p;q]);振动资讯T c/|)y-X+Vf J

%方程如下:%x(k+1)=-p*x(k)+y(k)+1;% y(k+1)=q*x(k);

r%i)h-D/K b3b6H|)N1|[d0

%定义列向量newx及函数Lozi(x)

2d] ~7Q:`0`t*A0

newx(1,1)=-x(3)*abs(x(1))+x(2)+1;

~%h(H"f] lI X0

newx(2,1)=x(4)*x(1);振动资讯y M*@ z-_6z;r

newx(3,1)=x(3);

?I(^/Ys8GS0

newx(4,1)=x(4);

FN#sGF&ll5]0

 

#K Z {4w.B$YF8dr;D0

X=[1;0.1;1.7;.5];振动资讯 x{/t7\&@5t

%前面两个赋初值,后面两个给出了系统中的

CI J2V)g@2{4A g0

%常数项的值!与newx=Lozi(x)中给出的列向量相对应!

fT"PFxf ?@0

 Y=[]; %给出一个空数组,以便存储得出的迭代解!

m)d __:P0

 for i=1:10000 %循环即迭代次数

$](Za+].m0

    X=feval(@Lozi,X);%调用主函数

.WE,@MO0

    Y(i,:)=X(1:2,1);

1a0u)D}#aLY z \$C0

    %将每一次迭代后的数组X的上面两个变量存储!振动资讯z4hK.t~.L

    %因为下面的两个常数项进行迭代时保持原来的数值不便!

)?V"Zl-t$|0

 end振动资讯 C-`C7[W] Y

    plot(Y(:,1),Y(:,2),'.','markersize',1);振动资讯~[B4W6O;K!bx:ga

    %得到Y=[Y(:,1),Y(:,2)],分别指代每一次迭代后的振动资讯BU nG(H5T VPq

    %数组X的上面两个变量,然后点画图.振动资讯!g3KnsHUD9PA5`3a

    title('Lozi映射图')%加上图像标题振动资讯bj:P#@rai`

    xlabel('x'),ylabel('y')

hf k3K&~%@"A0

    %分别给对应的向量随处的坐标命名

.Y |X'SKB)|`(vw0

%另外还可以使用其它的语句对图像进行进一步的调整振动资讯8vh3N&S`,ilL

振动资讯(co c4Z a

2.  Bifurcation diagram 1振动资讯-[aQ,ju%Z

function newx=Lozi(x);

r&J:[/I(lis7P3~7RS0

% Lozi方程[差分方程]%newx=Lozi([x;y;p;q]);

di$X} B#[bA{d0

%方程如下:%x(k+1)=-p*x(k)+y(k)+1;% y(k+1)=q*x(k);振动资讯 P hIGoq0v4s

%定义列向量newx及函数Lozi(x)振动资讯.k.ge&d}

newx(1,1)=-x(3)*abs(x(1))+x(2)+1;振动资讯6aF+[ B H4J2z8G K3d

newx(2,1)=x(4)*x(1);

+bx!iMPH0

newx(3,1)=x(3);振动资讯\-jr lXE5cE

newx(4,1)=x(4);

6iwz-o+q0

 振动资讯1A*s3Ch pb)z*`#F

  Z=[];%给出一个空数组,以便存储得出的迭代解!振动资讯.vb t;Fj+YOU-U;Vx/E

  for p=linspace(0,1.7,1700);振动资讯wj&I?J l

      %将分岔参数用linspace在区间[0,1.7]

ekWNOn7_/F0

      %等分成1700

^EzXY}7d3e7UC0

      x=[1;0;p;.5];

U'KQ5fYZ%~ a0

      %前面两个赋初值,后面两个给出了系统中的振动资讯$?'h9N}$}3r3U ^B

      %常数项的值!与newx=Lozi(x)中给出的列

5o i k|,|7Q ~U%m.g+y0

      %向量相对应,其中值得注意的是p是连续变化振动资讯|l%[u1cX8t:l

      %的向量.

}4bO8P B"aL"eNV0

      for k=1:500 %循环即迭代次数

:v9{zC:p:Hmk0

          x=Lozi(x); %调用主函数

;@H$t ?cu0

          if k>400

"z/Rl]+{CED0

              %取迭代后的最后一百个点,这里认为振动资讯/]R,o!g)?m ~

              %400个点为迭代过程中的瞬态响应!

zPi vk4j0

              Z=[Z,p+x(1)*i];振动资讯ZQ*T9C5{'oD0X|.U2K

               %P的值以及在这个值所对应最后400次迭代振动资讯8H#|3H]!X+S0m2`

               %后的数组X的第一个变量x存储为一个二维列向量组!

"Uz.G"Sz%@\[8Y0

          end振动资讯5u+VJb1^1C"^^Z#c

      end振动资讯a hu m2YG!e d

  end

x7Jpo?w6r9v6K,F0

  plot(Z,'.','markersize',1)

J,p&I5PO$N7~8E0

   %得到Z=[Z(:,1),Z(:,2)],分别指代P的值以及在这个振动资讯!Z%DE)g;k M p

   %值所对应最后400次迭代后的数组X的第一个变量x,然后点画图.振动资讯3Xf~;P*zq.GG ]$s

  title('Lozi映射分岔图')%加上图像标题振动资讯1x3U-N:X!q6jn

  xlabel('p'),ylabel('x')振动资讯'psT%}*kt)i;b

  %分别给对应的向量随处的坐标命名振动资讯(x0v7O [p-VW+Vd

  %另外还可以使用其它的语句对图像进行进一步的调整

L7dl$fX/TM&`0

&O.l'vS*r F3s$s0 

,A tP(U$AG"S0振动资讯"Yqd$F j1[ W?

3. Bifurcation diagram 2振动资讯AiW$T+^j"mh

function newx=Lozi(x);振动资讯K,a)z(\5P-z+{1H

% Lozi方程[差分方程]%newx=Lozi([x;y;p;q]);振动资讯.o j~T!N6T

%方程如下:%x(k+1)=-p*x(k)+y(k)+1;% y(k+1)=q*x(k);

kcqO G|0

%定义列向量newx及函数Lozi(x)

/oM7y?c0

newx(1,1)=-x(3)*abs(x(1))+x(2)+1;振动资讯Uhx Z/n,Ze vyC

newx(2,1)=x(4)*x(1);振动资讯Lv.R|nO)~S.g8^

newx(3,1)=x(3);

{'znc H0

newx(4,1)=x(4);

,P$Mafd;\0

 

J6X w'V5_0

 P=[];%给出一个空数组,以便存储P的值!振动资讯(K{8u)[H7a

  Z=[];%给出一个空数组,以便存储得出的迭代解!振动资讯'M7Fk rJriV

  for p=linspace(0,1.7,1700);振动资讯 L V9C%V"q*w!Z rc

      %将分岔参数用linspace在区间[0,1.7]

9T%D(F7L5L8|1]9C0

      %等分成1700

z!Z}0t!MG:[0

      x=[1;0;p;.5];振动资讯Z}8Rmz'W

      %前面两个赋初值,后面两个给出了系统中的

UZ{]Q a r0

      %常数项的值!与newx=Lozi(x)中给出的列振动资讯E5cX2|wb Z;W-P:P

      %向量相对应,其中值得注意的是p是连续变化

9SS6mkGrC3k0

      %的向量.振动资讯1`Ph x cUlYH

      for k=1:500

S TkiO0

%循环即迭代次数,但是遗憾的是这里的迭代次数太少,

}OT ZKG/ej'iO0

%因为如果太多的话,由于上面的p点太多,运行的时间

8A|UTJ#KB)q0

%就越长,但是为了得到较为精确的迭代解,建议适当的增加迭代次数振动资讯8ZZV+QDR8J

%估计在10000左右,而这时候取最后的1000个点即可!振动资讯(a2lK'gL*[Me

          x=Lozi(x); %调用主函数

-b-n il^*Tjp!w0

          if k>400振动资讯k^(LCN3mm

              %取迭代后的最后一百个点,这里认为振动资讯0z&m1A PH,K W g4MM

              %400个点为迭代过程中的瞬态响应!振动资讯$\dLx4w2eDZ

              Z=[Z;x(1)];

'kq*i.^U@0

              %这个值所对应最后400次迭代振动资讯:zWK k Rj})N?+Sf

               %后的数组X的第一个变量x存储为一个二维列向量组!振动资讯T8Y8Iq)G-ks F)b.m

              P=[P;p]; %P的值存储到空变量!

0| iRFk%m/`%C0

          end

f-B1S YJ0OIt0

      end振动资讯p!k }c8QZ'jTmx&X.}

  end振动资讯8M7ou:wjS,e

  plot(P,Z,'.','markersize',1)%点画图振动资讯j7Kt0Zpq%|3L6O:e

  title('Lozi映射分岔图')%加上图像标题振动资讯"TG `DA^

  xlabel('p'),ylabel('x')振动资讯#cQ K:Zec-D'c w_)^

  %分别给对应的向量随处的坐标命名振动资讯,I6| e2d&?(QAp7M4ms+M

  %另外还可以使用其它的语句对图像进行进一步的调整

#R$|X$@4OJ{+u9nT0振动资讯D/W0yQ`4\W"Ws#u

4 Lyapunov-exponent spectrum振动资讯V6Itk!Ba)fi V

function newx=Lozi(x);振动资讯)Nl KR5a[.`Z!ib

% Lozi方程[差分方程]%newx=Lozi([x;y;p;q]);

/HcjO _/J*i0

%方程如下:%x(k+1)=-p*x(k)+y(k)+1;% y(k+1)=q*x(k);

U'N/ih*L/c l!Ug@C0

%定义列向量newx及函数Lozi(x)

`RKJ0Pu?+Ff0

newx(1,1)=-x(3)*abs(x(1))+x(2)+1;

_9]/K\Q I0

newx(2,1)=x(4)*x(1);

E*s2Irb0X0

newx(3,1)=x(3);振动资讯n/[,Qk&K+N5Ed

newx(4,1)=x(4);

{&A3oXRaf6q0

 

%q(d:s_ ~0

  d0=1e-8;%定义极小的扰动,还可以定义更小振动资讯%P"G!G+}"h@3qm:GD

  Z=[];%给出一个空数组,以便存储得出的迭代解!

tpB,o]7P3p0

  P=[];%给出一个空数组,以便存储P的值!振动资讯3G0?[[S6f&E W

  for p=linspace(0,1.7,1700)振动资讯5F-k)Gd"A8{-DU9F

      %将分岔参数用linspace在区间[0,1.7]

B~e9G~;R.w;T9tG0

      %等分成1700

v%Y~1ho/knx_(V}0

      le=0;%定义指数的初始值为0.

6}s4IW)g_4V0

      lsum=0;%定义和的初始值为0.振动资讯?2Wu-u7i:hkXE

      x=[1;0;p;.5];%初始值

P ^;|O.n0

      x1=[1;d0;p;.5];%扰动初始值振动资讯/i0ChPUCH1]

      for k=1:1000

f AH)eMVg6ML{(|:b.I(r0

          %循环即迭代次数,但是遗憾的是这里的迭代次数太少,振动资讯VTu7i$P.N[R

%因为如果太多的话,由于上面的p点太多,运行的时间振动资讯{j ]k)fBI

%就越长,但是为了得到较为精确的迭代解,建议适当的增加迭代次数振动资讯Xw z7~.P3j r)ok

%估计在10000左右,而这时候取最后的1000个点即可!

a#yV[ I,\G0

          x=Lozi(x);%调用初始值下的主函数

!m w[ ?_ B_3V](s0

          x1=Lozi(x1);%调用扰动初始值下的主函数

+C l'q_9\#G{%h0u)v0

          d1=sqrt((x(1)-x1(1))^2+(x(2)-x1(2))^2);振动资讯-se#s5w$_C

          %定义两条规线在欧氏空间中的距离

(c'OK%?jH,{&y0

          x1=x+(d0/d1)*(x1-x);振动资讯9iH;ABmpJJ2Gg

          %选择基准轨线振动资讯b9n.ei"h1j1uB[

          if k>500振动资讯dTJ|R*^6~~

              %取迭代后的最后五百个点,这里认为

R Y\JQU)M0

              %500个点为迭代过程中的瞬态响应!振动资讯z4WGd3Zh

              lsum=lsum+log(d1/d0);振动资讯'VnGM6vj$X$Cs

              %求后500积分后的特征值的和振动资讯5WS'@(c7Z foH

          end振动资讯-J!or&Z"~4M5h

      end振动资讯6a&V e QJTf a2m

      le=lsum/(k-500);%求平均值得到指数值振动资讯'zuO*^1Y|L

      if k==1000 %取最后一个点

f Z@5iN:E)w9Uv0

      Z=[Z,le];%存储最后一个指数值振动资讯o~D)iP3?%p

      P=[P,p];%存储p(以对应指数)

2abS9k)TK X2i%C0

      end振动资讯k,q$j%qfP!KLOQJ2X4W

  end振动资讯3h;I|od{.R-A fl

  plot(P,Z,'-')%线画图

y[mcO!C'`8s!rq,{0

  title('Lozi最大Lyapunov指数图')

F-Qt UN)R G.p0

  xlabel('p'),ylabel('lyapunov')

8I?{Z$?#e?$GU[0

:]Ox6i:A2CKB05 Chaos control to one of the fixed points

}|3i)eT-E7Z%b7J0

)V-X['n-^ TTD05.1 Fixed points

w+`7Z9P&I0

q=0.5;

#J&CF)\ V1i7C)OZ0

for p=0:0.001:1.7

(O aFS x0

x1=1/(p-q+1);振动资讯+g2y Ek*|B'c9v

x2=sign(x1);

E|N1unkW0

K=max(q-1-p*x2,q-1+p*x2);

X;M1X5u^6{$i;uC0

plot(p,K,'r')

U9]e1| P9?8o,Nzo!u7p0

hold on

"s6t9\e-B}5vG6\"D0

K1=0.25*(p^2*(x2)^2+4*q);

*R#t2_Cgu7t0

plot(p,K1,'b')

@t:sPyM0

end振动资讯 B7W6ax w*L

 振动资讯c"S3t-U'~J'c

5.2 Fixed points controller 振动资讯/z'F V7k1x&D)~w H

 

:e`bH BZE0

 

1}"J9xx:r;H C!\ k0

function newx=Lozi(x);振动资讯vSch_)Q7HB _

% Lozi方程[差分方程]%newx=Lozi([x;y;p;q]);振动资讯(ChhT;`1iO

%方程如下:%x(k+1)=-p*x(k)+y(k)+1;% y(k+1)=q*x(k);

&N,A_8B'I+gY0pc3\0

%定义列向量newx及函数Lozi(x)振动资讯;Fn b(aP.VTI

newx(1,1)=-x(3)*abs(x(1))+x(2)+1;

a[ ZvLV6]0

newx(2,1)=x(4)*x(1)-1.222*(x(1)-1/2.2);振动资讯/F)z _;l(g

newx(3,1)=x(3);振动资讯"h"U L7hm

newx(4,1)=x(4);振动资讯 ?t l$Jdu'f kU9f0h

 振动资讯2s`Hb6T:r.m.r~E Dbk

 X=[1;0.1;1.7;.5];振动资讯a%{,w;Su p

%前面两个赋初值,后面两个给出了系统中的振动资讯0V.F.R:}]&F~

%常数项的值!与newx=Lozi(x)中给出的列向量相对应!振动资讯"ef.E_5Nu C_}

 Y=[]; %给出一个空数组,以便存储得出的迭代解!

([,}+d7rZI7x0

 for i=1:10000 %循环即迭代次数

~]P-s1o(`RD0Sx0

    X=feval(@Lozi,X);%

Lozi Map

Lozi Map

bifurcation diagram 1

bifurcation diagram 1

bifurcation diagram 2

bifurcation diagram 2

Lyapunov-exponent spectrum

Lyapunov-exponent spectrum

control chaos to one of the fixed points

control chaos to one of the fixed points

TAG: Lozi matlab MATLAB Matlab 混沌 系统 映射

liliangbiao的个人空间 liliangbiao 发布于2008-07-19 10:46:45
% for the length limit of the journal in my space, the remains of the last Matlab codes are:
6}8f5|*s"l6`h
Q+GF.U)U论坛的办站宗旨是:不求第一,只求更好,永无止境,更上一层楼。力图把本论坛创造成为一个集交流、共享、学习、创新于一体的大型信息交流平台,帮助广大网友开拓视野促进本领域科研人员的交流和创新。
% Continue with the X=feval(@Lozi,X);%
tNmF`动力学,噪声X=feval(@Lozi,X);%调用主函数
&Q0Z+B/K["N%NLwww.chinavib.com     Y(i, : )=X(1:2,1);论坛的办站宗旨是:不求第一,只求更好,永无止境,更上一层楼。力图把本论坛创造成为一个集交流、共享、学习、创新于一体的大型信息交流平台,帮助广大网友开拓视野促进本领域科研人员的交流和创新。2G6l`qh
     %将每一次迭代后的数组X的上面两个变量存储!
` hSr)^I     %因为下面的两个常数项进行迭代时保持原来的数值不便!论坛的办站宗旨是:不求第一,只求更好,永无止境,更上一层楼。力图把本论坛创造成为一个集交流、共享、学习、创新于一体的大型信息交流平台,帮助广大网友开拓视野促进本领域科研人员的交流和创新。bV|!OkMLI;p
endwww.chinavib.com&^
B'\*e        w7`

     plot(Y(:,1),Y(:,2))%,'.','markersize',5);
L6q8}c'M6r论坛的办站宗旨是:不求第一,只求更好,永无止境,更上一层楼。力图把本论坛创造成为一个集交流、共享、学习、创新于一体的大型信息交流平台,帮助广大网友开拓视野促进本领域科研人员的交流和创新。     %得到Y=[Y(:,1),Y(:,2)],分别指代每一次迭代后的论坛的办站宗旨是:不求第一,只求更好,永无止境,更上一层楼。力图把本论坛创造成为一个集交流、共享、学习、创新于一体的大型信息交流平台,帮助广大网友开拓视野促进本领域科研人员的交流和创新。 O)gS^,x p
C
q%r

     %数组X的上面两个变量,然后点画图.
I4Y
tR0_Vg4e力学,非线性,数学,可靠性,优化,控制,耦合,故障,噪声,流体力学,传热,信号处理,健康监控,声学,算法,编程,工程,软件,vibration,Fluent,math,CFD,matlab,CAE,CAD,ansys,msc
     title('Lozi映射图')%加上图像标题
,q.W1y+};Ax"U     xlabel('x'),ylabel('y')
'Gkh7N*g1X~     %分别给对应的向量随处的坐标命名
_3T
b t'Zg7De
Awww.chinavib.com
%另外还可以使用其它的语句对图像进行进一步的调整
a_ ?YIGD力学,非线性,数学,可靠性,优化,控制,耦合,故障,噪声,流体力学,传热,信号处理,健康监控,声学,算法,编程,工程,软件,vibration,Fluent,math,CFD,matlab,CAE,CAD,ansys,msc>> hold on
9z)]xgx>> plot(1/2.2,0.5/(1.7-(0.5-1)),'r*')论坛的办站宗旨是:不求第一,只求更好,永无止境,更上一层楼。力图把本论坛创造成为一个集交流、共享、学习、创新于一体的大型信息交流平台,帮助广大网友开拓视野促进本领域科研人员的交流和创新。Em        T K3zQ2x+Jb
>> plot(1,0.1,'k*')
happy_7发布于2008-07-19 18:18:25
太好了,谢谢分享!www.chinavib.com[7ZN
D
sv2gX

我在应用第4 Lyapunov-exponent spectrum于一个超混沌中时,出现错误提示:Warnning: Divide by zero.2Dl;la T.Z,P
不知道会是哪项不合适?
liliangbiao的个人空间 liliangbiao 发布于2008-07-19 19:04:41
有可能出现Warnning: Divide by zero,但是一般不影响!建议使用avoid warning: Divide by zero这种语句来实现!
kingsir发布于2008-07-21 14:53:36
正在学习中,谢谢分享!!!
我来说两句

(可选)

关于作者