どうも、108Hassiumです。
以下の記事では、ちょっと珍しい性質を持つ3次関数としてf(z)=c(3z3−z2)+2という関数を取り上げています。
この関数の臨界点は0と2の2個がありますが、f(0)=2なのでマンデルブロ集合やジュリア集合を描画する際には臨界点は1個しかないものとして扱えます。
先程の記事では「臨界点が実質1個しかないと見做せる3次関数」の例を他にもいくつか挙げていましたが、この記事ではそれぞれの例に対応するマンデルブロ集合やジュリア集合を紹介したいと思います。
なお、今回は先ほどの記事で上げた例に合わせてf(z)=c(2z3−3z2)+dという形の3次関数を扱います。
この形の関数を使うのは
・・・等の理由によるものです。
「この形を標準形としてもいいのか?」という話は、以下の記事の最後の方で触れているので興味のある方は読んでみてください。
f(0)=0
※今までの記事ではマンデルブロ集合の生成に使う関数はzとcの2変数関数であることがわかるようにf(z,c)という形で書いていましたが、今回は諸事情により1変数関数で書きます。
f(0)=0が成り立つと、マンデルブロ集合の描画に使う数列zn+1=f(zn)はz0=0とするとずっと0のまま変動しなくなります。
f(z)=c(2z3−3z2)+dに0を代入するとdになるので、d=0、つまりf(z)=c(2z3−3z2)とすればf(0)=0になります。
☝c(2z^3-3z^2)のマンデルブロ集合(z_0=1、x=-2~2、y=-2~2)中央にジュリア集合のような凹凸のある収束領域があり、左側の尖った部分の先にz2+cのマンデルブロ集合に似た領域があります。
収束領域の内側は収束速度に応じて彩色してあり、収束が遅ければ遅いほど明るい色になるのですが、中央の領域は収束がめちゃくちゃ速いのかほぼ真っ黒になっています。
☝c(2z^3-3z^2)のマンデルブロ集合(z_0=0、x=-2~2、y=-2~2)z0=0の場合、cの値に関係なく常に0に収束するのでこうなります。
ジュリア集合はこんな形です。
☝(-0.86+0.07i)(2z^3-3z^2)のジュリア集合(x=-0.5~1.5、y=-1~1)
☝(-1.1+0.2i)(2z^3-3z^2)のジュリア集合(x=-0.5~1.5、y=-1~1)マンデルブロ集合と同様、0に収束する真っ黒い領域が現れます。
f(0)=1
f(0)=1となると、z0=0の数列がz0=1の数列に合流するのでc(3z3−z2)+2と同じように臨界点が1個であるかのように扱えます。
導出手順は先ほどと同じで、f(0)=1をdについて解くことでf(z)=c(2z3−3z2)+1が求まります。
☝c(2z^3-3z^2)+1のマンデルブロ集合(z_0=1、x=-2~2、y=-2~2)c(3z3−z2)+2と同じ形になりました。
☝(0.5+0.4i)(2z^3-3z^2)+1のジュリア集合(x=-0.5~1.5、y=-1~1)ジュリア集合も同様に、z4+cのような四角い形が現れます。
f(1)=0
f(1)=0でも、f(0)=1と同じように数列の合流が起きます。
f(1)=−c+dなのでd=cとなり、f(z)=c(2z3−3z2)+cとなりますが、さらにc(2z3−3z2+1)と変形することもできます。
☝c(2z^3-3z^2+1)のマンデルブロ集合(z_0=1、x=-2~2、y=-2~2)マンデルブロ集合の形状も、f(0)=1のときと同じになってしまうようです。
f(1)=1
☝c(2z^3-3z^2+1)+1のマンデルブロ集合(z_0=1、x=-2~2、y=-2~2)どうやら「f(0)=0とf(1)=1」や「f(0)=1とf(1)=0」のように0と1を入れ替えた方程式から得られるマンデルブロ集合(ジュリア集合も)は、同じ形になるようです。
f(0)=f(1)
f(0)=d、f(1)=−c+dなのでf(0)=f(1)の解はc=0なのですが、そうなるともはや3次関数ではなくなるので「解無し」とします。
どうやら3次関数f(z)の臨界点c1とc2について、c1=c2ならば必ずf(c1)=f(c2)になるようです。
実は3次関数の標準形としてf(z)=c(2z3−3z2)+dを選ぶと、z3+cやc(z3−1)のような「臨界点が2重解になる3次関数」だけを取りこぼしてしまうことになります。
なお、臨界点が2重解であるz3+cやc(z3−1)は、「臨界点が1個しかないと見做せる3次関数」なので一応画像を載せておきます。
☝z^3+cのマンデルブロ集合(z_0=0、x=-2~2、y=-2~2)
☝c(z^3-1)のマンデルブロ集合(z_0=0、x=-2~2、y=-2~2)ジュリア集合は以下の記事内で見られます。
f(f(0))=0
f(f(0))=c(2d3−3d2)+dとなるため、f(f(0))=0をdについて解くのは困難です。
なのでdではなくcについて解き、解いた後でcとdを入れ替えることでf(z)=−2c2−3c1(2z3−3z2)+cという関数を得られます。
※この「変数の入れ替え」は数学的にはちょっとまずい操作なのですが、細かいことが気になる人は「まず最初にf(z)=d(2z3−3z2)+cと置く」などの小細工で回避できるので各自で計算し直して納得してください。
☝-(1/(2c^2-3c))(2z^3-3z^2)+cのマンデルブロ集合(z0=1、x=-1~3、y=-2~2)cについての分数関数になったため全体像がかなり変わった形になりましたが、細部をよく見るとf(0)=0のc(2z3−3z2)と似ています。
暗い色の収束領域(0を含む2周期サイクルに収束する領域)にはジュリア集合のような凹凸があり、右半分にはz2+cのマンデルブロ集合に似た形のケツに暗い色の領域が刺さっています。
大きく違うのは左半分が2周期のジュリア集合みたいな形になっていることと、非自明なサイクルに収束する領域のうち一番大きいものが首の部分で暗い色の領域と繋がっていることです。
ジュリア集合はこんな感じです。
☝-(1/(2c^2-3c))(2z^3-3z^2)+cのc=0.9+0.6iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(1/(2c^2-3c))(2z^3-3z^2)+cのc=0.8+0.5iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(1/(2c^2-3c))(2z^3-3z^2)+cのc=0.95+0.82iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(1/(2c^2-3c))(2z^3-3z^2)+cのc=1.05+0.81iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(1/(2c^2-3c))(2z^3-3z^2)+cのc=2.55+0.63iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(1/(2c^2-3c))(2z^3-3z^2)+cのc=2.41+0.45iのジュリア集合(x=-0.5~1.5、y=-1~1)f(f(1))=1を満たす2c3−3c2+11−c(2z3−3z2+1)+cも、ほとんど同じような性質を持ちます。
☝((1-c)/(2c^3-3c^2+1))(2z^3-3z^2+1)+cのマンデルブロ集合(z0=0、x=-2~2、y=-2~2)f(f(0))=1
先程と同様に「cについて解いてからcとdを入れ替える」という手法によりf(z)=2c3−3c21−c(2z3−3z2)+cという関数が得られます。
☝((1-c)/(2c^3-3c^2))(2z^3-3z^2)+cのマンデルブロ集合(z0=1、x=-2~2、y=-2~2)凹みが2つある収束領域やz4+cのマンデルブロ集合に似た形が所々に見られ、この特徴はf(0)=1であるc(2z3−3z2)+1と共通しています。
☝((1-c)/(2c^2-3c))(2z^3-3z^2)+cのc=-0.5+1.8iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝((1-c)/(2c^2-3c))(2z^3-3z^2)+cのc=0.5+0.4iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝((1-c)/(2c^2-3c))(2z^3-3z^2)+cのc=0.8+1.2iのジュリア集合(x=-0.5~1.5、y=-1~1)ジュリア集合にz4+cのような四角い領域が現れるのもc(2z3−3z2)+1と一致します。
f(f(1))=0を満たす関数は、−2c3−3c2+1c(2z3−3z2+1)+cになります。
☝-(c/(2c^3-3c^2+1))(2z^3-3z^2+1)+cのマンデルブロ集合(z0=0、x=-2~2、y=-2~2)f(f(0))=f(0)
c(2z^3-3z^2)+3/2のマンデルブロ集合(z0=1、x=-2~2、y=-2~2)f(f(0))=f(0)の解にはf(0)=0の解になっているものも含まれるのですが、既に紹介したものは無視して新出の解だけを紹介していきます。
☝0.24i(2z^3-3z^2)+3/2のジュリア集合(x=-0.5~1.5、y=-1~1)
☝(0.3+0.25i)(2z^3-3z^2)+3/2のジュリア集合(x=-0.5~1.5、y=-1~1)
☝(-0.2+0.1i)(2z^3-3z^2)+3/2のジュリア集合(x=-0.5~1.5、y=-1~1)
☝(-0.1+0.2i)(2z^3-3z^2)+3/2のジュリア集合(x=-0.5~1.5、y=-1~1)x=−0.5~0.5、y=−1~1という描画範囲にすると、臨界点の位置は画像の右半分の真ん中と左半分の真ん中になります。
c(2z3−3z2)+23のジュリア集合では左側の臨界点(=0)は渦巻きの中心になっており、一般的にジュリア集合の渦の中心には不安定(周りにある点を吸い寄せない)な周期点があります。
f(f(0))=f(0)かつf(0)=0を満たす場合、z0=0から始まる数列はcの値に関係なく1周期のサイクルに収束しますが、f(0)=0の場合とは異なり不安定なサイクルになるようです。
☝(0.22+0.03i)(2z^3-3z^2)+3/2のジュリア集合(x=-0.5~1.5、y=-1~1)ただし例外として、z0=1の方の数列が1周期になるときはz0=0と同じ固定点に収束し、z0=0の固定点は吸引的になるようです。
f(f(1))=f(1)を満たすc(2z3−3z2+1)−21も同じ性質を持つようです。
☝c(2z^3-3z^2+1)-1/2のマンデルブロ集合(z0=0、x=-2~2、y=-2~2)f(f(0))=f(1)
☝c(2z^3-3z^2)-1/2のマンデルブロ集合(z0=0、x=-2~2、y=-2~2)
☝0.35i(2z^3-3z^2)-1/2のジュリア集合(x=-0.5~1.5、y=-1~1)
☝(-0.16+0.3i)(2z^3-3z^2)-1/2のジュリア集合(x=-0.5~1.5、y=-1~1)
☝-0.7(2z^3-3z^2)-1/2のジュリア集合(x=-0.5~1.5、y=-1~1)
☝(-1.43+0.1i)(2z^3-3z^2)-1/2のジュリア集合(x=-0.5~1.5、y=-1~1)f(0)=1のものとは異なり、あまり目立った特徴は無いようです。
☝c(2z^3-3z^2+1)+3/2のマンデルブロ集合(z0=0、x=-2~2、y=-2~2)f(f(0))=f(f(1))
☝(6c/(c^2+3))(2z^3-3z^2-c/6+1/2)+1のマンデルブロ集合(z0=0、x=-2~2、y=-2~2)
☝(6c/(c^2+3))(2z^3-3z^2-c/6+1/2)+1のマンデルブロ集合(z0=0、x=-10~10、y=-10~10)f(f(0))=f(f(1))を愚直に計算するとc(2d3−3d2)+d=c(2(d−c)3−3(d−c)2)+dになり、頑張って整理すると6d2−(6c+6)d+2c2+3c=0という2次方程式になります。
解の公式に代入するとd=63c+3±−3c2+9となりますが、複素数の平方根はいろいろと厄介な性質があって大嫌いなので平方根の消去を試みました。
根号の中身が何かしらの有理式の2乗になっていればいいので、−3c2+9=e2と置きます。
この方程式は楕円の方程式なのですが、楕円や双曲線などの2変数2次方程式の有理数解は以下のように求めることができます。
まず、有理数解の具体例を1個見つけます。

