見出し画像

続・ちょっと珍しい有理関数

どうも、世間の浮かれムードについていけず滅入り苦しむ108Hassiumです。

以前、こんな記事を書きました。

この記事の最後に書いたように、研究に進展があったので続きを書きます。

復習

前回の記事を読むのが面倒な人のために前回の内容を軽くまとめます。

まず、有理関数の次数を「分子の次数-分母の次数」と定義しました。

例えば$${\frac{z}{z^2-1}}$$は-1次、$${\frac{1}{z^2}+1}$$は$${\frac{z^2+1}{z^2}}$$と変形できるので0次、といった感じです。

次に、「$${f^1(z),f^2(z),f^3(z)…f^{n-1}(z)}$$の次数が全て0以下」かつ「$${f^n(z)}$$の次数は2以上」を満たす関数を「$${n}$$周期発散関数」と命名しました。

例えば$${f(z)=\frac{c}{z^2-1}+1}$$は2周期発散、$${f(z)=\frac{c}{(z-1)(z-c)}}$$は3周期発散でした。

☝c/(z^2-1)+1とc/(z-1)(z-c)に対するf(f(z))とf(f(f(z)))のグラフ

さらに、$${f(z)=\frac{cz+d}{(z-a)(z-b)}+e}$$と置いて、分母が2次の有理関数であって3周期発散関数であるようなものの具体例を見つける方法を解説しました。

$${f(a)=\infty}$$、$${f(\infty)=e}$$なので、$${f(e)=a}$$が成り立てば$${a→\infty→e→a…}$$という3周期サイクルが成立するので3周期発散関数になる可能性があります。

本来ならこれ以外にも条件を付けないと3周期発散関数になるかどうかわからない(f(f(f(z)))が1次になったり想定外の約分が生じたりする)のですが、実際にはパラメータを良い感じに調整することで3周期発散関数の具体例をいくつか見つけることができました。

そして、3周期発散関数のジュリア集合とマンデルブロ集合には三つ葉型の穴が出現し、少なくともジュリア集合に関しては発散周期と穴の形状には関係があるだろう、というのが前回の記事の内容でした。

4周期以上

前回の記事で使った方法では、4以上の発散周期を持つ関数を見つけるのは困難でした。

というわけで、4周期以上にも応用可能な計算法を考えました。

まず、$${f(z)=\frac{c(z-d)+g(z-h)}{(z-a)(z-b)}+d}$$と置きます。
※変数記号は原則aから順に使いますが、利便性を考慮してeやfなどを飛ばしています。

$${f(a)=\infty}$$、$${f(\infty)=d}$$なので、$${f(d)=h}$$と$${f(h)=a}$$が成り立てば4周期発散関数になりそうです。

つまり、以下の連立方程式を解く必要があります。

$${\begin{cases}\frac{g(d-h)}{(d-a)(d-b)}+d=h\\\frac{c(h-d)}{(h-a)(h-b)}+d=a\end{cases}}$$

中々厳つい見た目をしていますが、よく見ると$${c}$$と$${g}$$はそれぞれ1回ずつしか式に出てこないので、2本の式を組み合わせることすらせずに簡単に$${c}$$と$${g}$$について解くことができます。

実際に解くと以下のようになります。

  • $${c=\frac{(a-d)(h-a)(h-b)}{h-d}}$$

  • $${g=-(d-a)(d-b)}$$

マンデルブロ集合を描画するためには「臨界点が有理式になる」という性質も欲しいですが、そのためにはもう一つ条件を追加する必要があります。

とりあえず今回は、分子が定数になる「$${c+g=0}$$」を追加してみます。

先程の$${c}$$と$${g}$$の式を代入して分母を払うと、以下のようになります。

$${(a-d)(h-a)(h-b)-(d-a)(d-b)(h-d)=0}$$

よく観察してみると$${b}$$についての1次式になっているので、うまく整理すると$${b=\frac{d^2+ah-dh-h^2}{a+d-2h}}$$と変形できます。

自由度が2個余ったので、とりあえず$${a}$$と$${d}$$を消してみます。

  • $${d=0}$$($${d}$$は$${c}$$と$${g}$$の式に複数個所登場して邪魔なので)

  • $${a=2h+1}$$($${b}$$の分母を1にしたいので)

