<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
洛倫茲吸引子(Lorenz attractor)是由MIT大學的氣象學家Edward Lorenz在1963年給出的,他給出第一個混沌現象——蝴蝶效應。。。。。。。。廢話不多說。
反正咱就是,好看且有用咱就寫程式碼,第零部分給出公式。第一部分給出 混沌吸引子 影象,第二部分給出龐加萊截面法 分岔圖 繪製。
Lorenz微分方程組定義如下:
非常容易能寫出該微分方程組函數:
function dL=Lorenz(t,L) % L=[x;y;z;a;r;b]; % dL=[dx/dt;dy/dt;dz/dt;0,0,0]; % dz/dt=-a*(x-y) % dy/dt=x*(r-z)-y % dz/dt=x*y-b*z dL=zeros([6,1]); dL(1)=-L(4)*(L(1)-L(2)); dL(2)=L(1)*(L(5)-L(3))-L(2); dL(3)=L(1)*L(2)-L(6)*L(3); dL(4:6)=0; end
基礎繪圖:
[~,L]=ode45(@(t,L)Lorenz(t,L),0:.01:100,[1;1;1;10;28;8/3]); plot3(L(:,1),L(:,2),L(:,3)) grid on
修飾動態圖:
% ode45求解 [~,L]=ode45(@(t,L)Lorenz(t,L),0:.01:100,[1;1;1;10;28;8/3]); % 修飾及屬性設定 ax=gca; hold on;grid on plhdl=plot3(0,0,0,'Color',[0.9843 0.8588 0.5333 0.5],'LineWidth',1.3); ax.XColor=[1,1,1].*.6;ax.XLim=[-20,20]; ax.YColor=[1,1,1].*.6;ax.YLim=[-30,30]; ax.ZColor=[1,1,1].*.6;ax.ZLim=[0,50]; ax.LineWidth=1.5; ax.GridAlpha=.09; ax.GridLineStyle='-.'; ax.FontName='cambria'; ax.Color=[0 0 0]; ax.DataAspectRatio=[1,1,1]; view([-159,18]); % 迴圈繪圖 for i=1:size(L,1) plhdl.XData=L(1:i,1); plhdl.YData=L(1:i,2); plhdl.ZData=L(1:i,3); drawnow end
基本程式碼:
這裡使用龐加萊截面法,即繪製y=x平面上|y|的影象,基本程式碼如下:
Z=[]; for r=1:500 % 捨棄前面迭帶的結果,用後面的結果畫圖 [~,L]=ode45(@(t,L)Lorenz(t,L),[0,1],[1;1;1;10;r;8/3]); [T,L]=ode45(@(t,L)Lorenz(t,L),[0,50],L(end,:)); D=L(:,2)-L(:,1); for k2=2:size(L,1) k1=k2-1; if D(k1)*D(k2)<=0 y=(L(k2,1).*L(k1,2)-L(k1,1).*L(k2,2))./(D(k2)-D(k1)); Z=[Z,r+abs(y').*1i]; end end end plot(Z,'.','markersize',1) title('Lorenz對映分岔圖') xlabel('r'),ylabel('|y| where x=y')
程式碼有一些地方詳細講解一下,首先說明為什麼要用
Z=[Z,r+abs(y').*1i];
的格式進行儲存,這樣儲存可以少構造一個陣列,一般情況下我們需要分別儲存γ和|y|到兩個矩陣,儲存為複數形式就可以複平面繪圖減少初始化矩陣數量。
其次程式碼中用了D(k1)*D(k2)<=0來判斷是否採點,
D(k1)=x1-y1,D(k2)=x2-y2
當D(k1)*D(k2)<=0時說明(x1,y1),(x2,y2)兩點分別在 y=x直線兩側。
另外說明一下:
y=(L(k2,1).*L(k1,2)-L(k1,1).*L(k2,2))./(D(k2)-D(k1));
是啥。
其實就是構造的兩點連線與直線y=x的交點:
PS:為了進一步減少空間複雜度,我們可以將上述函數更改為完全由x,y差值以及y代替,這樣就可以直接將中間變數D儲存到原來x的位置,減少中間變數的數量:
因此程式碼可以改寫為(當然為了可讀性最後並沒有採取這個策略hiahiahia):
L(:,1)=L(:,2)-L(:,1); for k2=2:size(L,1) k1=k2-1; if L(k1,1)*L(k2,1)<=0 y=L(k2,2)+(L(k1,2)-L(k2,2)).*L(k2,1)./(L(k2,1)-L(k1,1)); Z=[Z,r+abs(y').*1i]; end end
最後,這部分程式碼依賴迴圈我們完全可以將其向量化,即修改為:
Z=[]; for r=1:500 % 捨棄前面迭帶的結果,用後面的結果畫圖 [~,L]=ode45(@(t,L)Lorenz(t,L),[0,1],[1;1;1;10;r;8/3]); [T,L]=ode45(@(t,L)Lorenz(t,L),[0,50],L(end,:)); % 找到穿過直線y=x的前後兩個點 D=L(:,2)-L(:,1); logInd=D(2:end).*D(1:end-1)<=0; k1=[logInd;false];k2=[false;logInd]; % 對找到的兩個點進行插值 y=(L(k2,1).*L(k1,2)-L(k1,1).*L(k2,2))./(D(k2,:)-D(k1,:)); Z=[Z,r+abs(y').*1i]; end plot(Z,'.','markersize',1) title('Lorenz對映分岔圖') xlabel('r'),ylabel('|y| where x=y')
fig=gcf; % 左圖 ax1=axes('Parent',fig); ax1.Position=[1/12 1/12 1/2-1/6 1-1/6]; hold on;grid on [~,L]=ode45(@(t,L)Lorenz(t,L),0:.01:100,[1;1;1;10;28;8/3]); plot3(L(:,1),L(:,2),L(:,3),'Color',[0 0.2510 0.4510 0.5],'LineWidth',1.2) ax1.XColor=[1,1,1].*.6; ax1.YColor=[1,1,1].*.6; ax1.ZColor=[1,1,1].*.6; ax1.LineWidth=1.5; ax1.GridAlpha=.09; ax1.GridLineStyle='-.'; ax1.FontName='cambria'; ax1.DataAspectRatio=[1,1,1]; view([-159,18]); % 右圖 ax2=axes('Parent',fig); ax2.Position=[1/2 1/12 1/2-1/18 1-1/6]; hold on;grid on Z=[]; for r=1:500 % 捨棄前面迭帶的結果,用後面的結果畫圖 [~,L]=ode45(@(t,L)Lorenz(t,L),[0,1],[1;1;1;10;r;8/3]); [T,L]=ode45(@(t,L)Lorenz(t,L),[0,50],L(end,:)); % 找到穿過直線y=x的前後兩個點 D=L(:,2)-L(:,1); logInd=D(2:end).*D(1:end-1)<=0; k1=[logInd;false];k2=[false;logInd]; % 對找到的兩個點進行插值 y=L(k2,2)+(L(k1,2)-L(k2,2)).*D(k2,:)./(D(k2,:)-D(k1,:)); Z=[Z,r+abs(y').*1i]; end plot(Z,'.','markersize',1,'Color',[0 0.2510 0.4510 0.5]) ax2.YLabel.String='|y| where x=y'; ax2.YLabel.FontSize=14; ax2.XColor=[1,1,1].*.4; ax2.YColor=[1,1,1].*.4; ax2.ZColor=[1,1,1].*.4; ax2.LineWidth=1.5; ax2.GridAlpha=.09; ax2.GridLineStyle='-.'; ax2.FontName='cambria'; % Lorenz函數 function dL=Lorenz(t,L) % L=[x;y;z;a;r;b]; % dL=[dx/dt;dy/dt;dz/dt;0,0,0]; % dz/dt=-a*(x-y) % dy/dt=x*(r-z)-y % dz/dt=x*y-b*z dL=zeros([6,1]); dL(1)=-L(4)*(L(1)-L(2)); dL(2)=L(1)*(L(5)-L(3))-L(2); dL(3)=L(1)*L(2)-L(6)*L(3); dL(4:6)=0; end
以上就是基於Matlab繪製洛倫茲吸引子相圖的詳細內容,更多關於Matlab洛倫茲吸引子相圖的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45