Matlab 寻找帐篷映射的不动点/吸引子/排斥子

Matlab 寻找帐篷映射的不动点/吸引子/排斥子,matlab,wolfram-mathematica,fixed-point-iteration,Matlab,Wolfram Mathematica,Fixed Point Iteration,我需要找到帐篷映射函数的不动点和吸引子,定义如下: xt = (3/2) * xt-1 when 0 <= x <= (2/3) and xt = 3* (1-xt-1) when (2/3) <= x <= 1 xt=(3/2)*xt-1当0时,为了让精通Mathematica的人更容易回答问题,以下是Mathematica对上述代码的翻译: CobwebDiagram[xstart_, steps_] := Module[

我需要找到帐篷映射函数的不动点和吸引子,定义如下:

xt = (3/2) * xt-1 when 0 <= x <= (2/3) and xt = 3* (1-xt-1) when (2/3) <= x <= 1
xt=(3/2)*xt-1当0时,为了让精通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]]]}]]
CobwebDiagram[xstart,steps]:=Module[{path,x,t},
路径=递归表[{x[t]==

分段[{{3/2x[t-1],0这些只是围绕这个问题的一些见解。我现在将继续使用Mathematica,因为它更方便(从上面的代码判断,您应该能够在MATLAB中管理它,如果不能,我将尝试转换它).然而,如果你有Mathematica,并且可以测试这些,那就太好了

固定点:函数
f(x)
的固定点是
f(x)=x的解;换句话说,函数映射到自身的点

对函数进行求解,得到
x=0
x=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}] 
固定点的性质

让我们看看不动点的性质。如果它是吸引子,不动点任意小ε大小的邻域中的点保持在相似大小的邻域中(不一定是完全相同的大小),如果它是排斥者,它会被排斥并发散到邻域外的完全任意点(我的定义在这里很松散,但猜测就可以了)

因此,尝试以下方法

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}]]
图(5)

哇!!那看起来像是一场比赛

极限环:极限环是系统的一条闭合轨迹,从中不可能到达轨迹以外的点,即使是
t->无穷大

图(6)

只重复了3个点(图像压缩创建了一个,但实际上,如果你用一小步绘制它,你会看到3个点。我太困了,无法返回并重新打印)。这三个点分别是
12/25
18/25
21/25
。从这三个点中的任何一个开始,您将进入相同的极限循环

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

图(7)

图(8)

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

还有一些想法

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

CobwebDiagram[1/2, 200]
图(9)

图(10)

振荡的行为也告诉你一些关于系统的事情。如果你看一下图中的轨迹。(2,4),在定点
0
情况下,系统螺旋进入混沌所需的时间比另一种情况更长。此外,在这两种图中,当轨迹接近
0
时,系统恢复所需的时间比在
3/4
时要长,此时系统只是快速摆动。这些看起来类似于松弛振荡(想象一个电容器缓慢充电,并通过短路瞬间放电)


这就是我现在所能想到的。最后,我认为不动点的确切性质必须在的一般设置中进行分析,但我不打算就此展开讨论。我希望这个答案为您提供了一些可供研究的选项。

我不知道蛛网图的哪一部分来得早,哪一部分来得晚。我还没有找到f颜色功能确实有效,但可能存在以下改进:

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]

不知怎的,当我第一次看到它时,我认为这是一个家庭作业问题,OP对尤达答案的回答证实了这一点。问家庭作业问题不一定是错误的,但它肯定应该清楚地标记出来。在meta上的这个链接上有一些合理的家庭作业政策:

考虑到“没有家庭作业解决方案;欢迎轻推”的政策,我想在我迄今为止提供的解决方案讨论中添加一条评论。检查f的迭代图。我指的是f(f(x)),f(f(f(x)),等等的图。例如,f(x)=x^2的第三次迭代是f(f(x)))=x^8。f的第n次迭代图和y=x线之间的交点包括n阶的周期轨道(以及更高一点)
CobwebDiagram[1/2, 200]
CobwebDiagram[2/3, 200]
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]
colorName="CMYKColors"