我需要找到下面定义给出的帐篷地图功能的固定点和吸引子:
xt = (3/2) * xt-1 when 0 <= x <= (2/3) and xt = 3* (1-xt-1) when (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
答案 0 :(得分:8)
这些只是解决问题的一些见解。我现在继续使用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}]
固定点的性质
让我们看看固定点的性质。如果它是一个吸引子,那么在固定点的任意小的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)
哇!!这看起来像limit cycle!
限制周期:限制周期是系统的闭合轨迹,即使是t->Infinity
,也不可能到达不在轨迹上的点。因此,当您查看x[t]
时,您会看到类似
图。 (6)
重复只有3分(图像压缩会产生Moiré pattern,但实际上,如果你为一小部分步骤绘制它,你会看到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)
CobwebDiagram[2/3, 200]
图。 (10)
振荡的行为也告诉你一些关于系统的事情。如果你看一下图中的轨迹。 (2,4),对于固定点0
,系统需要更长时间才能进入混乱状态。此外,在两个图中,当轨迹接近0
时,恢复所需的时间比3/4
更快,在{{1}}处,它只是快速地四处颤动。这些看起来类似于弛豫振荡(想想电容器充电缓慢并通过短路瞬间放电)。
这就是我现在所能想到的。最后,我认为固定点的确切性质必须在Lyapunov stability的一般设置中进行分析,但我不打算这样做。我希望这个答案给你一些选择。
答案 1 :(得分: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]]]}]]
答案 2 :(得分:3)
不知何故,当我第一次看到它时,我认为这是一个功课问题,OP对Yoda的答案的回应验证了这一点。提问作业问题并不一定是错的,但它当然应该清楚地标明。 meta上的这个链接有一些合理的家庭作业政策: 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(f) X)))= X ^ 8。 f的第n次迭代的图和线y = x之间的交点包括n阶(和更多)的周期轨道。检查这些图片,应该很清楚,有很多令人厌恶的轨道。
对动态进行完全分类的正确方法是使用符号动态,您的课程可能会或可能不会涵盖。
答案 3 :(得分: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"