6

我需要找到由以下定义给出的帐篷地图函数的固定点和吸引子:

    x t = (3/2) * x t-1      当 0 <= x <= (2/3)

    和

    x t = 3* (1-x t-1 ) 当 (2/3) <= x <= 1

我正在使用下面的 MATLAB 代码生成蜘蛛网图(显示在代码下方),看看我是否可以深入了解这个特定的帐篷地图功能。正如你所看到的,我从设置 t=1(和 x(1) = 0.2001)开始,但是有无数个可能的起点。如果您不测试每个起点,您如何确定固定点/吸引子?

clear
close all

% Initial condition 0.2001, must be symbolic.
nmax=200;
t=sym(zeros(1,nmax));t1=sym(zeros(1,nmax));t2=sym(zeros(1,nmax));
t(1)=sym(2001/10000);
mu=2;
halfm=(2/3) *nmax;
axis([0 1 0 1]);
for n=2:nmax
    if (double(t(n-1)))>0 && (double(t(n-1)))<=2/3         % 0 <= x <= (2/3)
            t(n)=sym((3/2)*t(n-1));                        % x(t) = (3/2) * x(t-1)
        else
            if (double(t(n-1)))<1                          % else (2/3) <= x <= 1
                t(n)=sym(3*(1-t(n-1)));                    % x(t) = 3* (1-x(t-1))
            end
    end
end



for n=1:halfm
    t1(2*n-1)=t(n);
    t1(2*n)=t(n);
end


t2(1)=0;t2(2)=double(t(2));
for n=2:halfm
    t2(2*n-1)=double(t(n));
    t2(2*n)=double(t(n+1));
end

hold on
fsize=20;
plot(double(t1),double(t2),'r');


x=[0 (2/3) 1];y=[0 mu/2 0];
plot(x,y,'b');

以下蛛网图适用于 t(1) = 0.2001 在此处输入图像描述

4

4 回答 4

8

这些只是围绕这个问题的一些见解。我现在将继续使用 Mathematica,因为它更方便(根据您上面的代码判断,您应该能够在 MATLAB 中管理它,如果没有,我会尝试转换它)。但是,如果您确实有 Mathematica,并且可以测试这些,那就太好了。

不动点:函数的不动点f(x)是解的点f(x)=x;换句话说,函数将其映射到自身的点。

求解你的函数,你得到x=0x=3/4作为固定点。

In:= Solve[Min[3/2 x, 3 - 3 x] - x == 0, x]

Out= {{x -> 0}, {x -> 3/4}}

事实上,从这些点开始的轨迹将永远停留在这些点上。您还可以使用更改起点和迭代次数以交互方式观察效果

Manipulate[
 CobwebDiagram[xstart, steps], {xstart, 0, 1, 1/1000}, {steps, 1, 200,
   1}] 

不动点的性质

让我们看看固定点的性质。如果它是吸引子,则固定点的任意小 epsilon 大小的邻域中的点将保持在相似大小的邻域中(不必一定是完全相同的大小),如果它是排斥子,它会被排斥并发散到一个完全任意的点在附近(我的定义在这里很松散,但猜测会做)。

所以尝试以下

eps = 10^-16;
CobwebDiagram[0.75 + eps, 200]

我们得到

图。1)

在此处输入图像描述

这看起来肯定不会收敛到固定点。确实,如果您查看 的演变x[t],您会发现它是不同的

Clear[f]
f[1] = 0.75 + eps;
f[t_] := f[t] = 
   Piecewise[{{3/2 f[t - 1], 0 <= f[t - 1] <= 2/3}}, 3 (1 - f[t - 1])];
ListLinePlot[Table[f[n], {n, 1, 200}]]

图(2)

在此处输入图像描述

如果你在另一个方向扰动它,结果是相似的,即f[1]=0.75-eps

对于另一个固定点(这一次,它只能在一个方向上被扰动,因为函数是为 定义的x>=0),您会看到行为是相同的,因此两个固定点似乎是发散的。

图(3)

在此处输入图像描述

图(4)

在此处输入图像描述

现在考虑起点x[1]=18/25

CobwebDiagram[18/25, 200] 

图(5)

在此处输入图像描述

哇!!这看起来像一个极限循环

极限环:极限环是系统的封闭轨迹,从该轨迹不可能到达不在轨迹上的点,即使t->Infinity. 因此,当您查看 时x[t],您会看到类似

图(6)

在此处输入图像描述

