Bol*_*ver 6 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
我正在使用下面的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');
Run Code Online (Sandbox Code Playgroud)
以下蛛网图用于t(1)= 0.2001

这些只是探讨问题的一些见解.我现在继续使用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}}
Run Code Online (Sandbox Code Playgroud)
实际上,从这些点开始的轨迹将永远保持在这些点上.您还可以在使用时更改起点和迭代次数时以交互方式观察效果
Manipulate[
CobwebDiagram[xstart, steps], {xstart, 0, 1, 1/1000}, {steps, 1, 200,
1}]
Run Code Online (Sandbox Code Playgroud)
固定点的性质
让我们看一下固定点的本质.如果它是一个吸引子,那么在固定点的任意小的epsilon大小的邻域中的点停留在类似大小的邻域中(不一定是完全相同的大小),并且如果它是一个驱逐者,它被击退并且分叉到完全任意点在邻居之外(我的定义在这里很松散,但猜测会这样做).
所以尝试以下
eps = 10^-16;
CobwebDiagram[0.75 + eps, 200]
Run Code Online (Sandbox Code Playgroud)
我们得到
图.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}]]
Run Code Online (Sandbox Code Playgroud)
图(2)

如果你在另一个方向扰动它,结果是相似的,即f[1]=0.75-eps.
对于另一个固定点(这次,它可以仅在一个方向上被扰动,因为定义了函数x>=0),你会看到行为是相同的,因此两个固定点看起来是不同的.
图(3)

图(4)

现在考虑起点x[1]=18/25.
CobwebDiagram[18/25, 200]
Run Code Online (Sandbox Code Playgroud)
图(5)

哇!这看起来像一个限制周期!
限制周期:限制周期是系统的闭合轨迹,即使是,也不可能到达不在轨迹上的点t->Infinity.所以,当你看到它时x[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]
Run Code Online (Sandbox Code Playgroud)
图(9)

CobwebDiagram[2/3, 200]
Run Code Online (Sandbox Code Playgroud)
图(10)

振荡的行为也告诉你一些关于系统的事情.如果你看一下图中的轨迹.(2,4),对于固定点0情况,系统需要更长时间才能进入混乱状态.此外,在两个图中,当轨迹接近时0,它需要更长的时间来恢复,而不是在3/4它快速地四处颤动.这些看起来类似于弛豫振荡(想象一下电容器充电缓慢并通过短路瞬间放电).
这就是我现在所能想到的.最后,我认为必须在Lyapunov稳定性的一般设置中分析固定点的确切性质,但我不打算这样做.我希望这个答案给你一些选择.
为了让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]]]}]]
Run Code Online (Sandbox Code Playgroud)
