Littlewood 多項式の根を描いてみた
数学的にどこまで意味があるかは分からないけれど、「美しい画像を作ってみたい」というモチベーションで、休日に少し遊んでみました。
Littlewood 多項式とは
係数がすべて $1$または$−1$ の多項式を Littlewood 多項式 と呼びます。
例えば、$x^3+x^2-x-1=0 $もその一つです。この根を複素平面上にプロットします。
$3$次多項式に限定すると、係数の組み合わせは$8$通り(最高次の係数は $1$に固定)。それぞれ根が$3$つあるので、計$24$点を描画できます。
20次多項式を描画してみた
次に、$20$次のLittlewood多項式を対象にしました。
$20$次の場合、係数の組み合わせは $2^{20}$通りあり、それぞれ根が$20$個。
合計で $2^{20} \cdot 20$ 個の点が複素平面にプロットされます。
結果がこちらです。
全体
- ※軸は見栄えが悪かったので非表示
- ※描画範囲は $−2<x<2,−2<y<2$
- ※画像中央は原点
左上拡大
(1,0)付近
見事に対称性とフラクタル的な模様が浮かび上がり、まさに Beautiful roots!!
ここまでは、先駆者がいらっしゃいます。
https://neofronteras.com/especiales/?p=172
重心を取ってみる
各多項式ごとの根の重心を計算してプロットすれば、フラクタル性を維持したまま、また違った美しい図形が得られるのでは?
ところが実際にやってみると、Littlewood 多項式には強い対称性があるため、すべての重心は たった2点 に集約されてしまいます。つまり、せっかく $2^{20}$ 本の多項式を計算しても、結果は2点を描いただけでまったく嬉しくありませんでした。
対称性を壊す ― ランダム除外
そこで発想を変えました。
各多項式の$20$個の根から ランダムに$1$つを除外し、重心を計算してみました。
結果がこちらです。
全体
下部拡大
- 中心の穴が2つに増えた
- フラクタル的な模様が残っている
ノイズを加えることで、圧縮され失われていた構造が再び浮かび上がったように見えます。情報を潰すと$2$点しか残らないが、形の全容が見えるようになったように解釈しました.(小学生並みの感想)
技術的メモ
- 根は MySQL で管理($20$次の全根を一晩かけて計算して保存)
- CSV などでも扱えると思うが、練習も兼ねて DBMS を採用
- SQL だと速度は出ないが、トライ&エラーの試行はしやすい
- 描画には Python + matplotlib を使用