这只是重复了 3 个点(图像压缩创建了一个莫尔图案,但实际上,如果你将它绘制为一小步 # 步,你会看到 3 个点。我只是太困了,无法回去重新绘制它)。这三个点12/2518/2521/25。从这三点中的任何一点开始都会带您进入相同的极限循环。

现在如果足够接近极限环的轨迹收敛到它,它是一个吸引/稳定的极限环,否则它是一个排斥/不稳定的极限环。所以像以前一样在任一方向上扰动eps,我们看到轨迹发散(我只在下面显示 +ve 方向)。

图(7)

在此处输入图像描述

图(8)

在此处输入图像描述

有趣的是,从x[1]=19/25将其映射到18/25下一步开始,然后在极限循环轨迹中无限期地继续。很容易看出为什么会发生这种情况,因为从19/25到到的行y=x只是从12/25到行的延续y=x(即,从函数的第一部分开始)。按同样的逻辑,应该有和 对应的点18/2521/25但我现在不打算找到它们。鉴于此,我不确定这里的极限循环是真正吸引还是排斥(根据极限循环的严格定义,只需要一条其他轨迹螺旋进入它,我们'找到了三个!也许对此有更多了解的人可以对此进行权衡)。

还有一些想法

起点1/2也很有趣,因为它会带您进入3/4下一步,这是一个固定点,因此永远停留在那里。同样,该点将2/3您带到另一个固定点0

CobwebDiagram[1/2, 200]

图(9)

在此处输入图像描述

CobwebDiagram[2/3, 200]

图(10)

在此处输入图像描述

振荡的行为也告诉你一些关于系统的信息。如果你看图中的轨迹。(2,4)0 ,对于不动点情况,系统需要更长的时间才能进入混沌状态,而不是其他情况。此外,在这两个图中,当轨迹接近 时0,它需要更长的时间才能恢复,而不是在 时3/4,它只是快速飘动。这些看起来类似于弛豫振荡(想象一个电容器缓慢充电并通过短路瞬间放电)。

这就是我现在能想到的。最后,我认为必须在Lyapunov 稳定性的一般设置中分析不动点的确切性质,但我不打算开始讨论这个问题。我希望这个答案给了你一些选择。

于 2011-04-16T07:26:46.027 回答
7

为了让精通 Mathematica 的人更容易回答问题,这里是上面代码中的 Mathematica 版本:

CobwebDiagram[xstart_, steps_] := Module[{path, x, t},
  path = RecurrenceTable[{x[t] == 
      Piecewise[{{3/2 x[t - 1], 0 <= x[t - 1] <= 2/3}}, 
       3 (1 - x[t - 1])], x[1] == xstart}, x, {t, 1, steps}];
  Plot[Piecewise[{{3/2 x, 0 <= x < 2/3}}, 3 (1 - x)], {x, 0, 1}, 
   Epilog -> {Red, 
     Line[Riffle[Partition[path, 2, 1], {#, #} & /@ Rest[path]]]}]]

在此处输入图像描述

于 2011-04-16T06:42:16.750 回答
3

不知何故,当我第一次看到它时,我认为这是一个家庭作业问题,而 OP 对尤达的回答的回应证实了这一点。问家庭作业问题不一定是错误的,但肯定应该清楚地标记出来。在此元链接上有一些合理的家庭作业政策: https ://meta.stackexchange.com/questions/18242/what-is-the-policy-here-on-homework

考虑到“没有家庭作业解决方案;欢迎轻推”的政策,我想在迄今为止提供的解决方案讨论中添加一条评论。检查 f 的迭代图。我的意思是 f(f(x))、f(f(f(x))) 等的图。例如,f(x)=x^2 的第三次迭代是 f(f(f( x)))=x^8。f 的第 n 次迭代的图与线 y=x 之间的交点包括 n 阶(以及更多)的周期轨道。检查这些图片,应该很清楚有很多排斥的轨道。

对动力学进行完全分类的正确方法是使用符号动力学,您的课程可能已经或可能没有涵盖。

于 2011-04-18T11:18:32.457 回答
1

我不知道 CobwebDiagram 的哪一部分来得早,哪一部分来得晚。我还没有找到真正有效的颜色功能,但可能存在以下改进:

Clear[cobWebDiagram, f, x]
f[x_] = Piecewise[{{3/2 x, 0 <= x <= 2/3}, {3 (1 - x), True}}];
colorName = RandomChoice@ColorData["Gradients"]
color = ColorData@colorName

cobWebDiagram[f_, xstart_, steps_, low_, hi_, color_] := 
 Module[{path, x, t, range = color[[3]], scale1},
  path = Partition[NestList[f, .75 + eps, steps], 2, 1];
  scale1 = Rescale[#, {1, Length@path}, range] &;
  scale2 = Rescale[#, {1, Length@path}, {0, .005}] &;
  Show[Plot[f@x, {x, low, hi}], 
   Graphics@
    Table[{color@scale1@k, Thickness@scale2@k, 
      Arrow@path[[{k, k + 1}]]}, {k, -1 + Length@path}]]]

eps = 10^-16;
cobWebDiagram[f, .75 + eps, 100, 0, 1, color]

您可以使用上面的 RandomChoice 来试验颜色,或者一个不错的选择可能是

colorName="CMYKColors"
于 2011-04-16T22:57:32.090 回答