※追記(2026/03/25)
一部の数式が間違っていたので修正しました。Sou様ありがとうございます。
どうも、108Hassiumです。
皆さんはニュートン法というものをご存知でしょうか。
ニュートン法は、例えばx3−2=0のような方程式の解の近似値を求めるアルゴリズムです。
手順は簡単で、解きたい方程式をf(x)=0という形にして、初期値を適当に決めて、an+1=an−f′(an)f(an)という数列を計算するだけです。
例えばf(x)=x3−2とすると、anは以下のような数列になります。
an+1=an−3an2an3−2
a0=1として計算すると、以下のようになります。
a1=1−3×1213−2=34=1.3333…
a2=34−3×(34)2(34)3−2=7291=1.2638…
a3=7291−3×(7291)2(7291)3−2=17886962253638=1.2599…
実際の解の一つである32も約1.2599なので、少なくとも小数点以下4桁まで一致する近似値が得られていることがわかります。(項数を増やすと精度はもっと上がります)
ちなみに、f(x)=0を満たすxを「f(x)の根」と呼び、ニュートン法のような根の計算法を「求根アルゴリズム」と呼ぶそうです。
ニュートン法の仕組みに関してはwikipediaの説明がこの上なくわかりやすいのでそちらを読んでもらいたいのですが、それはさておきニュートン法には面白い性質があります。
それは、

