matlab编写的Lyapunov指数计算程序.docx
- 文档编号:10214762
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:21
- 大小:20.24KB
matlab编写的Lyapunov指数计算程序.docx
《matlab编写的Lyapunov指数计算程序.docx》由会员分享,可在线阅读,更多相关《matlab编写的Lyapunov指数计算程序.docx(21页珍藏版)》请在冰点文库上搜索。
matlab编写的Lyapunov指数计算程序
matlab编写的Lyapunov指数计算程序
已有2406次阅读2009-12-2908:
37|个人分类:
其它|系统分类:
科普集锦|关键词:
李雅普诺夫指数
一、计算连续方程Lyapunov指数的程序
其中给出了两个例子:
计算Rossler吸引子的Lyapunov指数
计算超混沌Rossler吸引子的Lyapunov指数
二、recnstitution重构相空间,在非线性系统分析中有重要的作用
function[Texp,Lexp]=lyapunov(n,tstart,stept,tend,ystart,ioutp);
globalDS;
globalP;
globalcalculation_progressfirst_call;
globaldriver_window;
globalTRJ_buferTime_buferbufer_i;
%
%LyapunovexponentcalcullationforODE-system.
%
%Thealogrithmemployedinthism-filefordeterminingLyapunov
%exponentswasproposedin
%
%A.Wolf,J.B.Swift,H.L.Swinney,andJ.A.Vastano,
%"DeterminingLyapunovExponentsfromaTimeSeries,"PhysicaD,
%Vol.16,pp.285-317,1985.
%
%ForintegratingODEsystemcanbeusedanyMATLABODE-suitemethods.
%ThisfunctionisapartofMATDSprogram-toolboxfordynamicalsysteminvestigation
%See:
http:
//www.math.rsu.ru/mexmat/kvm/matds/
%
%Inputparameters:
%n-numberofequation
%rhs_ext_fcn-handleoffunctionwithrighthandsideofextendedODE-system.
%ThisfunctionmustincludeRHSofODE-systemcoupledwith
%variationalequation(nitemsoflinearizedsystems,seeExample).
%fcn_integrator-handleofODEintegratorfunction,forexample:
@ode45
%tstart-startvaluesofindependentvalue(timet)
%stept-stepont-variableforGram-Schmidtrenormalizationprocedure.
%tend-finishvalueoftime
%ystart-startpointoftrajectoryofODEsystem.
%ioutp-stepofprinttoMATLABmainwindow.ioutp==0-noprint,
%ifioutp>0theneachioutp-thpointwillbeprint.
%
%Outputparameters:
%Texp-timevalues
%Lexp-Lyapunovexponentstoeachtimevalue.
%
%UsershavetowritetheirownODEfunctionsfortheirspecified
%systemsandusehandleofthisfunctionasrhs_ext_fcn-parameter.
%
%Example.Lorenzsystem:
%dx/dt=sigma*(y-x)=f1
%dy/dt=r*x-y-x*z=f2
%dz/dt=x*y-b*z=f3
%
%TheJacobianofsystem:
%|-sigmasigma0|
%J=|r-z-1-x|
%|yx-b|
%
%Then,thevariationalequationhasaform:
%
%F=J*Y
%whereYisasquarematrixwiththesamedimensionasJ.
%Correspondingm-file:
%functionf=lorenz_ext(t,X)
%SIGMA=10;R=28;BETA=8/3;
%x=X
(1);y=X
(2);z=X(3);
%
%Y=[X(4),X(7),X(10);
%X(5),X(8),X(11);
%X(6),X(9),X(12)];
%f=zeros(9,1);
%f
(1)=SIGMA*(y-x);f
(2)=-x*z+R*x-y;f(3)=x*y-BETA*z;
%
%Jac=[-SIGMA,SIGMA,0;R-z,-1,-x;y,x,-BETA];
%
%f(4:
12)=Jac*Y;
%
%RunLyapunovexponentcalculation:
%
%[T,Res]=lyapunov(3,@lorenz_ext,@ode45,0,0.5,200,[010],10);
%
%Seefiles:
lorenz_ext,run_lyap.
%
%--------------------------------------------------------------------
%Copyright(C)2004,GovorukhinV.N.
%ThisfileisintendedforusewithMATLABandwasproducedforMATDS-program
%http:
//www.math.rsu.ru/mexmat/kvm/matds/
%lyapunov.misfreesoftware.lyapunov.misdistributedinthehopethatit
%willbeuseful,butWITHOUTANYWARRANTY.
%
%
%n=numberofnonlinearodes
%n2=n*(n+1)=totalnumberofodes
%
options=odeset('RelTol',DS
(1).rel_error,'AbsTol',DS
(1).abs_error,'MaxStep',DS
(1).max_step,...
'OutputFcn',@odeoutp,'Refine',0,'InitialStep',0.001);
n_exp=DS
(1).n_lyapunov;
n1=n;n2=n1*(n_exp+1);
neq=n2;
%Numberofsteps
nit=round((tend-tstart)/stept)+1;
%Memoryallocation
y=zeros(n2,1);
cum=zeros(n2,1);
y0=y;
gsc=cum;
znorm=cum;
%Initialvalues
y(1:
n)=ystart(:
);
fori=1:
n_expy((n1+1)*i)=1.0;end;
t=tstart;
Fig_Lyap=figure;
set(Fig_Lyap,'Name','Lyapunovexponents','NumberTitle','off');
set(Fig_Lyap,'CloseRequestFcn','');
holdon;
boxon;
timeplot=tstart+(tend-tstart)/10;
axis([tstarttimeplot-11]);
title('DynamicsofLyapunovexponents');
xlabel('t');
ylabel('Lyapunovexponents');
Fig_Lyap_Axes=findobj(Fig_Lyap,'Type','axes');
fori=1:
n_exp
PlotLyap{i}=plot(tstart,0);
end;
uu=findobj(Fig_Lyap,'Type','line');
fori=1:
size(uu,1)
set(uu(i),'EraseMode','none');
set(uu(i),'XData',[],'YData',[]);
set(uu(i),'Color',[00rand]);
end
ITERLYAP=0;
%Mainloop
calculation_progress=1;
whilet tt=t+stept; ITERLYAP=ITERLYAP+1; iftt>tend,tt=tend;end; %SolutuionofextendedODEsystem %[T,Y]=feval(fcn_integrator,rhs_ext_fcn,[tt+stept],y); whilecalculation_progress==1 [T,Y]=integrator(DS (1).method_int,@ode_lin,[ttt],y,options,P,n,neq,n_exp); first_call=0; ifcalculation_progress==99,break;end; if(T(size(T,1)) y=Y(size(Y,1),: ); y(1,1: n)=TRJ_bufer(bufer_i,1: n); t=Time_bufer(bufer_i); calculation_progress=1; else calculation_progress=0; end; end; if(calculation_progress==99) break; else calculation_progress=1; end; t=tt; y=Y(size(Y,1),: ); first_call=0; % %constructneworthonormalbasisbygram-schmidt % znorm (1)=0.0; forj=1: n1znorm (1)=znorm (1)+y(n1+j)^2;end; znorm (1)=sqrt(znorm (1)); forj=1: n1y(n1+j)=y(n1+j)/znorm (1);end; forj=2: n_exp fork=1: (j-1) gsc(k)=0.0; forl=1: n1gsc(k)=gsc(k)+y(n1*j+l)*y(n1*k+l);end; end; fork=1: n1 forl=1: (j-1) y(n1*j+k)=y(n1*j+k)-gsc(l)*y(n1*l+k); end; end; znorm(j)=0.0; fork=1: n1znorm(j)=znorm(j)+y(n1*j+k)^2;end; znorm(j)=sqrt(znorm(j)); fork=1: n1y(n1*j+k)=y(n1*j+k)/znorm(j);end; end; % %updaterunningvectormagnitudes % fork=1: n_expcum(k)=cum(k)+log(znorm(k));end; % %normalizeexponent % rescale=0; u1=1.e10; u2=-1.e10; fork=1: n_exp lp(k)=cum(k)/(t-tstart); %Plot Xd=get(PlotLyap{k},'Xdata'); Yd=get(PlotLyap{k},'Ydata'); iftimeplot u1=min(u1,min(Yd)); u2=max(u2,max(Yd)); end; Xd=[Xdt];Yd=[Ydlp(k)]; set(PlotLyap{k},'Xdata',Xd,'Ydata',Yd); end; iftimeplot timeplot=timeplot+(tend-tstart)/20; figure(Fig_Lyap); axis([tstarttimeplotu1u2]);end; drawnow; %Outputmodification ifITERLYAP==1 Lexp=lp; Texp=t; else Lexp=[Lexp;lp]; Texp=[Texp;t]; end; if(mod(ITERLYAP,ioutp)==0) fork=1: n_exp txtstring{k}=['\lambda_'int2str(k)'='num2str(lp(k))]; end legend(Fig_Lyap_Axes,txtstring,3); end; end; ss=warndlg('Attention! Plotoflyapunovexponentswillbeclosed! ','PressOKtocontinue! '); uiwait(ss); delete(Fig_Lyap); fprintf('\n\nResultsofLyapunovexponentscalculation: \nt=%6.4f',t); fork=1: n_expfprintf('L%d=%f;',k,lp(k));end; fprintf('\n'); if~isempty(driver_window) ifishandle(driver_window) delete(driver_window); driver_window=[]; end; end; calculation_progress=0; update_ds; 三、wolf方法计算李雅普诺夫指数 四、给出了分形计算的源代码的matlab程序,可以迅速帮助大家进行分形的分析与计算,参数容易设置 function[Texp,Lexp]=new1lyapunov(n,rhs_ext_fcn,fcn_integrator,tstart,stept,tend,ystart,ioutp,d); % %LyapunovexponentcalcullationforODE-system. % %Thealogrithmemployedinthism-filefordeterminingLyapunov %exponentswasproposedin % %A.Wolf,J.B.Swift,H.L.Swinney,andJ.A.Vastano, %"DeterminingLyapunovExponentsfromaTimeSeries,"PhysicaD, %Vol.16,pp.285-317,1985. % %ForintegratingODEsystemcanbeusedanyMATLABODE-suitemethods. %ThisfunctionisapartofMATDSprogram-toolboxfordynamicalsysteminvestigation %See: http: //www.math.rsu.ru/mexmat/kvm/matds/ % %Inputparameters: %n-numberofequation %rhs_ext_fcn-handleoffunctionwithrighthandsideofextendedODE-system. %ThisfunctionmustincludeRHSofODE-systemcoupledwith %variationalequation(nitemsoflinearizedsystems,seeExample). %fcn_integrator-handleofODEintegratorfunction,forexample: @ode45 %tstart-startvaluesofindependentvalue(timet) %stept-stepont-variableforGram-Schmidtrenormalizationprocedure. %tend-finishvalueoftime %ystart-startpointoftrajectoryofODEsystem. %ioutp-stepofprinttoMATLABmainwindow.ioutp==0-noprint, %ifioutp>0theneachioutp-thpointwillbeprint. % %Outputparameters: %Texp-timevalues %Lexp-Lyapunovexponentstoeachtimevalue. % %UsershavetowritetheirownODEfunctionsfortheirspecified %systemsandusehandleofthisfunctionasrhs_ext_fcn-parameter. % %Example.Lorenzsystem: %dx/dt=sigma*(y-x)=f1 %dy/dt=r*x-y-x*z=f2 %dz/dt=x*y-b*z=f3 % %TheJacobianofsystem: %|-sigmasigma0| %J=|r-z-1-x| %|yx-b| % %Then,thevariationalequationhasaform: % %F=J*Y %whereYisasquarematrixwiththesamedimensionasJ. %Correspondingm-file: %functionf=lorenz_ext(t,X) %SIGMA=10;R=28;BETA=8/3; %x=X (1);y=X (2);z=X(3); % %Y=[X(4),X(7),X(10); %X(5),X(8),X(11); %X(6),X(9),X(12)]; %f=zeros(9,1); %f (1)=SIGMA*(y-x);f (2)=-x*z+R*x-y;f(3)=x*y-BETA*z; % %Jac=[-SIGMA,SIGMA,0;R-z,-1,-x;y,x,-BETA]; % %f(4: 12)=Jac*Y; % %RunLyapunovexponentcalculation: % %[T,Res]=lyapunov(3,@lorenz_ext,@ode45,0,0.5,200,[010],10); % %Seefiles: lorenz_ext,run_lyap. % %-------------------------------------------------------------------- %Copyright(C)2004,GovorukhinV.N. %ThisfileisintendedforusewithMATLABandwasproducedforMATDS-program %http: //www.math.rsu.ru/mexmat/kvm/matds/ %lyapunov.misfreesoftware.lyapunov.misdistributedinthehopethatit %willbeuseful,butWITHOUTANYWARRANTY. % % %n=numberofnonlinearodes %n2=n*(n+1)=totalnumberofodes % n1=n;n2=n1*(n1+1); %Numberofsteps nit=round((tend-tstart)/stept); %Memoryallocation y=zeros(n2,1);cum=zeros(n1,1);y0=y; gsc=cum;znorm=cum; %Initialvalues y(1: n)=ystart(: ); fori=1: n1y((n1+1)*i)=1.0;end; t=tstart; %Mainloop forITERLYAP=1: nit %SolutuionofextendedODEsystem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 编写 Lyapunov 指数 计算 程序