最終的に、$${a,b,c,d,g}$$が以下のように定まりました。

  • $${a=2h+1}$$

  • $${b=\frac{d^2+ah-dh-h^2}{a+d-2h}}$$

  • $${c=\frac{(a-d)(h-a)(h-b)}{h-d}}$$

  • $${g=-(d-a)(d-b)}$$

これを$${f(z)}$$の定義式に代入すると、$${f(z)=\frac{2h^4+3h^3+h^2}{(z-2h-1)(z-h^2-h)}}$$という関数が得られ、Desmosで確認するとちゃんと4周期発散関数っぽくなっています。

☝f(x)=(2h^4+3h^3+h^2)/(x-2h-1)(x-h^2-h)のf(f(f(f(x))))のグラフ

そして、お待ちかねのマンデルブロ集合がこちらです。

☝(2c^4+3c^3+c^2)/(z-2c-1)(z-c^2-c)のマンデルブロ集合(z_0=(c^2+3c+1)/2,x=-4~4,y=-4~4)

前回の予想を裏付けるかのように、四つ葉型の穴が見られます。

ついでに、「発散領域が川状に分布していて、川岸と中州が網目状の模様でつながっている」という特徴も前回紹介した$${\frac{c}{(z-1)(z-c)}}$$と共通しています。

次は、ジュリア集合を見てみましょう。

☝(2c^4+3c^3+c^2)/(z-2c-1)(z-c^2-c)、c=1.7iのジュリア集合
☝(2c^4+3c^3+c^2)/(z-2c-1)(z-c^2-c)、c=0.8iのジュリア集合
☝(2c^4+3c^3+c^2)/(z-2c-1)(z-c^2-c)、c=1.8+3.3iのジュリア集合
☝(2c^4+3c^3+c^2)/(z-2c-1)(z-c^2-c)、c=0.6+1.7iのジュリア集合
☝(2c^4+3c^3+c^2)/(z-2c-1)(z-c^2-c)、c=0.2+0.8iのジュリア集合

パッと見でわかりにくいものもありますが、どのジュリア集合も1点に4つの穴が繋がった四つ葉穴が見られます。

さて、4周期発散関数を見つけたので次は5周期発散関数を見つけたくなりますが、分母が2次の有理関数だと条件が複雑化しすぎて見つけられませんでした。

というわけで、分母の次数を3次に上げてみます。

まず、$${f(z)=\frac{d(z-g)(z-h)+j(z-g)(z-k)+m(z-h)(z-k)}{(z-a)(z-b)(z-c)}+g}$$と置きます。

やたら長い式ですが、4周期の場合と同様に方程式を立てると以下のようになります。

$${\begin{cases}\frac{m(g-h)(g-k)}{(g-a)(g-b)(g-c)}+g=h\\\frac{j(h-g)(h-k)}{(h-a)(h-b)(h-c)}+g=k\\\frac{d(k-g)(k-h)}{(k-a)(k-b)(k-c)}+g=a\end{cases}}$$

4周期のときと同様に、分子が短い式になっており$${d,j,m}$$について簡単に解けるようになっています。

$${f(z)}$$の分子がやたら長いのはこのためで、考え方としては「ラグランジュ補間」と大体同じです。

$${d,j,m}$$について解いて、臨界点に関する条件に注意しながら変数を適当に減らしていくことで、4周期のときと大体同じような流れで5周期発散関数を求めることができるので、暇な人はやってみてください。(私は途中で面倒臭くなって挫折しました)

ちなみに、上記の計算法を思いつく前に「分母が3次の4周期発散関数」を見つけたことがありました。

☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+cのマンデルブロ集合(z0=1)

右側中央あたりをよく見ると四つ葉穴っぽい模様が見えますが、最初に紹介した$${f(z)=\frac{2c^4+3c^3+c^2}{(x-2c-1)(x-c^2-c)}}$$とは異なりかなり狭い範囲にしか見られません。

ジュリア集合はこんな感じです。

☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=0.2+0.14iのジュリア集合
☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=0.36+0.1iのジュリア集合
☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=0.37+0.05iのジュリア集合
☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=0.4のジュリア集合
☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=0.46のジュリア集合
☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=0.5iのジュリア集合
☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=1.2+0.3iのジュリア集合
☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=0.8+0.7iのジュリア集合

若干分かりにくいですが、4周期発散関数の特徴である四つ葉穴が見られます。