今回は(c,e)=(0,3)という解が簡単に見つけられます。
次に、傾きが有理数で先程の有理点を通る直線を考えます。

傾きをgとすると、この直線はe=gc+3と表せます。
この直線と楕円の交点は、以下の連立方程式をcとdについて解くことで求められます。
この方程式は最終的にeかcの2次方程式に帰着されるのですが、2次方程式の2つの解のうちの1つは(c,e)=(0,3)に対応するものであることがすでに分かっています。
有理係数2次方程式の解のうち1つが有理数解ならばもう1つも有理数解になるので、結果として楕円と直線の交点がgに関する有理式として得られます。
実際に解いてみると、2個目の解は(c,e)=(−g2+36g,g2+318−3)となり、ちゃんとgに関する有理式になっています。
これをd=63c+3±−3c2+9に代入すると、まず−3c2+9=e2なので63c+3±eになり、代入や整理をうまく行うことで
f(z)=−g2+36g(2z3−3z2+61g+21)+1
f(z)=−g2+36g(2z3−3z2−61g+21)
という関数が得られます。(先程の画像の脚注にある式は、gを−cに書き換えることで得られます)
☝(6c/(c^2+3))(2z^3-3z^2-c/6+1/2)+1のc=-8のジュリア集合(x=-0.5~1.5、y=-1~1)
☝(6c/(c^2+3))(2z^3-3z^2-c/6+1/2)+1のc=-6のジュリア集合(x=-0.5~1.5、y=-1~1)
☝(6c/(c^2+3))(2z^3-3z^2-c/6+1/2)+1のc=-8.4+1.3iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝(6c/(c^2+3))(2z^3-3z^2-c/6+1/2)+1のc=-8.3+0.62iのジュリア集合(x=-0.5~1.5、y=-1~1)計算に苦労した割に、ジュリア集合はあまり面白い形にならないようです。
また、2個目の方の解も1個目とほとんど何も変わらないようでした。
☝(6c/(c^2+3))(2z^3-3z^2+c/6+1/2)のマンデルブロ集合(z0=0、x=-2~2、y=-2~2)f(f(f(0)))=0
すみません、これに関しては係数が有理関数になるような解が見つかりそうにありませんでした。
実際の方程式は以下の通りです。
c(2(c(2d3−3d2)+d)3−3(c(2d3−3d2)+d)2)+d=0
cについて4次、dについては9次という地獄のような方程式となってしまい、Wolfram Alphaでも因数分解できなかったので「解けない」と判断しました。

