天天看點

混沌時間序列的幾個例子1.蟲口模型 Logistics2.洛倫茲方程-天氣對流模型3.Chen's吸引子

最近在研究混沌時間序列,想了解基本知識,看的一本書叫做《混沌時間序列分析及其應用》(作者:呂金虎)(是中文書籍,不是翻譯的書籍)

書中第二章 混沌動力學 提到了幾個典型的混沌的例子

1.蟲口模型 Logistics

1.1 原理

蟲口模型---昆蟲變化的簡單數學模型。(昆蟲一次産卵的數量極大,子代出生後,其親代的數量可以忽略不計)認為昆蟲的種群是由單一的世代構成,在曆代之間沒有重疊。是以,昆蟲種群的增長(蟲口數)是分步進行的,例如,每個3年、5年或7年出現一次成蟲期的蟬就是這樣。

1.2 代碼

說明:首先進行一些疊代,使之大概達到一種有迹可循的狀态;然後就記錄結果。 橫軸可以看做是疊代次數,橫軸上的一點,對應的縱軸上很多個點的疊加。

%% -------------------蟲口模型-分岔圖----------- % 蟲口模型 x(n+1) = lambda * x(n) * (1 - x(n))  % 當 lambda 從 3 到 4 的過渡圖像 % 參見<<混沌動力學初步>>陳士華,陸君安編著 P46

clc clear close all

lambda = 0:5e-4:4;%原來是3:4 x = 0.4*ones(1,length(lambda));

N1 = 800;                   % 前面的疊代點數(原來是400) N2 = 200;                   % 後面的疊代點數(原來是100)

f = zeros(N1+N2,length(lambda)); for i = 1:N1+N2     x = lambda .* x .* (1 - x);     f(i,:) = x; end f = f(N1+1:end,:);

plot(lambda,f,'k.','MarkerSize',1) xlabel('\lambda') ylabel('x'); title('Logistic蟲口模型-蟲口随着λ的變化')

1.3 結果

混沌時間序列的幾個例子1.蟲口模型 Logistics2.洛倫茲方程-天氣對流模型3.Chen's吸引子

2.洛倫茲方程-天氣對流模型

2.1 原理

1963年,美國著名氣象學家洛倫茲在研究天氣預報問題時,發現确定性方程中出現混沌現象。

混沌時間序列的幾個例子1.蟲口模型 Logistics2.洛倫茲方程-天氣對流模型3.Chen's吸引子

振蕩曲線與完全随機的噪聲不一樣,它似乎有一定的規律:無論時間多長,它都不會完全重複以前某時刻的振蕩,即此時振蕩具有非周期性和随機性。這些軌迹被限制在相平面(空間)的有限區域内,這樣的有限區域稱為動力系統的吸引子(attractor)。對于周期運動,吸引子是一條簡單的閉曲線。但形如洛倫茲系統這樣的具有随機性的費周期運動,其吸引子遠非什麼複雜的閉曲線,其軌線往往是反複折疊和互相交叉而形成的密集的帶。這種具有複雜結構的吸引子稱為奇怪吸引子(strange attractor)。具有奇怪吸引子的運動就是混沌的。

2.2 代碼

2.2.1 主函數

%本程式的作用:求解&繪圖

[t,y]=ode45('Lorenz',[0 30],[12,2,9]); (可以寫作: [t,y]=ode45(@Lorenz,[0 30],[12,2,9]) )

figure(1) plot(t,y(:,1));

title('x關于t的變化圖');

xlabel('t');

ylabel('x(t)');

figure(2)

plot(t,y(:,2));

title('y關于t的變化圖');

xlabel('t');

ylabel('y(t)');

figure(3)

plot(t,y(:,3));

title('z關于t的變化圖');

xlabel('t');

ylabel('z(t)');

figure(4)

plot3(y(:,1),y(:,2),y(:,3))

title({'x,y,z的空間關系圖','Lorenz方程在三維相空間中的軌迹圖形'}');

xlabel('x');ylabel('y'),zlabel('z');

view([20,32]);

%% ----驗證“蝴蝶效應”----------

%解釋:洛倫茲方程的解對初始值十分敏感,現在對y的初始值稍加修改,将2改為2.01和1.99,

%           然後求解z的數值解。

%結果說明:随着時間的推移,三條曲線的吻合程度越來越差,差距越來越大,變化也越來越不明顯,成為混沌狀态、。

%                   前面一部分(t<5),三條曲線幾乎完全重合。

% clf %清楚目前figure内的圖形

figure(5)

hold on

[t,u]=ode45('Lorenz',[0 15],[12,2,9]);

plot(t,u(:,3),'Color','r');

[t,v]=ode45('Lorenz',[0 15],[12,2.01,9]);

plot(t,v(:,3),'Color','b');

[t,w]=ode45('Lorenz',[0 15],[12,1.99,9]);

plot(t,w(:,3),'Color','k');

hold off

legend('y(t=0)=2','y(t=0)=2.01','y(t=0)=1.99');

xlabel('t');

ylabel('z(t)');

title('蝴蝶效應-y的不同的初始值下,z的取值變化');

2.2.2 函數 Lorenz.m

% (1)洛倫茲方程是一組常微分方程,Runge-Kutta方法是求解常微分方程的經典方法,

% Matlab提供了多個采用該方法的函數指令:ode23 ,ode45 等。

% (2)下面采用ode45指令求解Lorenz在研究大氣對流模型時得到的洛倫茲方程:

% dx/dt=A*(-x+y)

% dy/dt=B*x-y-x*z

% dz/dt=x*y-C*z

% 經常引用的參數是: A=10,B=2,C=8/3   相空間維數為3

% (3)為了用Matlab求解,将x,y,z表示為y(1),y(2),y(3),即為列向量中的三個分量

function dy=Lorenz(t,y)

A=10;

B=28;

C=8/3;

dy=zeros(3,1);

dy(1)=A*(-y(1)+y(2));

dy(2)=B*y(1)-y(2)-y(1)*y(3);

dy(3)=y(1)*y(2)-C*y(3);

end

3.Chen's吸引子

3.1 微分方程求解

3.1.1定義函數Chens.m

function dy=Chens(t,y)

dy=zeros(3,1);%一個三行的矢量

A=35;

B=3;

C=28;

dy(1)=A*(y(2)-y(1));

dy(2)=(C-A)*y(1)-y(1)*y(3)+C*y(2);

dy(3)=y(1)*y(2)-B*y(3);

end

3.1.2求解方程

%二階、三階Runge-Kutta法積分,采用函數:ode23

%四階、五階Runge-Kutta法積分,采用函數:ode45

[T,Y]= ode45(@Chens,[0 200],[0 1 0]);

plot3(Y(:,1),Y(:,2),Y(:,3));

xlabel('x axis');ylabel('y axis');zlabel('z axis');

view(0,90);%在xoy面的投影

view(90,0);%在yoz面的投影

view(0,0);%在xoz面的投影

3.2 線性方程組求解

%% ---------求解平衡點---------------

syms x y z

[solx,soly,solz]= solve(35*(y-x) = =0,-7*x-x*z+28*y==0,x*y-3*z==0,x,y,z)

solutions=[solx,soly,solz] 求得的解如下: solutions =

[          0,          0,  0]

[ -3*7^(1/2), -3*7^(1/2), 21]

[  3*7^(1/2),  3*7^(1/2), 21]

繼續閱讀