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 の方が便利なので、今のところ 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}] 

定点の性質

不動点の性質を見てみましょう。それがアトラクタの場合、不動点の任意の小さなイプシロン サイズの近傍内の点は、同様のサイズの近傍にとどまり (必ずしも正確に同じサイズである必要はありません)、リペラーの場合は、反発されて完全に任意の点に発散します。近所の外(私の定義はここではかなり緩いですが、推測で構いません)。

そこで、次のことを試してください

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ます) の場合、動作が同じであるため、2 つの固定点が発散しているように見えます。

図(3)

ここに画像の説明を入力

図(4)

ここに画像の説明を入力

ここで出発点を考えてみましょうx[1]=18/25

CobwebDiagram[18/25, 200] 

図(5)

ここに画像の説明を入力

うわあ!!リミットサイクルみたい!

リミット サイクル: リミットサイクルは、システムの閉じた軌道であり、軌道上にない点に到達する可能性はありませんt->Infinity。したがって、 を見ると、次のようになりますx[t]

図(6)

ここに画像の説明を入力

これは 3 つのポイントが繰り返されるだけです (画像圧縮によりモアレ パターンが作成されますが、実際には、小さなステップ数でプロットすると 3 つのポイントが表示されます。眠すぎて戻って再プロットできません)。12/25、 、18/25の3点21/25です。これら 3 つのポイントのいずれかから開始すると、同じリミット サイクルに到達します。

ここで、軌道がリミット サイクルに十分に近い場合、それは引き寄せる/安定したリミット サイクルであり、そうでない場合は反発する/不安定なリミット サイクルです。そのため、前のようにどちらの方向にも摂動するepsと、軌跡が発散することがわかります (以下では +ve 方向のみを示しています)。

図(7)

ここに画像の説明を入力

図(8)

ここに画像の説明を入力

興味深いことに、次のステップでx[1]=19/25それをマップすることから始めて18/25、リミット サイクルの軌跡を無限に続けます。19/25on からto の行は from toの行(つまり、関数の最初の部分から)y=xの続きであるため、このようなことが起こる理由は簡単にわかります。同じ論理で、とに対応する点があるはずですが、今はそれらを見つけるつもりはありません。これに照らして、ここでのリミット サイクルが本当に引き寄せているのか反発しているのかについては、ここでは正確にはわかりません (リミット サイクルの厳密な定義によれば、スパイラルに入る別の軌道が 1 つだけ存在する必要があります。 3つ見つかりました! おそらく、これについてもっと知っている人がこれに加担することができます)。12/25y=x18/2521/25

もう少し考えてみよう

開始点1/2も興味深いものです3/4。次のステップに進むためです。これは固定された点であり、したがって永遠にそこにとどまります。同様に、この点2/3は にあるもう一方の固定点に移動し0ます。

CobwebDiagram[1/2, 200]

図(9)

ここに画像の説明を入力

CobwebDiagram[2/3, 200]

図(10)

ここに画像の説明を入力

振動の振る舞いも、システムについて何かを教えてくれます。図 1 と図 2の軌跡を見ると、(2,4)の場合、システムは固定小数点の場合にカオスに陥るまでに時間がかかります0。また、両方のプロットで、軌跡が に近づくと、ただ速く飛び回るだけの0よりも回復に時間がかかります。これらは緩和振動3/4に似ています(コンデンサがゆっくりと充電され、短絡によって瞬時に放電されると考えてください)。

今のところ思いつくのはこれくらいです。最後に、リアプノフ安定性の一般的な設定で不動点の正確な性質を分析する必要があると思いますが、これに着手するつもりはありません。この回答により、検討すべきいくつかの選択肢が得られたことを願っています。

于 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

「宿題の解決策はありません。微調整は大歓迎です」というポリシーを考慮して、これまでに提供した解決策の議論に追加したいコメントが 1 つあります。f の反復のグラフを調べます。これは、f(f(x))、f(f(f(x))) などのグラフを意味します。たとえば、f(x)=x^2 の 3 番目の反復は 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 に答える