また、同様の理由により
も解けないと判断しました。
さらに、f(f(f(0)))=f(f(1))はギリギリ解けそうな見た目になる(cについての2次方程式に帰着できる)のですが、平方根の消去がうまくいかなかったのでこれも解けないと判断しました。
f(f(f(0)))=f(0)
☝-(1/(2c^2))(2z^3-3z^2)+cのマンデルブロ集合(z0=1、x=-2~2、y=-2~2)
☝-(1/(2c^2))(2z^3-3z^2)+cのマンデルブロ集合(z0=1、x=-4~4、y=-4~4)4つの収束領域が1点で接する箇所(計算精度不足によりくっついてしまっています)がありますが、そこ以外特に変わったところは無さそうです。
☝-(1/(2c^2))(2z^3-3z^2)+cのc=1.2のジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(1/(2c^2))(2z^3-3z^2)+cのc=-1.57+0.18iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(1/(2c^2))(2z^3-3z^2)+cのc=1.6+0.9iのジュリア集合(x=-0.5~1.5、y=-1~1)f(f(0))=0のc(2z3−3z2)+23と同じく、z0=0の固定点が不安定になるようです。
f(f(f(0)))=f(1)
☝-((2c+1)/(4c^3-6c^2))(2z^3-3z^2)+cのマンデルブロ集合(z0=1、x=-2~2、y=-2~2)
☝-((2c+1)/(4c^3-6c^2))(2z^3-3z^2)+cのマンデルブロ集合(z0=1、x=-2~6、y=-4~4)飛び地が首の部分で他の領域と繋がっているあたりが、f(f(0))=0の−2c2+3c1(2z3−3z2)+cと似ている気がします。
☝-((2c+1)/(4c^3-6c^2))(2z^3-3z^2)+cのc=-0.6+0.6iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-((2c+1)/(4c^3-6c^2))(2z^3-3z^2)+cのc=-0.9+1.4iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-((2c+1)/(4c^3-6c^2))(2z^3-3z^2)+cのc=1.2+0.7iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-((2c+1)/(4c^3-6c^2))(2z^3-3z^2)+cのc=1.5+0.8iのジュリア集合(x=-0.5~1.5、y=-1~1)ジュリア集合はあまり目立った特徴はありませんが、領域の繋がり方が−2c2+3c1(2z3−3z2)+cのものと似ているような気がしなくもないです。
f(f(f(0)))=f(f(0))
☝-(c/9+(32c^3+128c)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のマンデルブロ集合(z0=1、x=-2~2、y=-2~2)
☝-(c/9+(32c^3+128c)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のマンデルブロ集合(z0=1、x=-7~13、y=-10~10)f(z)=−(9c+9c4−72c2+14432c3+128c)(2z3−3z2)−c2+126c−12という式は、以下の手順で求めました。
e=c(2d3−3d2)と置き、f(f(f(0)))=f(f(0))をeとdの式で表す。
2次方程式の解の公式を使い、eについて解く。
f(f(0))=f(f(1))の計算と同様の方法を使い、eとdを有理式で表す。
c=2d3−3d2eに代入してcを求める。
☝-(c/9+(32c^3+128c)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のc=0.6iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(c/9+(32c^3+128c)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のc=0.1+0.6iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(c/9+(32c^3+128c)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のc=-0.3+0.56iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(c/9+(32c^3+128c)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のc=-0.2+0.8iのジュリア集合(x=-0.5~1.5、y=-1~1)f(f(0))=f(0)やf(f(f(0)))=f(0)のものと似た特徴がみられます。
これらのcは真ん中の領域の近くにある値ですが、右側の大きな領域の周りの値だと少し違った特徴が現れます。
☝-(c/9+(32c^3+128c)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のc=5.5+0.6iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(c/9+(32c^3+128c)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のc=7.2+0.1iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(c/9+(32c^3+128c)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のc=5.1+0.1iのジュリア集合(x=-0.5~1.5、y=-1~1)
☝-(c/9+(32c^3+128c)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のc=7.86+1.4iのジュリア集合(x=-0.5~1.5、y=-1~1)小さい収束領域の集合体が糸でつながったような見た目になるのですが、z0=0とz0=1の周りにある収束領域の形状やつながり方が違うように見えます。
話は変わりますが、先程説明した計算方法では−(9c+9c4−72c2+14432c3+128c)(2z3−3z2)−c2+126c−12のほかにもう1つ−(72c2+18c+185+9c4−72c2+14416c3+64c−256)(2z3−3z2)−c2+126c−12という解が出てきます。
意外なことに(?)、この関数のマンデルブロ集合は−(9c+9c4−72c2+14432c3+128c)(2z3−3z2)−c2+126c−12のものとは異なる形をしています。
☝-(c^2/72+c/18+5/18+(16c^3+64c-256)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のマンデルブロ集合(z0=1、x=-2~2、y=-2~2)
☝-(c^2/72+c/18+5/18+(16c^3+64c-256)/(9c^4-72c^2+144))(2z^3-3z^2)-(6c-12)/(c^2+12)のマンデルブロ集合(z0=1、x=-10~10、y=-10~10)しかし、ジュリア集合の方は目立った違いは見つかりませんでした。
f(z)=g^{-1}(f(g(z)))
最後に、ちょっと毛色の違うものを紹介します。
☝c(2z^3-3z^2+1/2)+1/2のマンデルブロ集合(z0=0、x=-2~2、y=-2~2)g(z)=1−zとすると、f(z)=c(2z3−3z2+21)+21についてf(z)=g−1(f(g(z)))が成り立ちます。
また、g(0)=1も成り立ちます。
これにより、f(f(f(…f(f(f(0)))…)))は以下のように変形できます。
f(f(f(…f(f(f(0)))…)))=g−1(f(g(g−1(f(g(g−1(f(g(…g−1(f(g(g−1(f(g(g−1(f(g(0)))))))))…)))))))))=g−1(f(f(f(…f(f(f(g(0))))…))))=g−1(f(f(f(…f(f(f(1)))…))))
これが何を意味するかというと、z0=1の数列の項をznとすると0が初期値の方の数列の項がg−1(zn)と表せるので、z0=0の数列が収束/発散するかどうかがz0=1の数列の収束/発散と一致することを表しています。
要するに2つの臨界値を初期値とする2つの数列が常に同じような動きしかしないため、これも「臨界点が実質1個しかないと見做せる3次関数」の一種になります。
☝(0.5+0.5i)(2z^3-3z^2+0.5)+0.5のジュリア集合(x=-0.5~1.5、y=-1~1)
☝(0.15+0.66i)(2z^3-3z^2+0.5)+0.5のジュリア集合(x=-0.5~1.5、y=-1~1)
☝(0.66+0.1i)(2z^3-3z^2+0.5)+0.5のジュリア集合(x=-0.5~1.5、y=-1~1)ジュリア集合はz0=21を中心として点対称になり、どうやらc(3z3−z)のジュリア集合と同じような形になるようです。
※☟c(3z3−z)のジュリア集合が載っている記事
f(z)=c(3z3−z)の場合、g(z)=−zとすることでg−1(f(g(z)))が成り立ちます。
こんな感じの変換によって特徴づけられる関数はもう少しバリエーションがありそうな気がするのですが、上手い計算方法が見つからなかったのでこれしか見つけられませんでした。