Lozi混沌映射系统的Matlab实现

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

查看( 139 ) / 评论( 4 )
振动资讯v@!WLl? F

% Author: Thomas Lee
k6a8O rr}4`7K Z&h0% E-mail: lixf1979@126.com振动资讯DN,D1p3B/Y*W9?
% Corresponding: School of Mathematics, Physics and Software Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China

f1?,Yxq[0

*n0[ pz@F0% if you want to get more information, please refer to one of the published articles of the author :

t$d,bf%N&bb0P&Y0

.Fg#o p1h:{)^7b0%李险峰等.Lozi混沌映射的线性反馈控制.河北师范大学学报. 2007,31(4):479-483.

)f r$WKW}P I0

p_R].m t^#d&Q01. Phase Portrait:振动资讯2N v~9a(Y)fd W%L

function newx=Lozi(x);振动资讯 sh,KTF_U

% Lozi方程[差分方程]%newx=Lozi([x;y;p;q]);振动资讯W)zI;i0SS%c

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

Rj+~"Y$lf8^[-?0

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

4R {A [/R7]\0

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

x[9L"BB ~^\0

newx(2,1)=x(4)*x(1);振动资讯a,a^(oYso

newx(3,1)=x(3);振动资讯J/G1aG)E`

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

9W}:H}|M/q%YY0

 