ところが、こんなジュリア集合もありました。

☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=0.1+0.1iのジュリア集合
☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=0.9iのジュリア集合
☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=-1+1.3iのジュリア集合
☝(-2c^4+6c^2)/(z^3-3z+c^3-3c)+c、c=0.2+0.9iのジュリア集合

4周期ではなく2周期発散関数のように、2個の穴が1点に集まった形になっています。

前回の記事では、3周期発散関数の穴の形状には「三つ葉型」のほかに「飛び地型」が存在することについて触れました。

☝0.3/(z-1)(z-0.3)のジュリア集合

これらの存在は、$${z^2+c}$$などのシンプルな関数のジュリア集合において3周期のジュリア集合が2種類存在することと対応しているのではないか、ということを前回説明(?)しました。

☝z^2+cの、三つ葉型と飛び地型の3周期ジュリア集合

そして、4周期の場合は「4つ葉型」と「飛び地型」のほかに以下のような「双葉型」のジュリア集合が存在します。

☝z^2-1.3のジュリア集合

ということで、双葉穴を持った4周期発散ジュリア集合が存在することは大して不思議なことでもないようです。

同様に考えると、6周期発散関数には三つ葉穴を持つものと双葉穴のあるものが存在すると予想できます。

ちなみに、最初の方で紹介した$${\frac{2c^4+3c^3+c^2}{(z-2c-1)(z-c^2-c)}}$$にも双葉穴をもつジュリア集合があります。

☝(2c^4+3c^3+c^2)/(z-2c-1)(z-c^2-c)、c=-0.49のジュリア集合
☝(2c^4+3c^3+c^2)/(z-2c-1)(z-c^2-c)、c=-0.6のジュリア集合
☝(2c^4+3c^3+c^2)/(z-2c-1)(z-c^2-c)、c=-0.5+0.1iのジュリア集合

$${\frac{2c^4+3c^3+c^2}{(z-2c-1)(z-c^2-c)}}$$のジュリア集合が双葉穴をもつような$${c}$$は-0.5の周りの狭い範囲にしか無いようですが、マンデルブロ集合を拡大してみるとちゃんと双葉穴が現れています。

☝(2c^4+3c^3+c^2)/(z-2c-1)(z-c^2-c)のマンデルブロ集合(x=-0.75~-0.25,y=-0.25~0.25)

1次ケース

前回の記事では、「$${f^1(z),f^2(z),f^3(z)…f^{n-1}(z)}$$の次数が0以下で$${f^n(z)}$$が2次以上になる関数を$${n}$$周期発散関数とする」と定義していましたが、$${f^n(z)}$$が1次のケースは無視していました。

以下の記事で少し触れていますが、1次の有理関数は1次の項の係数の絶対値によって性質が大きく異なります。

例えば$${c(z+\frac{1}{z})+2i}$$のジュリア集合は、$${c}$$の絶対値が1より大きいときは2次関数などと同じように内側(収束領域)と外側(発散領域)に分かれた形になります。

☝(0.8+1.2i)(z+1/z)+2iのジュリア集合

しかし、$${|c|<1}$$の場合は、発散領域が無く収束領域が平面全体を埋め尽くす形になります。

☝(0.06+0.95i)(z+1/z)+2iのジュリア集合

この性質は、思いっきり単純化して純粋な1次関数で考えると仕組みがわかりやすいです。

$${f(z)=cz}$$という関数は$${|c|}$$が1より小さい場合、$${|f(z)|< |z|}$$になります。

ということは$${f(z),f^2(z),f^3(z)…}$$を計算していくと絶対値がどんどん小さくなっていくので、$${f(z)}$$のジュリア集合は発散領域を持たないことがわかります。

さて、発散領域が無いという事は、もし$${f(z)}$$が「$${f^1(z),f^2(z),f^3(z)….f^{n-1}(z)}$$が0次以下で$${f^n(z)}$$が1次」という性質を満たしていても、$${f^n(z)}$$の1次の項の係数の絶対値が1以下であれば周期発散関数としての性質(三つ葉穴とか)を持たないことになります。

この問題をクリアしている関数として、以下の記事では$${c(\frac{4}{z}-\frac{1}{z-3})}$$という関数を紹介しています。