フラクタル図形の生成に使えるということです。
初期値を複素数にして、どの初期値がどの根に収束したかで複素平面を色分けするとフラクタル図形が出現するようです。
このようなフラクタル図形は「ニュートンフラクタル」と呼ばれ、使用する関数によってさまざまな形に変化します。
また、関数の違い以外にも色々なバリエーションが考えられるので、この記事ではそれらを紹介したいと思います。
普通のニュートンフラクタル
まずは普通のニュートンフラクタルから紹介します。
先ほど載せた画像はf(x)=x3−1としたもので、その前に計算例として使用したx3−2の方は以下のようになります。
☝x^3-2のニュートンフラクタルどうやらx3−1のものと同じ形っぽいです。
他の関数も試してみます。
☝x^4-1のニュートンフラクタル
☝x^5-1のニュートンフラクタルxn−1のニュートンフラクタルは、全てn回回転対称かつx3−1と同じような鎖状の模様になるようです。
ただし、
☝x^2-1のニュートンフラクタルn=2のときは全然面白くない形になります。
一般に、2次関数のニュートンフラクタルは面白い形にならないようです。
☝x^3-x+1のニュートンフラクタルxn−1のニュートンフラクタルが回転対称性を持つのは複素平面上での根の配置が回転対称になっているからで、根の対称性を崩すとニュートンフラクタルも非対称になります。
☝x^3-x+1.5のニュートンフラクタルさっきのx3−x+1のものと似ていますが、ところどころに真っ黒い領域があります。
この黒領域は、x3−x+1.5の3つの根の内のどれにもたどり着かないような初期値を表しています。
☝x^2-1/xのニュートンフラクタル多項式だけでなく、分数関数でもニュートンフラクタルは描画できます。
ちなみにx2−x1の根はx3−1の根と全く同じ組み合わせなのですが、根が同じでも関数が違えば違うニュートンフラクタルが出来上がるようです。
☝1/x^2-1のニュートンフラクタルf(x)=x21−1とするとx−f′(x)f(x)=−21(x3−3x)となり、「x21−1のニュートンフラクタル」と「−21(z3−3z)のジュリア集合」が等しいことがわかります。
一般化ニュートンフラクタル
wikipediaの「Newton fractal」のページ(日本語版は無いようです)には、「Generalization of Newton fractals」(ニュートンフラクタルの一般化)という項目があります。
どうやら、zn+1=zn−af′(zn)f(zn)という式によりニュートンフラクタルの亜種みたいなものをつくれるようです。
☝a=1.7のx^3-1の一般化ニュートンフラクタル
☝a=0.7+0.9iのx^3-1の一般化ニュートンフラクタルだいぶ印象が違いますが、3回回転対称であることは変わらないようです。
☝a=1+0.1iのx^3-x+1.5の一般化ニュートンフラクタル元々繋がっていた部分が離れ、壊れかけみたいな感じになりました。(黒領域も消えています)
☝a=0.1+0.4iのx^3-x+1.5の一般化ニュートンフラクタル各領域の明るさは収束の速度によって変化し、収束が遅いと同心円状の縞模様が現れます。
普通のニュートン法は収束がかなり速いので縞模様にはなりませんが、一般化ニュートンフラクタルはaが1から離れるとだんだん収束が遅くなるようです。
☝a=1.9+0.4iのx^2-1の一般化ニュートンフラクタル一般化ニュートンフラクタルなら、2次関数でも面白い形が生成できるようです。
Nova fractal
一般化ニュートンフラクタルのさらなる一般化として、Nova fractalというものもwikipediaに載っています。
Nova fractalの漸化式は以下の通りです。
zn+1=zn−af′(zn)f(zn)+c
一般化ニュートンフラクタルの式に対して、新たな変数cが追加されています。
☝a=1,c=-0.4のx^3-1のNova fractal一般化ニュートンフラクタルには「aが1から離れるとだんだん収束が遅くなり、ある程度離れるとf(x)の根には収束しなくなる」という性質がありました。
しかし、Nova fractalの場合はcを0から少しでもずらすとf(x)の根に収束しなくなります。
なので収束先ごとに色分けする意味が薄いと思ったので、今までのものとは別の彩色方法を使っています。
☝a=2.4,c=0.6+1.1iのx^3-1のNova fractal
☝a=-0.2,c=0.5のx^3-1のNova fractalwikipediaでは、cを動かす「Nova fractalのマンデルブロ集合」についても言及しています。
☝a=1のx^3-1のNova fractalのマンデルブロ集合wikipediaには「f(x)=x3−1なら臨界点は1になる」的な感じの記述があるのですが、実際は臨界点が1になるのはa=1のときだけで、aを動かすと臨界点も変化します。(臨界点は4次方程式の解になります)
☝a=2.4のx^3-1のNova fractalのマンデルブロ集合
☝a=-0.2のx^3-1のNova fractalのマンデルブロ集合Nova fractalはもはやニュートン法とはほとんど関係ないただのジュリア集合で、ジュリア/マンデルブロ集合の生成式としては臨界点が簡単に求まらないので不便です。
Nova fractalと似たようなものが生成出来てなおかつもっと使い勝手のいい式はいくらでもありそうなので、個人的にはNova fractalはあまり面白くない気がします。(例えば、c(z+2z21)+dという式を使えばx3−1のNova fractalとよく似たフラクタル図形を生成出来ます)
簡易ニュートン法
さて、ここまでの内容はただwikipediaに書いてあることをなぞっただけです。
ニュートン法のページには関連するほかの求根アルゴリズムがいくつか載っていますが、それらを使ったフラクタル図形については何も言及がありません。
というわけで、ニュートン法以外の求根アルゴリズムでもニュートンフラクタルのようなフラクタル図形が生成されるのか実験してみます。
まず初めに、簡易ニュートン法を試してみます。
簡易ニュートン法はニュートン法における導関数の計算を簡易化したもので、以下の漸化式を使います。
zn+1=zn−f′(z0)f(zn)
☝x^3-1の簡易ニュートンフラクタル中央から6方向にのびているカラフルな領域は、znが発散する領域です。
普通のニュートンフラクタルはジュリア集合の一種でしたが、簡易ニュートンフラクタルはマンデルブロ集合の一種です。
例えばf(x)=x3−1のとき、z0=cとするとf(x)の簡易ニュートンフラクタルは「cを初期値とするz−3c2z3−1のマンデルブロ集合」と見做せます。(ちなみにcはz−3c2z3−1の臨界点の一つです)
☝x^3-1の簡易ニュートンフラクタル(拡大)拡大してみると、いかにもマンデルブロ集合っぽい形になっていることがわかります。
☝x^3-x+1の簡易ニュートンフラクタル
☝x^2-1の簡易ニュートンフラクタルq-ニュートン法
q-ニュートン法は、ニュートン法に対して新たな変数qを追加したもので、定義は以下の通りです。
zn+1=zn−f(qzn)−f(zn)(q−1)znf(zn)
※wikipediaに載っている式は微妙に違うのですが、参考文献として挙げられている論文をパッと見た感じだとこっちが正しそうです。
この手法が何のために開発され、どの様な性質を持っているのか等は全く分かりませんが、とりあえずqに適当な値を入れてq-ニュートンフラクタルを描画してみました。
☝q=0.5のx^3-1のq-ニュートンフラクタル何だか見覚えのある形になりました。
a=1.7のx3−1の一般化ニュートンフラクタルとそっくりです。
☝q=0.5のq-ニュートンフラクタルと、a=1.7の一般化ニュートンフラクタル実は、x3−1のq-ニュートンフラクタルの式を整理するとzn+1=zn−(q2+q+1)zn2zn3−1になり、a=q2+q+13とすると一般化ニュートンフラクタルの式と一致します。
☝x^3-1のq-ニュートンフラクタルのマンデルブロ集合(z_0=q)※臨界点は綺麗に求まりませんでした。
x3−1の根に収束する3色の領域に加え、他の値に収束する黒の領域、カオス的になるノイズ状の領域、無限大に発散する虹色の領域という計6種類の領域が混ざり合っています。
☝x^3-x+1.5のq=0.5のq-ニュートンフラクタルf(x)=x3−x+1.5の場合はzn+1=zn−(q2+q+1)zn2−1zn3−zn+1.5になり、一般化ニュートンフラクタルとは違う式になります。
☝x^3-x+1.5のq=-1.6+0.5iのq-ニュートンフラクタル
☝x^3-x+1.5のq=0.3のq-ニュートンフラクタル
☝x^3-x+1.5のq=-1.5+0.2iのq-ニュートンフラクタル
☝x^3-x+1.5のq=1.2+2iのq-ニュートンフラクタルx3−1と違い、x3−x+1.5のq-ニュートンフラクタルは根に到達する領域が黒領域や発散領域と混在するのが特徴的です。
☝x^3-x+1.5のq-ニュートンフラクタルのマンデルブロ集合(z_0=q)右下の緑の領域をよく観察すると、黒い領域がめり込んでいたり、縁の部分が発散領域に切り取られたような形になっており、それらの領域は黒領域・発散領域と混在する値に対応しています。(q=-1.5+0.2iは右側の方の値で、これも青と黒の領域が重なった位置にあります)
改良ニュートン法
wikipediaのニュートン法のページの「改良」の項目の一番最初に載っているもの(名前は不明)を試してみました。
☝x^3-1の改良ニュートンフラクタル収束しない領域があるようです。
wikipedia曰く通常のニュートン法より収束が速いのが長所らしいのですが、完全な上位互換というわけでもないようです。
ちなみに漸化式は以下のようになりました。
zn+1=1910zn+361zn6+133zn3+19234zn4+9zn
次数が高く係数もでかいです。
式が複雑になるなら2次関数でも面白い形になるのでは、と思ってx2−1を試してみました。
☝x^2-1の改良ニュートンフラクタルつまんねぇ~。
割線法
ニュートン法のページには載っていませんが、こんなものを見つけました。
割線法では導関数の計算が要らない代わりに、新しい項を計算するのに二つ前までの項を利用します。
普通のジュリア集合やマンデルブロ集合とは漸化式の種類が違うので、違った感じのフラクタル図形になりそうです。
☝x^3-1のセカントフラクタル(z_0=c,z_1=0)発散領域が所々に散らばっていて、かなり華やかな見た目になりました。
☝x^3-1のセカントフラクタル(z_0=0,z_1=c)今までのものとは違って初期値に相当するパラメータが2つあり、その組み合わせによって違った見た目のフラクタル図形が生成されるようです。
☝x^3-1のセカントフラクタル(z_0=-1,z_1=c)
☝x^3-1のセカントフラクタル(z_0=c,z_1=-1)
☝x^3-1のセカントフラクタル(z_0=c,z_1=c-1)
☝x^3-1のセカントフラクタル(z_0=c,z_1=i)簡易割線法
こんな求根アルゴリズムを思いつきました。
zn+1=zn−f(zn+c)−f(zn)cf(zn)
これは割線法のzn−1をzn+cに置き換えたものです。
☝c=1のx^3-1の簡易セカントフラクタル非対称なうえに赤一色になりました。
☝c=iのx^3-1の簡易セカントフラクタル常に1個の根にしか収束しないのかと思いきや、そうでもないようです。
どうやらcの値が特定の根に近いと、その根に収束しやすくなるようです。
☝c=-0.5のx^3-1の簡易セカントフラクタル3色が混ざることもあるようです。
☝c=0のx^3-1の簡易セカントフラクタル導関数の定義より、c→0limcf(x+c)−f(x)は明らかにf′(x)と等しいので、簡易セカントフラクタルのc→0の極限はニュートンフラクタルと一致します。(f(x)が多項式なら、cに0を直接代入できるような式変形ができるようです)
☝x^3-1の簡易セカントフラクタルのマンデルブロ集合(z_0=0)※臨界点は綺麗に求まりませんでした。
☝c=0.9のx^2-1の簡易セカントフラクタル
☝c=1.1+0.6iのx^2-1の簡易セカントフラクタル2次関数からでもフラクタル図形が生成できるようですが、z2+cのジュリア集合と似たような形ばかりであまり面白くは無いようです。
第2簡易割線法
zn+1=zn−f(zn)−f(c)f(zn)(zn−c)
割線法のzn−1を定数cに置き換えてみました。
☝c=-1.5のx^3-1の第2簡易セカントフラクタル
☝c=1+1.2iのx^3-1の第2簡易セカントフラクタル
☝c=0.1+1.9iのx^3-1の第2簡易セカントフラクタル全体の形は3回回転対称にはならないものの、点対称(原点中心ではない)になるようです。
☝x^3-1の第2簡易セカントフラクタルのマンデルブロ集合(z_0=-c/2)おまけ:多重ニュートンフラクタル
最後に、記事の主題とは離れますが面白いと思った話題を紹介します。
「f(x)のニュートンフラクタル」は「z−f′(z)f(z)のジュリア集合」でもあるわけですが、それなら「x−f′(x)f(x)のニュートンフラクタル」というものを考えることもできるはずです。
また、「x−f′(x)f(x)のニュートンフラクタル」=「g(z)のジュリア集合」となるような関数g(z)に対するニュートンフラクタルだって存在するはずです。
これを一般化して、以下のような関数列を定義します。
fn+1(x)=x−fn′(x)fn(x)
適当な関数をf0(x)に選んでfn(x)のニュートンフラクタルを順番に描画していったらどうなるでしょうか?
というわけで、まずはf0(x)=x3−1を選びました。
☝f_0(x)のニュートンフラクタル今まで何度も見てきた、x3−1のニュートンフラクタルです。
☝f_1(x)のニュートンフラクタル細部の形はf0(x)のものと似ていますが、違った形のニュートンフラクタルになりました。
これからさらに面白い形になっていきそうですね。
☝f_2(x)のニュートンフラクタルあれ?
☝f_3(x)のニュートンフラクタルえ?
☝f_4(x)のニュートンフラクタルは?
☝f_0(x)~f_7(x)のニュートンフラクタルつまんねぇ~。
どうやら最初の2個が特殊だったようで、その後は2種類の形が交互に並ぶだけになるようです。
ちなみにfn(x)は以下のような式になりました。
f0(x)=x3−1
f1(x)=32x+3x21
f2(x)=−2x3−23x
f3(x)=23x−4x3+23x
f4(x)=2x3+43x
f5(x)=23x+2x3−23x
f6(x)=−x3−43x
f7(x)=23x−x3+23x
f8(x)=x3+86x
規則性はよくわかりませんが、似たような式ばかりですね。
フラクタル図形の話題としては面白く無いですが、これはこれで数学的におもしろいかもしれませんね。
次はx4−1です。
☝f_0(x)のニュートンフラクタル
☝f_1(x)のニュートンフラクタル
☝f_2(x)のニュートンフラクタル
☝f_3(x)のニュートンフラクタルまたかよ。
どうやらある程度簡単な形(基準は不明)の関数だと、途中で根の個数が減って面白さが枯渇するようです。
f0(x)=x3−x+1の場合は、そのような傾向はみられませんでした。
☝f_0(x)のニュートンフラクタル
☝f_1(x)のニュートンフラクタル
☝f_2(x)のニュートンフラクタルf0(x)=x3−x+1
f1(x)=32x+9x2−32x−3
f2(x)=−6x4−6x2+6x4x3−9x2+1
f3(x)=2x+49+16x6−72x5+16x4−16x3+36x2−8x+4130x5+36x4−36x3−77x2+18x−9
この先はめちゃくちゃ複雑な式になりそうなので計算を諦めました。
f0(x)=x2+x−1は、かなり意外性のある結果になりました。
☝f_0(x)のニュートンフラクタルf1(x)=21x−41−8x+45
☝f_1(x)のニュートンフラクタルf2(x)=21−2x2+2x−25x
☝f_2(x)のニュートンフラクタルf3(x)=−51x2+58x+57−5x2+56x+8
☝f_3(x)のニュートンフラクタルf4(x)=21x+2+2x5−8x4+4x3−22x2−14x−223x4−9x3+42x2+29x+3
最初の2個は面白くない形だったのに、急に面白くなりました。
追記:メーリーの手順
記事の投稿後、wikipediaを眺めてたら面白いものを新たにいくつか見つけたので追記します。
まず、ニュートン法の英語版のページで「Maehly's procedure」という項目を見つけました。
f(x)の根x1,x2,x3…がすでに見つかっている場合、f(x)の代わりに(x−x1)(x−x2)(x−x3)…f(x)のニュートン法の計算をすることで未発見の根を見つけられるだろう、とのことです。
これを基にして、以下のような操作を考えました。
f(x)ニュートン法の計算をして、根rを1個求める
x−rf(x)のニュートン法の計算をして、収束先に応じて初期値を彩色する
☝x^3-1のメーリーフラクタル領域の境界線は普通のニュートンフラクタルとほぼ同じですが、色分けのされ方が変わりました。
新たに出現した3本の直線は、x−1x3−1、x−2−1+−3x3−1、x−2−1−−3x3−1のニュートンフラクタルの境界線で、3つとも2次関数なので直線になっています。
☝x^4-1のメーリーフラクタルf(x)が4次だとx−rf(x)は3次になるので、5種類のフラクタル図形が混ざり合った複雑な模様が出来上がります。
ただし、異なる種類のフラクタル図形が重なっただけのような見た目になるので美しさはイマイチです。
ハレー法
ニュートン法の日本語版のページには「反復法」というページへのリンクがあり、反復法のページには「ハレー法」という求根アルゴリズムが載っています。
どうやら改良ニュートン法と同じく、収束の速さが売りの手法らしいです。
☝x^3-1のハレーフラクタルなんか見覚えが・・・と思ったら、実は最初の方で紹介したx2−x1のニュートンフラクタルと全く同じです。
元々「分数関数でもニュートンフラクタルが作れる」「根が同じでも関数が違えば違うニュートンフラクタルになる」ということの説明をするだけの為に載せていたのですが、まさかこんな裏の顔があるとは思いませんでした。
☝x^3-x+1のハレーフラクタル
☝x^4-1のハレーフラクタルハウスホルダー法
ニュートン法とハレー法の一般化として、ハウスホルダー法というものがあるようです。
g(x)=f(x)1として、an+1=an+dg(d)(an)g(d−1)(an)(g(d)(x)はg(x)のd階導関数という数列を計算するという手法で、d=1がニュートン法、d=2がハレー法だそうです。
☝d=1のx^3-1のハウスホルダーフラクタル(=ニュートンフラクタル)
☝d=2のx^3-1のハウスホルダーフラクタル(=ハレーフラクタル)
☝d=3のx^3-1のハウスホルダーフラクタル
☝d=4のx^3-1のハウスホルダーフラクタル
☝d=5のx^3-1のハウスホルダーフラクタル
☝d=1のx^3-x+1のハウスホルダーフラクタル(=ニュートンフラクタル)
☝d=2のx^3-x+1のハウスホルダーフラクタル(=ハレーフラクタル)
☝d=3のx^3-x+1のハウスホルダーフラクタル
☝d=4のx^3-x+1のハウスホルダーフラクタル地味ですね。