+@kH(P f%k0

X=[1;0.1;1.7;.5];振动资讯 PU;go`)]bux

%前面两个赋初值,后面两个给出了系统中的振动资讯:J!E:Ty2V }oWV

%常数项的值!与newx=Lozi(x)中给出的列向量相对应!振动资讯}qe{`g

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

(i2~Tz$k6w2_5p)]F0

 for i=1:10000 %循环即迭代次数振动资讯H H2c:UKy

    X=feval(@Lozi,X);%调用主函数振动资讯2?PKP(m"BNl]

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

8O Y` f$` I2ES Qk0

    %将每一次迭代后的数组X的上面两个变量存储!

*~ e)V:d$g/[0

    %因为下面的两个常数项进行迭代时保持原来的数值不便!振动资讯%u@L S.v H;n\_k

 end

dX$OD1NEP4U(P0

    plot(Y(:,1),Y(:,2),'.','markersize',1);振动资讯!c`8RJ{3I

    %得到Y=[Y(:,1),Y(:,2)],分别指代每一次迭代后的振动资讯u#}s0EM

    %数组X的上面两个变量,然后点画图.振动资讯+{GeHI1{3n

    title('Lozi映射图')%加上图像标题

c&V5?3EY C0

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

kn1LOG0

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

rVy@?O0U0

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

1Atvs c;^ [/@u0

zyXga2k/@ Wd!e"O02.  Bifurcation diagram 1

u\A4KW\`(on*|0

function newx=Lozi(x);振动资讯x(|Oe,O0In dL

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

G7a%S$aM0{0

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

9Oh[yT-U0

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

^S#EQQ HN#T0

newx(1,1)=-x(3)*abs(x(1))+x(2)+1;振动资讯U2~(B'g(}*X(b;xp

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

}SyZ&\ ML'@0

newx(3,1)=x(3);振动资讯oCw.x,H(\}

newx(4,1)=x(4);振动资讯}%@5F$C sX-kT

 

.|?TocRr0

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

  for p=linspace(0,1.7,1700);振动资讯)zu k#Pr+XB

      %将分岔参数用linspace在区间[0,1.7]振动资讯qd\Tl?

      %等分成1700

5|;c{I4YK2K0

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

O%n~ hj0

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

6vjZ&U8s p,T[-x0

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

i8nQc~0

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

"\dpd/|QJ.X1^0

      %的向量.振动资讯&dI r+v$]Q} s

      for k=1:500 %循环即迭代次数振动资讯2u3H L;S/`

          x=Lozi(x); %调用主函数振动资讯@ \/cWL'? ^n:C

          if k>400振动资讯'S*]{tQL

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

8aK Pe n~{6S1e+{"TT0

              %400个点为迭代过程中的瞬态响应!振动资讯b2de^/?#z?

              Z=[Z,p+x(1)*i];振动资讯7n:o3Vd9pKT

               %P的值以及在这个值所对应最后400次迭代振动资讯|!f2j \Uv

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

3J2u2h a.Z7E0

          end

&y7{5n#N(YxXo5Z0

      end

,~NZP7c1i-a0

  end振动资讯 E%kT$G v!x,q7x K

  plot(Z,'.','markersize',1)振动资讯bcK|q0}

   %得到Z=[Z(:,1),Z(:,2)],分别指代P的值以及在这个

J9Wx\U%pb!b0

   %值所对应最后400次迭代后的数组X的第一个变量x,然后点画图.

%c'bG K:P0

  title('Lozi映射分岔图')%加上图像标题

7Jm9o4o%fx"A4l0

  xlabel('p'),ylabel('x')

n:~OwGMi0

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

0e+pbM T)lo eN0

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

-N*h\!cbg p0

$[},I*SqmH0 

A@XFj)B EV4R/C N0

Wc*J q#~ ?0]*yV03. Bifurcation diagram 2振动资讯r \.{0W#xxy

function newx=Lozi(x);

{H TVd7O ?9]0

% Lozi方程[差分方程]%newx=Lozi([x;y;p;q]);振动资讯s[}{Q;q%['b*}

%方程如下:%x(k+1)=-p*x(k)+y(k)+1;% y(k+1)=q*x(k);振动资讯'_^*e#c0bl0c G

%定义列向量newx及函数Lozi(x)振动资讯 Xtns mzd p

newx(1,1)=-x(3)*abs(x(1))+x(2)+1;振动资讯B;skF*G1R;TXO

newx(2,1)=x(4)*x(1);振动资讯F7v |.a!_1KX

newx(3,1)=x(3);振动资讯;]|/e/U)[

newx(4,1)=x(4);振动资讯0U-p P+_%V0`MJ-f

 

1W!y r;_ @}1Se u0

 P=[];%给出一个空数组,以便存储P的值!振动资讯pu0l*t;W]

  Z=[];%给出一个空数组,以便存储得出的迭代解!振动资讯/F'W\u6w'@bL

  for p=linspace(0,1.7,1700);振动资讯j"QW)cb:Q*~ I

      %将分岔参数用linspace在区间[0,1.7]振动资讯\ gG iT3d c

      %等分成1700振动资讯;@,}:L5D5G%VNV

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

v-O QA*~ y-v8u$k0

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

ar$n/W1pOO/y#c.N0

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

$V+_ a%K$iK0

      %向量相对应,其中值得注意的是p是连续变化振动资讯k }bf6_9i$zkWN

      %的向量.振动资讯 _Ir H'Y6b%A

      for k=1:500

Dk%_^wdlXX0

%循环即迭代次数,但是遗憾的是这里的迭代次数太少,振动资讯u3G5B OI%{$F7@y

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

8J-O8lE8[L*w0

%就越长,但是为了得到较为精确的迭代解,建议适当的增加迭代次数

Y r_}U$Z3_w0

%估计在10000左右,而这时候取最后的1000个点即可!振动资讯.w:`2RO[*ouB\

          x=Lozi(x); %调用主函数振动资讯$v)Yz}R3O4@

          if k>400振动资讯,x&NoU"I

              %取迭代后的最后一百个点,这里认为振动资讯1jO&UEuY"A

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

s1@vo#H7x-[0

              Z=[Z;x(1)];

'`1{Vlbn @5On(q0

              %这个值所对应最后400次迭代振动资讯Yo&X$cW#k

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

H$NHHv*H"l:U8g0

              P=[P;p]; %P的值存储到空变量!振动资讯aXG,\2uJe

          end

.Ke8F kx h9\UI:xi0

      end振动资讯.t/P/o(DwW^|/sa5F

  end

't:i;M/AC0

  plot(P,Z,'.','markersize',1)%点画图

PxN_VM&yS8h0

  title('Lozi映射分岔图')%加上图像标题振动资讯;T.|y!WM9G4N

  xlabel('p'),ylabel('x')振动资讯qjqN t

  %分别给对应的向量随处的坐标命名振动资讯d&AB r"O:VT

  %另外还可以使用其它的语句对图像进行进一步的调整振动资讯m)R Zm$U:t

Ii;|j-O!~2{%T)Dg04 Lyapunov-exponent spectrum

/bJ$|!nM i#U&P+YczT0

function newx=Lozi(x);

^%F `u ej0

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

VA?uo@}0

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

y1yy5y)p,~x6Q/u0

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

*Q0p I1YI.W5C0

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

N-r~&e!O:t0

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

2Y$D _k#H0

newx(3,1)=x(3);振动资讯'|6bv*|eOd

newx(4,1)=x(4);振动资讯"D.p2b1A)kr,o#I

 振动资讯1K3o1e%SA3L*K&e

  d0=1e-8;%定义极小的扰动,还可以定义更小振动资讯K1i;W"U? {`"bH(S

  Z=[];%给出一个空数组,以便存储得出的迭代解!振动资讯:J$B3`wa{ E\cd

  P=[];%给出一个空数组,以便存储P的值!

h5J.Gm`$w-U)B0

  for p=linspace(0,1.7,1700)振动资讯,s\9e}$|%gL$V

      %将分岔参数用linspace在区间[0,1.7]振动资讯"O'mN `(Ws7Z{1x:k

      %等分成1700

