簡體   English   中英

Matlab:相空間圖

[英]Matlab : Phase space plot

我是混沌和非線性動力學的初學者。 我試圖使用Matlab為Tent Map繪制相空間圖。 相空間圖是其獨立變量的圖。 因此,如果系統具有一個變量,那么它將是前一個值與下一個值的曲線圖。 該圖的輪廓類似於“帳篷地圖”,但我得到了幾條交叉線。 相空間圖應看起來像一個三角形(因此稱為Tent),其邊界介於零和一之間。 如果參數為mu,則最大值應為mu / 2。 正確的相空間圖應為

在此處輸入圖片說明

我也嘗試了其他離散地圖,並獲得了相似的線條。 但是,在所有書籍中,我看到了一條沒有線條的干凈曲線。 我要去哪里錯了? 同樣,繪圖也不是從X軸的零開始。 這個問題也是從編程和概念的角度來看的。 我不知道如何獲得x[n] vs x[n-1]的圖,如Wikipedia中給出的圖所示。

帳篷地圖

這是帳篷地圖的Matlab代碼,其中參數mu = 2

N = 256;
x(1) = rand();  % Initial condition

for j=2:N
    if (double(x(j-1)))>0 && (double(x(j-1)))<0.5        
        x(j)=2*x(j-1);                        
    elseif (double(x(j-1)))>=0.5                          
        x(j)=2*(1-x(j-1));                    
    end
end

for k = 2:N
    next(k) = x(k-1);
end

plot(next,x)

您的代碼中有幾個問題。 首先,您的條件太復雜了,並且不需要將任何東西都double ,因為這始終是Matlab的默認數據類型。 這是計算循環的清理代碼:

for j = 2 : N
    if x(j - 1) < 0.5        
        x(j) = 2 * x(j - 1);                        
    else  
        x(j) = 2 * (1 - x(j - 1));                    
    end
end

通過使用Wikipedia頁面中給出的公式,這可以變得更加簡單:

for j = 2 : N
    x(j) = 2 * min(x(j - 1), 1 - x(j - 1));
end

其次,默認情況下,簡單的plot命令通過線連接點。 這不是你想要的。 同樣,不需要額外的循環來計算next 只需使用Matlab的向量生成索引功能即可:

plot(x(1 : end - 1), x(2 : end), '.')
axis equal
axis([0 1 0 1])

你得到

這可能仍然不是您期望的:完整的帳篷圖。 這是因為您要計算的不是地圖本身,而是由地圖控制的軌跡 ,該軌跡由您指定的256個點組成。 在這256個步驟中,並非[ x ,0,1]中的每一個可能的值都可能出現,因此您在地圖上只得到了幾個點。

如果您不想在地圖上獲取點,而是要獲取帳篷地圖本身的圖形,請執行以下操作:

x = 0 :0.01: 1;
plot(x, 2 * min(x, 1 - x))
axis equal
axis([0 1 0 1])

請注意,這不是標准意義上的相圖,它不是系統狀態隨時間變化的圖,也不是相像 ,它描述了相空間的結構(並且不適用於映射)。

我執行了兩個簡單的更改來執行您的代碼,其中一個在開始時clear all ,然后進行了disp([j-1 x(j-1)]); 內循環。 以下是我的輸出的最后一部分。

52.0000    0.7500
53.0000    0.5000
54     1
55     0
Attempted to access x(56); index out of bounds because numel(x)=55.
Error in phaseSpacePlot (line 10)
    disp([j-1 x(j-1)]);

現在很容易理解。 如果未定義double(x(j-1)))<=0則條件規則中的Cos。 因此,當該條件滿足時,循環結束。 我在您的if條件中添加了=符號, if (double(x(j-1)))>=0 && (double(x(j-1)))<0.5並得到下圖。 代碼現在可以使用,但是我不確定它在數學上是否正確。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM