Matlab:相 space 图

Matlab : Phase space plot

我是混沌和非线性动力学的初学者。我试图使用 Matlab 为 Tent Map 绘制阶段 space 图。阶段 space 图是其独立变量的图。所以,如果一个系统有一个变量,那么它将是前一个值与下一个值的关系图。情节的轮廓类似于帐篷地图,但我得到了几条交叉线。阶段 space 图应该看起来像一个介于 0 和 1 之间的三角形(因此得名 Tent)。如果参数是mu,那么最大值应该是mu/2。正确的阶段 space 图应该是

我也尝试了其他离散地图并获得了类似的线条。然而,在书籍和所有书籍中,我看到了一条没有线条的干净曲线。我哪里错了?此外,绘图不是从 X 轴上的零开始。这个问题也是从编程和概念的角度出发的。我不知道如何获得 x[n] vs x[n-1] 的图表,如维基百科中给出的图表所示。

这里是帐篷地图的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)

我通过两个简单的更改执行了您的代码,一个 clear all 在开头,disp([j-1 x(j-1)]); 在 for 循环内。以下是我输出的最后一部分。

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 未定义,则在您的 if else 条件规则中。因此,当该条件满足时循环结束。我在您的 if 条件中添加了 = 符号 if (double(x(j-1)))>=0 && (double(x(j-1)))<0.5 并得到了下图。代码现在可以运行了,但我不确定它在数学上是否正确。

您的代码中存在几个问题。首先,您的条件太复杂,不需要将某些内容强制转换为 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

使用维基百科页面中给出的公式可以使这更简单:

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

二、简单plot command by default connects the points by lines; this is not what you want. Also, the extra loop to compute next is unnecessary. Simply use Matlab's vector generation and indexing能力:

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

你得到

这可能仍然不是您所期望的:完整的帐篷地图。那是因为你计算的不是地图本身,而是一个由地图支配的轨迹,它由你指定的256个点组成。并非 [0, 1] 中 x 的所有可能值都可以出现在这 256 个步骤中,因此您在地图 上只得到几个点 .

如果你不想在地图上获得点数,而是帐篷地图本身的图表,请执行以下操作:

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

请注意,这不是 standard sense, which is a plot of the system state over time, nor a phase portrait 中的相图,它描述了相 space 的结构(并不真正适用于地图)。