D'w5s'b0J j+D8H0

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

3I N@S"W o I/B5FI0

      lsum=0;%定义和的初始值为0.

R@%E7XC[m0

      x=[1;0;p;.5];%初始值振动资讯w(YY [-VIf

      x1=[1;d0;p;.5];%扰动初始值振动资讯2GN,m{Kv UP

      for k=1:1000振动资讯O)K:|)]Y}!V

          %循环即迭代次数,但是遗憾的是这里的迭代次数太少,振动资讯2_5`l;n6]d&RF

%因为如果太多的话,由于上面的p点太多,运行的时间振动资讯-cM'R,a$Z3h

%就越长,但是为了得到较为精确的迭代解,建议适当的增加迭代次数

IE6X(D,~WL/q2B0

%估计在10000左右,而这时候取最后的1000个点即可!振动资讯km`6A-z^5Qa

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

*c#XNnj5\/r0

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

(|6{`)RGI,\b0R0

          d1=sqrt((x(1)-x1(1))^2+(x(2)-x1(2))^2);振动资讯1eh nVhm7Z

          %定义两条规线在欧氏空间中的距离振动资讯4b3N-rf-m%Ki

          x1=x+(d0/d1)*(x1-x);

x{Yasl a0

          %选择基准轨线振动资讯,u/VE;_u/u n.U

          if k>500振动资讯 I`;^?L

              %取迭代后的最后五百个点,这里认为振动资讯k!@5X:o!o X$gc

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

q-Rs e7G3K0

              lsum=lsum+log(d1/d0);

+`9]"u^6je4z0

              %求后500积分后的特征值的和

fd?0_ QC!p/yZ3?s-Y|l0

          end振动资讯.p!d1G2q B0XA ]T

      end振动资讯5R2W&nw ZC5FJU

      le=lsum/(k-500);%求平均值得到指数值

's6M&T[v^a0

      if k==1000 %取最后一个点振动资讯|3A^L2W7O,E|6_

      Z=[Z,le];%存储最后一个指数值振动资讯"a@B~5w[

      P=[P,p];%存储p(以对应指数)振动资讯,t%B#S*xR}3BzQ

      end振动资讯#xh)vZ2i,vy

  end振动资讯H"k};dm+A.r"p:`

  plot(P,Z,'-')%线画图振动资讯{?.MG@9Dj

  title('Lozi最大Lyapunov指数图')振动资讯&C["{ DH3zf

  xlabel('p'),ylabel('lyapunov')振动资讯 j:DeB$vuh*e

振动资讯,W[t7Ut

5 Chaos control to one of the fixed points振动资讯.mM7^ |-T(L8W

振动资讯1BG(QDh.w3W

5.1 Fixed points

4}#I W?0I0

q=0.5;振动资讯&[S4~q~1`

for p=0:0.001:1.7振动资讯!I[9d+H!g

x1=1/(p-q+1);振动资讯9@3n*A.N&UJ#cVHfv

x2=sign(x1);振动资讯b9jo3e W,bw

K=max(q-1-p*x2,q-1+p*x2);振动资讯;ZgcaL$G:O

plot(p,K,'r')

e a)c5vC c*nc:Tf0

hold on振动资讯cey cC-`H

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

-y R8Rvn!P4Iud0

plot(p,K1,'b')

*T GO/nq8L6w*O:g0

end

;S N"qUC0

 振动资讯*GuuI^9Pm~

5.2 Fixed points controller 振动资讯M0hys*tv I

 

S@&Am-J_S?0

 振动资讯'h+f,hFPz

function newx=Lozi(x);

'h+H UC-d/l0

% Lozi方程[差分方程]%newx=Lozi([x;y;p;q]);振动资讯)YuA"s @

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

1u;C pM9Z]+E6{y0

%定义列向量newx及函数Lozi(x)振动资讯$u P jd/MD}/[Prg

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

!l {&F X9Sdi P0

newx(2,1)=x(4)*x(1)-1.222*(x(1)-1/2.2);振动资讯 S7q8X4m7g+O

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

.a G'x:M]ua9^RI0

newx(4,1)=x(4);振动资讯Nf5t+H G*U8U

 

,M?&~.f@0

 X=[1;0.1;1.7;.5];

.M4fV kK,nc)W0

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

b$K9C_c0

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

%@%l6O&V%N.}M[.W kB;x0

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

|DJ1xF2v0

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

BU6Ta#fx6y0

    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:www.chinavib.com^UVR0t-B(oA Y
% Continue with the X=feval(@Lozi,X);% 动力学,噪声6M(v'o]%B$OP:urP
X=feval(@Lozi,X);%调用主函数论坛的办站宗旨是:不求第一,只求更好,永无止境,更上一层楼。力图把本论坛创造成为一个集交流、共享、学习、创新于一体的大型信息交流平台,帮助广大网友开拓视野促进本领域科研人员的交流和创新。};}3vw n
j

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

mC'a)}-G动力学,噪声
     %将每一次迭代后的数组X的上面两个变量存储!
!`        W        k+|6B%C C)`论坛的办站宗旨是:不求第一,只求更好,永无止境,更上一层楼。力图把本论坛创造成为一个集交流、共享、学习、创新于一体的大型信息交流平台,帮助广大网友开拓视野促进本领域科研人员的交流和创新。     %因为下面的两个常数项进行迭代时保持原来的数值不便!振动资讯"?6yr5f%yj;IxMP,VV
endwww.chinavib.com9qz!i'I&{5O
     plot(Y(:,1),Y(:,2))%,'.','markersize',5);力学,非线性,数学,可靠性,优化,控制,耦合,故障,噪声,流体力学,传热,信号处理,健康监控,声学,算法,编程,工程,软件,vibration,Fluent,math,CFD,matlab,CAE,CAD,ansys,msc\u#|I'{
     %得到Y=[Y(:,1),Y(:,2)],分别指代每一次迭代后的
D\/Ez\7xP/w~5h_动力学,噪声     %数组X的上面两个变量,然后点画图.www.chinavib.comUv5G_I"nxCu&zG;Q
     title('Lozi映射图')%加上图像标题
$Q+x-{:lS5p#Pwww.chinavib.com     xlabel('x'),ylabel('y')
|
yF        m'ME)dpg"d力学,非线性,数学,可靠性,优化,控制,耦合,故障,噪声,流体力学,传热,信号处理,健康监控,声学,算法,编程,工程,软件,vibration,Fluent,math,CFD,matlab,CAE,CAD,ansys,msc
     %分别给对应的向量随处的坐标命名
U*q|\
]b Q;K:I/k振动资讯
%另外还可以使用其它的语句对图像进行进一步的调整振动资讯6s5R ij)I8T [Y3M
>> hold on
`2d`1F4GdxHO`振动资讯>> plot(1/2.2,0.5/(1.7-(0.5-1)),'r*')
c3\t,[b)xt`Q/]"D论坛的办站宗旨是:不求第一,只求更好,永无止境,更上一层楼。力图把本论坛创造成为一个集交流、共享、学习、创新于一体的大型信息交流平台,帮助广大网友开拓视野促进本领域科研人员的交流和创新。>> plot(1,0.1,'k*')
happy_7发布于2008-07-19 18:18:25
太好了,谢谢分享!
QWa I6rO论坛的办站宗旨是:不求第一,只求更好,永无止境,更上一层楼。力图把本论坛创造成为一个集交流、共享、学习、创新于一体的大型信息交流平台,帮助广大网友开拓视野促进本领域科研人员的交流和创新。我在应用第4 Lyapunov-exponent spectrum于一个超混沌中时,出现错误提示:Warnning: Divide by zero.
axRol;t2_2t4B[www.chinavib.com不知道会是哪项不合适?
liliangbiao的个人空间 liliangbiao 发布于2008-07-19 19:04:41
有可能出现Warnning: Divide by zero,但是一般不影响!建议使用avoid warning: Divide by zero这种语句来实现!
kingsir发布于2008-07-21 14:53:36
正在学习中,谢谢分享!!!
我来说两句

(可选)

关于作者