☝c(4/z-1/(z-3))のマンデルブロ集合(z_0=2,x=-0.5~1.5,y=-1~1)
☝4/z-1/(z-3)のジュリア集合
☝(0.5+0.5i)(4/z-1/(z-3))のジュリア集合
☝(0.65+0.4i)(4/z-1/(z-3))のジュリア集合

かなり変わった形をしていますが、よく見るとちゃんと2周期発散関数っぽい特徴を持っていることがわかります。

この関数について$${f^2(z)}$$を計算し、$${\alpha z+g(z)}$$($${g(z)}$$は0次以下の有理関数)という形に変形してみると、$${\alpha=\frac{4}{3}}$$($${>1}$$)となるため$${c}$$の値に関係なく2周期発散関数になるようです。

※以下、「$${f^1(z),f^2(z),f^3(z)…f^{n-1}(z)}$$が0次以下で$${f^n(z)}$$が1次かつ$${f^n(z)}$$の1次の項の係数の絶対値が1より大きい」という性質を満たす関数も$${n}$$周期発散関数に含めるとします。

$${c(\frac{4}{z}-\frac{1}{z-3})}$$のような2周期発散関数を見つけることは簡単なのですが、3周期以上になると途端に難易度が急上昇します。

説明は省きますが、試行錯誤の結果「$${f^3(z)}$$が1次である3周期発散関数」を2つ見つけることができました。

まず1つ目は、$${f(z)=\frac{c^3(2z-c^2-1)}{(z^2-c^2)(c^2+1)}}$$です。

☝c^3(2z-c^2-1)/((z^2-c^2)(c^2+1))のマンデルブロ集合(z0=1,x=-2~6,y=-4~4)

※右端の欠けたような部分は発散判定の誤作動によるものです。

三つ葉穴が見当たりませんが、ノイズ状の領域の外側の$${c}$$を使うと一応ジュリア集合に三つ葉穴っぽい構造が現れます。

☝c^3(2z-c^2-1)/((z^2-c^2)(c^2+1))、c=-0.5のジュリア集合
☝c^3(2z-c^2-1)/((z^2-c^2)(c^2+1))、c=0.2のジュリア集合
☝c^3(2z-c^2-1)/((z^2-c^2)(c^2+1))、c=0.3iのジュリア集合
☝c^3(2z-c^2-1)/((z^2-c^2)(c^2+1))、c=1.3+2iのジュリア集合
☝c^3(2z-c^2-1)/((z^2-c^2)(c^2+1))、c=1.1+3iのジュリア集合
☝c^3(2z-c^2-1)/((z^2-c^2)(c^2+1))、c=0.9+3iのジュリア集合
☝c^3(2z-c^2-1)/((z^2-c^2)(c^2+1))、c=-1.4+0.6iのジュリア集合

2周期発散の$${c(\frac{4}{z}-\frac{1}{z-3})}$$とは見た目が大分違いますし、なんというかあまり3周期発散っぽくありません。

もう一つの関数は、$${\frac{-2c^2(cz+c+1)}{(2c+1)(z-c-1)(z+1)}+1}$$です。

☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1のマンデルブロ集合(z_0=-2/c-2,x=-4~4,y=-4~4)

こちらは前回の$${\frac{c}{(z-1)(z-c)}}$$や今回の$${\frac{2c^4+3c^3+c^2}{(x-2c-1)(x-c^2-c)}}$$と似たような「川と中州」の形をしています。

ちなみに、$${\frac{-2c^2(cz+c+1)}{(2c+1)(z-c-1)(z+1)}+1}$$には臨界点が二つありますが、もう一方の臨界点を初期値にした場合はこんな形になりました。

☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1のマンデルブロ集合(z_0=0,x=-2~2,y=-2~2)

ジュリア集合はこんな感じです。

☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1、c=-1.5+3iのジュリア集合
☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1、c=-1.3+2.3iのジュリア集合
☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1、c=-1+1.8iのジュリア集合
☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1、c=-0.7+1.9iのジュリア集合
☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1、c=-0.3+3.4iのジュリア集合
☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1、c=-0.1のジュリア集合


☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1、c=0.3+0.4iのジュリア集合
☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1、c=0.1+0.8iのジュリア集合
☝-2c^2(cz+c+1)/((2c+1)(z-c-1)(z+1))+1、c=0.8iのジュリア集合

