Excelで極座標プロット
3Blue1BrownJapanで2年前に公開された動画がこちら。
何度も見直していますが、素晴らしいですね!
本家の動画はもっといろいろ面白そうなのがあるのですが、いかんせん英語能力が皆無なので、日本版の中の方の翻訳待ちです。がんばってください!
Excelで極座標プロット
Excelに極座標プロットはありませんので、xy座標に変換して散布図で描いてみます。
$$
(r,\theta) \to (r*cos\theta, r*sin\theta)
$$
ということですね。
まずは自然数をプロットしてみます。
=REDUCE(
{"x", "y"},
SEQUENCE(A1),
LAMBDA(a, s, VSTACK(a, HSTACK(s * COS(s), s * SIN(s))))
)A1セルに「10000」と入れて散布図にプロットしたのがこちら。

綺麗な螺旋を描いています。
この螺旋は44の剰余類ですね。
素数の螺旋
続いて、素数だけ抜き出してみましょう。
=LET(
_max, A1,
_primes, LET(
_1_, "基本素数 base prime",
_bp, {2; 3; 5; 7},
_2_, "内部再帰関数 F:自分自身",
_F, LAMBDA(F, n,
LET(
_1_, "√n以下の素数で試し割りすれば良いので√nを算出",
_sq, SQRT(n),
_2_, "試し割用素数列 test prime",
_3_, "_sqが11より小さければ_bpから値を返す。大きければ再帰して値を求める",
_tp, IF(_sq < 11, FILTER(_bp, _bp <= _sq), F(F, _sq)),
_4_, "_tpの最後の値を取得 Terminate test prime",
_ttp, @TAKE(_tp, -1),
_5_, "_ttp+1~nの数字を_tpで試し割して、割り切れない数字だけ残す",
_re, REDUCE(
SEQUENCE(n - _ttp, , _ttp + 1),
_tp,
LAMBDA(a, s, TOCOL(IF(MOD(a, s), a, NA()), 2))
),
_6_, "_tpと_reを結合",
VSTACK(_tp, _re)
)
),
_3_, "実行",
_F(_F, _max)
),
REDUCE(
{"x", "y"},
_primes,
LAMBDA(a, s, VSTACK(a, HSTACK(s * COS(s), s * SIN(s))))
)
)実行結果がこちら

歯抜けになりましたね。
もっと増やしてみます。

直線の構造が見えてきました。
これが710の剰余類ですね。
中心部には螺旋の隙間も見えますね。

Excelだとこの辺が限界ですが、それでも構造が見えてきて面白いですね。
この直線に近い曲線は280本あるそうです。暇な方は数えてみてください。
双子素数中心数の螺旋
次に双子素数に挟まれた数(Twin Prime Center)を表示してみましょう。
これ、chatGPTさんによると、日本語でのメジャーな表記が無いようです。
「双子素数中心数」だと長いので、たんに「中心数」と呼ぶことにします。
=LET(
_max, A1,
_1_, "_max以下の素数列を生成",
_primes, LET(
_1_, "基本素数 base prime",
_bp, {2; 3; 5; 7},
_2_, "内部再帰関数 F:自分自身",
_F, LAMBDA(F, n,
LET(
_1_, "√n以下の素数で試し割りすれば良いので√nを算出",
_sq, SQRT(n),
_2_, "試し割用素数列 test prime",
_3_, "_sqが11より小さければ_bpから値を返す。大きければ再帰して値を求める",
_tp, IF(_sq < 11, FILTER(_bp, _bp <= _sq), F(F, _sq)),
_4_, "_tpの最後の値を取得 Terminate test prime",
_ttp, @TAKE(_tp, -1),
_5_, "_ttp+1~nの数字を_tpで試し割して、割り切れない数字だけ残す",
_re, REDUCE(
SEQUENCE(n - _ttp, , _ttp + 1),
_tp,
LAMBDA(a, s, TOCOL(IF(MOD(a, s), a, NA()), 2))
),
_6_, "_tpと_reを結合",
VSTACK(_tp, _re)
)
),
_3_, "実行",
_F(_F, _max)
),
_2_, "6nの数列のうち、前後が素数である数だけ抜き出し。Twin Prime Centers",
_tpcenters, LET(
_r, SEQUENCE(_max / 6, , 6, 6),
_z, FILTER(
_r,
ISNUMBER(XMATCH(_r - 1, _primes, FALSE)) *
ISNUMBER(XMATCH(_r + 1, _primes, FALSE))
),
_z
),
_3_, "xy座標生成",
REDUCE(
{"x", "y"},
_tpcenters,
LAMBDA(a, s, VSTACK(a, HSTACK(s * COS(s), s * SIN(s))))
)
)まずは1万。

スカスカですね。
続いて10万。

構造らしいものは見えません。
しいて言えば、宇宙の大規模構造?
続いて100万。

素数と同じく直線状の構造(710の剰余類)が見えます。しかし、それ以外は見当たりませんね。
中心部分はなんだかロールシャッハテストみたいですね^^;
あなたには何が見えたでしょうか?
勉強結果
いつものごとく備忘録として勉強結果を挙げておきます。
何か見えた!って方はコメント欄で教えてください。
