『Maple でのグモウスキー・ミラの写像』

Maple 内で、グモウスキー・ミラのカオス写像を表現してみます。

まず、基本となる関数を3つ定義します。計算は再帰的に行われるため、option remember で一度計算した内容を記憶するようにしていることに注意してください。

>    restart:

>    fx := proc(t::integer, mu)
  option remember;

  if t=0 then
    return(0.1);
  elif t>=1 then
    fy(t-1,mu)+0.008*(1-0.05*fy(t-1,mu)^2)*fy(t-1,mu)+F(fx(t-1,mu),mu);
  end if;
end proc:

>    fy := proc(t::integer, mu)
  option remember;

  if t=0 then
    return(0);
  elif t>=1 then
    -fx(t-1,mu)+F(fx(t,mu),mu);
  end if;
end proc:

>    F := proc(x, mu)
  mu*x+2*(1-mu)*x^2/(1+x^2);
end proc:

以上で関数の定義は終了です。

グモウスキー・ミラの写像を生成するには、時刻以外にパラメータμを与えることで実にさまざまな図形を生成できます。グラフの点を生成するための関数を用意しておきます。

>    makePoints := mu -> [seq([fx(t,mu),fy(t,mu)], t=101..4100)];

makePoints := proc (mu) options operator, arrow; [seq([fx(t,mu), fy(t,mu)],t = 101 .. 4100)] end proc

グラフを描くために、plots および plottools パッケージを読み込んでおきます。

>    with(plots):
with(plottools):

Warning, the name changecoords has been redefined

Warning, the name arrow has been redefined

最後に、この写像を表現する手続きをひとつにまとめておきます。

>    makeGmowski := proc(mu)
  local gr;

  gr := map(p->point(p, color=red), makePoints(mu));
  display(gr, axes=none);
end proc:

さっそく描いてみましょう。まずはμ=0.8 のときです。

>    Digits := 30:

>    makeGmowski(0.8);

[Maple Plot]

同じ 0.8 でも、負の値のときはまったく異なる様相を表します。

>    makeGmowski(-0.8);

[Maple Plot]

>    makeGmowski(-0.991);

[Maple Plot]

パラメータμは、-1 から 1 までの間の数であることに注意してください。

閉じる