こちらは全体のシルエットが$${c(\frac{4}{z}-\frac{1}{z-3})}$$と似ていて、なおかつ$${f(z)=\frac{c^3(2z-c^2-1)}{(z^2-c^2)(c^2+1)}}$$よりは3周期発散であることがわかりやすい形をしています。

ゴリ押し解法

前回と今回で扱ってきた「探し方」は、数学的にはちょっと雑でした。

$${f^n(z)}$$が1次になるのを避けられていたのは原理不明でしたし、あえて1次にしようとすれば運ゲーが始まります。

というわけで、もうちょっと確実性のある方法は無いかと考えました。

前回の記事では、上手くいかないやり方として「$${f^n(z)}$$を愚直に計算して係数に関する方程式を立てる」という方法を紹介(?)しました。

前回は$${f^n(z)}$$を全て展開しきろうとしたため失敗しましたが、分子と分母それぞれについて最高次の項とその1つ下の次数の項の係数だけを計算すれば計算量を減らせることに気付きました。

まず、$${f(z)=\frac{c_3z^2+c_4z+c_5}{z^2+c_1z+c_2}}$$と置きます。

次に、$${f^n(z)=\frac{B_nz^m+b_nz^{m-1}+\beta}{A_nz^m+a_nz^{m-1}+\alpha}}$$($${\alpha}$$と$${\beta}$$は$${m-2}$$次以下の多項式)と置きます。

このとき、$${f(f^n(z))}$$を展開して係数を比較すれば$${A_{n+1},a_{n+1},B_{n+1},b_{n+1}}$$を算出できますが、$${\alpha}$$と$${\beta}$$の値はそれらの値には影響しないはずです。

なので、結局$${f(\frac{B_nz^m+b_nz^{m-1}}{A_nz^m+a_nz^{m-1}})}$$を計算すれば$${A_{n+1},a_{n+1},B_{n+1},b_{n+1}}$$を計算するための漸化式が得られそうです。

そして、実際に計算してみたところ以下の漸化式が得られました。

$${\begin{cases}A_{n+1}=B_n^2+c_1A_nB_n+c_2A_n^2&A_1=1\\a_{n+1}=2B_nb_n+c_1(A_nb_n+B_na_n)+2c_2A_na_n&a_1=c_1\\B_{n+1}=c_3B_n^2+c_4A_nB_n+c_5A_n^2&B_1=c_3\\b_{n+1}=2c_3B_nb_n+c_4(A_nb_n+B_na_n)+2c_5A_na_n&b_1=c_4\\\end{cases}}$$

これを使うと、$${f^n(z)}$$が2次であるような関数を求めるために以下のような式を立てることができるようになります。

$${\begin{cases}A_n=0\\a_n=0\\B_n\neq0\end{cases}}$$

※「$${B_n=0}$$で、$${A_n}$$と$${a_n}$$に加えて分母のさらに1つ下の次数の項の係数も0」みたいなケースもありそうなので、厳密には必要条件にも十分条件にもなってないと思います。

$${f^n(z)}$$が1次であるような周期発散関数は、以下の式で求められそうです。

$${\begin{cases}A_n=0\\a_n\neq0\\B_n\neq0\\|\frac{B_n}{a_n}|>1\end{cases}}$$

従来の$${n}$$周期サイクルの値を指定する計算法では$${n}$$が大きくなるにつれて連立方程式の式の数が増えていくという問題がありましたが、この方法では$${n}$$が増えても式の本数は変わりません。

ただし、$${n}$$が増えていくごとに式1本ずつの複雑さは急上昇していき、地獄のような連立ディオファントス方程式を解く羽目になるので実用性はイマイチです。

前例?

前回の記事の投稿後、こんなサイトを見つけました。

私の英語力はゴミカスなのでよくわからないのですが、画像と自動翻訳の結果を見る限りどうも周期発散関数について書かれている部分があるようです。

しかもそれだけではなく、「変な領域」や「臨界点が実質1個しかない3次関数」などの私がこれまでに書いてきた内容についても書いてあるようなのです。

※☟「変な領域」に関する記事

☟「臨界点が実質1個しかない3次関数」について言及している記事

あのページを見つけたのは「臨界点が実質1個しかない3次関数」の話を書く前で、記事を投稿してからあのページに載っていたことに気付いて血の気が引きました。

追記

☟続き