つくる格子第 1 回 / まだ誰も取っていない比を、機械に探させる

姉妹編「わかる」は読む側だった。ここからは作る側に回る ── 結論ではなく、作業を見せる

まだ誰も取っていない比を、機械に探させる 「効くのは無次元の比」を機械にやらせると、次元行列の整数核を求める線形代数の問題になります。
基本定数から作れる無次元量を 162,931 本すべて列挙し、値が 1 に落ちるものを拾い、
それをでたらめな宇宙と比べました ── 結果は、偶然と区別がつきませんでした。

必要な道具:連立方程式の掃き出し法、対数目盛り、平均と標準偏差 この回の芯:p = 0.67(偶然と区別できない)

姉妹編「わかる」シリーズは、ずっと同じことを言ってきました ── 単位のある量は舞台装置、効くのは無次元の比。\(\beta=v/c\)、\(S/\hbar\)、\(E/k_BT\)、\(T/T_c\)。どれも「割ったら単位が消える量」で、物理はそこにしか宿らない。
では、こう考えるのが自然です。比を取るのが物理なら、取れる比を全部取ってしまえばいいのではないか。 人間が思いつかなかった組み合わせの中に、誰も気づいていない一致が眠っているかもしれない。
この回は、それを実際にやります。プログラムを書き、16万本の無次元量を列挙し、結果を読みます。先に言っておくと、探し物は見つかりませんでした。でも見つからなかったこと自体が、はっきりした形の答えになりました。物理を作るというのは、たいていこういう作業です。

01作りたい機械

仕様はひとことで書けます。

仕様

物理量の表を渡すと、それらを掛け合わせて単位が消える組み合わせを全部列挙し、値が \(1\) の近くに落ちるものを報告する機械。

「値が 1 の近く」を探すのは、そこが説明を要求する場所だからです。まったく無関係な二つの量の比が、たまたま 1 前後になる理由はありません。宇宙定数と物質の密度が今ちょうど同じくらいだとか、そういう「なぜか揃っている」に人は引っかかってきました。だから機械にも同じものを探させます。

素材には注意が要ります。無次元の量(\(\alpha\) など)は入れません ── 材料ではなく的だからです。プランク長やプランク質量も入れません。あれは \(c,\hbar,G\) の組み合わせそのものなので、入れれば「プランク長を \(c,\hbar,G\) で割ると 1 になりました」という、意味のない当たりを量産するだけです。

02無次元とは、行列の核である

ここが、この回でいちばん気持ちのいいところです。「単位が消える組み合わせを探す」という物理の言葉が、そっくりそのまま線形代数の言葉に化けます。

まず小さい例で。\(e,\ \varepsilon_0,\ \hbar,\ c\) の四つを掛け合わせて、単位を消してみます。それぞれの次元を、kg・m・s・A の指数として縦に書きます。

やってみよう ── 次元を数のならびにする

\(e=\) C \(=\) A·s なので \((\mathrm{kg},\mathrm{m},\mathrm{s},\mathrm{A})=(0,0,1,1)\)。同じように \(\varepsilon_0=(-1,-3,4,2)\)、\(\hbar=(1,2,-1,0)\)、\(c=(0,1,-1,0)\)。
積 \(e^{a}\varepsilon_0^{b}\hbar^{d}c^{f}\) の次元は、この四本のベクトルを \(a,b,d,f\) 倍して足したもの。

つまり「無次元になれ」は、こう書ける

$$\begin{pmatrix}0&-1&1&0\\0&-3&2&1\\1&4&-1&-1\\1&2&0&0\end{pmatrix}\begin{pmatrix}a\\b\\d\\f\end{pmatrix}=\begin{pmatrix}0\\0\\0\\0\end{pmatrix}$$

(行が kg, m, s, A、列が \(e,\varepsilon_0,\hbar,c\)。)これはただの連立一次方程式です。掃き出すと \((a,b,d,f)=(2,-1,-1,-1)\) が出ます。

機械が吐いた無次元量

$$\frac{e^2}{\varepsilon_0\hbar c}=0.0917$$

見覚えのある数でしょうか。\(0.0917=4\pi/137.036\) ── 微細構造定数 \(\alpha\) が \(4\pi\) をかぶって出てきました。機械は「電磁気」も「結合定数」も知りません。次元の数ならびを掃き出しただけで、物理でいちばん有名な無次元量に行き当たった。この \(4\pi\) が後で効いてきます(08 節)。

裏返すと ── プランク単位が一意に決まる理由 逆に \(c,\hbar,G\) の三つだけを入れると、核はになります。この三つからは無次元量が作れない ── つまり次元的に完全に独立。だからこそ、長さ・質量・時間それぞれを作る組み合わせがちょうど一通りに決まる。プランク単位が一意なのは、核が空だからです。

一般化しましょう。量を \(m\) 個選ぶと、その次元指数は \(5\times m\) の整数行列 \(D\) になります(SI の基本次元は kg, m, s, A, K の 5 つ)。積 \(\prod q_i^{a_i}\) が無次元である条件は、

$$D\,\mathbf{a}=\mathbf{0}$$

これだけです。つまり ──

この回の道具

無次元量の全体=次元行列の核(カーネル)。 しかも指数は整数で欲しいので、整数核を求める。

これは物理では Buckingham の \(\pi\) 定理と呼ばれてきたものですが、名前を知らなくても構いません。掃き出し法で解ける、それが全部です。行列を有理数で階段化して、ピボットでない列(自由変数)ごとに核ベクトルを一本ずつ取り出し、分母を払って整数にし、最大公約数で割る。高校で習う手順そのままで、機械は「無次元とは何か」を一切知らないまま、無次元量を吐き出します。

設計判断 ── ゼロを含む核ベクトルは捨てる 指数のどれかが \(0\) なら、その量は実は使われていません。つまりもっと小さい部分集合が、同じ関係を既に出している。だから「全部の成分が非ゼロ」のものだけを採用します。こうすると重複が消え、一本一本が「これ以上材料を減らせない関係」になります。

03機械にする

あとは、量の表からすべての部分集合を作り、それぞれで核を求めるだけです。中核はこれだけで動きます。

kuuhaku.cpp ── 中核
// 部分集合 idx(m 個の量)の次元行列 (5 × m) の整数核を返す。
// 核ベクトル v は「∏ q_i^{v_i} が無次元」を意味する。
std::vector<std::vector<int>> integerKernel(const std::vector<int>& idx) {
  // (1) 次元指数を有理数行列に並べる
  // (2) 行簡約(RREF)── ただの掃き出し法
  // (3) 自由変数ごとに核ベクトルを取り出し、
  //     分母を払って整数化 → gcd で割って原始ベクトルに
}

素材は独立な物理量 21 個 ── 基本定数(\(c,\hbar,G,k_B,e,\varepsilon_0\))、粒子の質量 9 種、QCD と電弱のスケール、宇宙論の量(\(H_0,\Lambda,T_{\rm cmb}\))。材料は 6 個まで、指数は \(\pm4\) まで。走らせます。

出力
無次元の組み合わせ: 162931 個
そのうち |log10 V| < 0.050 に落ちたもの: 279

16万本。そのうち 279 本が、値 1 の \(\pm12\%\) に入りました。279 個も一致が見つかった ── そう言いたくなります。ここが分かれ道です。

◇ ◇ ◇

04最初の罠 ── 複雑な式は、何にでも当たる

指数を大きくしていいなら、どんな数でも作れます。\(m_p^{4}m_e^{-3}m_\mu^{-1}\cdots\) と並べれば、値はいくらでも動く。当たって当然のものが当たっても、情報はゼロです。

だから複雑さの軸を入れます。指数の絶対値の和 \(\Sigma|a_i|\) ── オッカムの剃刀を数にしたものです。式の本数を帯ごとに数えると、こうなっています。

複雑さ \(\Sigma|a|\)式の本数意味
2–341ほぼ単純な比。ここで当たったら事件
4–51,190まだ読める式
6–714,998そろそろ怪しい
8–943,444当たって当たり前
10+103,258数えるだけ無駄

本数が指数的に増えます。だから全体のヒット数を見ても意味がありません。帯ごとに、その帯の本数に対して当たりすぎているかを見る必要がある。

05でたらめな宇宙を作る

「当たりすぎ」を測るには、比べる相手が要ります。理屈で期待値を計算してもいいのですが、もっと素朴で、もっと信用できるやり方があります。

この回の芯

同じ手続きを、でたらめな宇宙に対して何百回も回してみる。
本物の宇宙のほうがヒットが多くなければ、それは偶然だ。

実装は拍子抜けするほど簡単です。列挙した 16 万本の式はそのまま固定して、各物理量の値だけをランダムにずらす。\(10^{-1.5}\) 倍から \(10^{+1.5}\) 倍の範囲で、対数一様に。次元も、組み合わせの構造も、式の本数も、まったく同じ。数字だけが違う宇宙です。それを 200 個作って、それぞれでヒット数を数えます。

これは素粒子物理で look-elsewhere 効果と呼ばれるものへの対処です。「どこか一箇所で 3σ の山が出た」は、探した場所が十分多ければ必ず起きる。姉妹編「わかる質量」番外③で Koide 公式を診断したときの注意 ── 無次元の組み合わせを十分たくさん作れば、いくつかは単純な値の近くに必ず落ちる ── を、今度は実測するわけです。

06先に、検出力を示す

p 値を出す前にやることがあります。この機械は、本物の関係があったら本当に見つけられるのか。 見つけられない機械が「何も見つかりませんでした」と言っても、何の情報もありません。

そこで陽性対照を取ります。定義で互いに結ばれていることが分かっている量だけを入れる ── 原子物理の \(\hbar, c, e, \varepsilon_0, m_e\) と、そこから定義される \(a_0\)(ボーア半径)、\(E_h\)(ハートリーエネルギー)、\(\sigma_T\)(トムソン断面積)。ここには本物の関係が確実に存在します

陽性対照
帯     式の数   本物  偶然なら    超過
6-7        10      1  0.0±0.2  4.9 σ

[Σ|a|=6] hbar^2 m_e^-1 a0^-2 E_h^-1  = 1.0000

掘り当てました。\(E_h=\hbar^2/(m_e a_0^2)\) ── ハートリーエネルギーの定義そのものです。機械は「ボーア半径」も「エネルギー」も知りません。次元の数ならびと、値だけから、これを見つけた。検出力はある。

正直な線 ── 全体で見ると、これは埋もれる 同じ計算の全体の p 値は 0.26。まったく有意ではありません。4.9σ は「複雑さ 6–7 の帯」に絞って初めて出てきた数字です。帯に分けなければ、本物の関係すら偶然に飲まれる。 これが 04 節の主張の実演になっています。
もうひとつ ── この 4.9σ は、偶然側のばらつきがほぼゼロ(\(0.0\pm0.2\))なので割り算で膨らんでいます。σ ではなく p 値で読んでください。

07結果

準備が済みました。本番です。

本番 ── 独立な物理量 21 個、材料 6 個まで、指数 ±4 まで
無次元の組み合わせ: 162931 個
そのうち |log10 V| < 0.050 に落ちたもの: 279 個

  偶然のヒット数 : 平均 294.5 ± 31.7
  本物の宇宙     : 279 個
  経験 p 値      : 0.6667

帯     式の数    本物   偶然なら    超過
2-3        41       1   0.4±0.6    1.0 σ
4-5      1190       1   4.5±2.3   -1.5 σ
6-7     14998      32  35.3±6.4   -0.5 σ
8-9     43444      85  97.4±12.5  -1.0 σ
10+    103258     160 156.9±20.7   0.1 σ

どの帯にも、超過はありません。 それどころか本物の宇宙は、でたらめな宇宙の期待値をわずかに下回っています。279 対 294.5。p 値は 0.67 ── 「偶然だとしたら、こんなことは滅多に起きない」の正反対で、偶然そのものです。

閾値(どこまでを「1 の近く」と呼ぶか)と、ずらし幅(でたらめさの強さ)を振っても、結論は動きません。9 通り試して p は 0.23 から 0.64 の間。

図:自分で回してみる ── 21 個の量から無次元の組を列挙し、でたらめな宇宙 200 個と比べます(あなたのブラウザが今その場で計算しています)
でたらめな宇宙のヒット数の分布 本物の宇宙
計算中…

赤い線(本物の宇宙)が、灰色の山(でたらめな宇宙たち)の真ん中あたりに刺さっているのが見えるはずです。厳しさを変えても、でたらめさを変えても、赤い線は山から出ていかない。それがこの回の結果です。

◇ ◇ ◇

08壁 ── 次元解析は、係数を出せない

ここで、この機械の届かない範囲をはっきりさせておきます。実は、有名な「一致」のいくつかは、この探索で拾えていません。拾えないことに理由があります。

宇宙定数と物質の密度が今ちょうど同じくらいだ、という有名な話(coincidence problem)を、機械の言葉で書いてみます。

やってみよう ── 拾えない理由

次元解析が書ける、いちばん素直な無次元量:

$$\frac{\Lambda c^2}{G\rho_c}=17.3$$

1 からは、ずいぶん遠い

ところが物理の側の正しい定義は \(\rho_\Lambda=\Lambda c^2/(8\pi G)\)。\(8\pi=25.1\) が入っています。それで割れば \(\rho_\Lambda/\rho_c=0.69\) ── これが「ちょうど同じくらい」の正体。

つまり一致は \(8\pi\) の中に隠れていました。そして次元解析は \(8\pi\) を出せません。出せるのは式のまでで、前に付く \(O(1)\) の数は原理的に決まらない。\(2\pi\) も \(1/4\) も \(3/5\) も、全部この壁の向こう側です。

02 節で機械が最初に吐いた式も、実は同じ壁でした。\(e^2/(\varepsilon_0\hbar c)=0.0917\) ── 有名な \(1/137\) はここに直接は現れません。\(4\pi\) をはがして初めて \(\alpha=1/137.036\) になる。機械は \(\alpha\) を見つけたのに、\(\alpha\) を見せてくれなかった。

これは残念な制約ではなく、この回でいちばん重要な発見です。「人間が解けていない」の多くは、実はこの \(O(1)\) の壁の向こうにあります。ブラックホールのエントロピーで言えば、\(S\propto A\) までは次元で出るのに、\(1/4\) だけが出ない。そこを埋めるには、数える対象そのもの ── 状態、機構、対称性 ── が要る。機械が壁の手前で止まったことで、壁の位置が測れた。

09いちばん怖かったもの

実験にはもう一つ、予定になかった収穫がありました。最初に、定義で決まる量(\(a_0, E_h, \rho_c, \sigma_T\))も混ぜて走らせたときのことです。上位のヒットに、こんな式が並びました。

上位ヒット(定義で決まる量を含めた場合)
[Σ|a|= 6] hbar^2 m_e^-1 a0^-2 E_h^-1      = 1.0000
[Σ|a|= 6] G^1 m_mu^-1 m_p^1 H0^-2 rho_c^1 = 1.0601

上は本物 ── ハートリーエネルギーの定義です。では下は? 分解するとこうなります。

やってみよう ── 下の式をほどく $$\underbrace{\frac{G\rho_c}{H_0^2}}_{=\,3/8\pi\,=\,0.1194}\times\underbrace{\frac{m_p}{m_\mu}}_{=\,8.88}=1.0601$$

左は臨界密度の定義 \(\rho_c=3H_0^2/(8\pi G)\)。右はまったく無関係な質量比。掛けたら、たまたま 1 に近づいた。

宇宙論の定義に、素粒子の質量比という飾りが乗っただけの式です。物理的な意味はありません。けれど出力の見た目では、上の本物とまったく区別がつきません。 どちらも「6 個の材料、指数の和 6、値がほぼ 1」。

正直な線 ── これは自動探索の本質的な弱点 「本物の関係」と「本物の関係に無意味な飾りを掛けたもの」は、値と複雑さだけでは分離できません。分離するには、式が何を言っているかを理解する必要がある ── つまり、機械の外に出る必要がある。
姉妹編「わかる質量」番外③は、Koide 公式について「美しさは仮説の入口であって、証拠ではない」と書きました。その罠が、今度は自分の書いたプログラムの出力の中に、そのままの形で現れたわけです。

10何が言えて、何が言えないか

結果を、言えることと言えないことに分けます。ここを混ぜると、途端にトンデモになります。

言える言えない
基本定数を組み合わせて \(O(1)\) になる式を機械的に探しても、偶然以上のものは出てこない(p = 0.67)。 「一致は存在しない」。この手続きが見られるのは \(O(1)\) の値だけで、\(4\pi\) の向こうは見ていない。
総当たりで出てくる「美しい一致」は、数を数えれば全部説明がつく。数秘術が尽きない理由が、そのまま数字になった。 「この量の表が正しい」。素材を変えれば結果は変わりうる。表は人間が選んでいる。
機械は本物の関係(定義)を実際に掘り当てた。検出力は確認済み。 「機械が見つけたものは全部意味がある」。定義に飾りを掛けただけの式が同じ顔で並ぶ。

負の結果です。でも、はっきりした形の負の結果です。「基本定数の間に、まだ誰も気づいていない単純な数値的一致が眠っている」という期待は、この範囲では否定された。 空白は、比の取り方が足りないから残っているのではない。

練習問題
  1. 量を \(m\) 個選び、基本次元が 5 つのとき、無次元の組み合わせは何次元分できるか。行列 \(D\) の階数を \(r\) として答えよ。また \(m=6,\ r=5\) のとき、その部分集合に固有の関係は本質的に何本か。
    答えを見る
    核の次元は \(m-r\)。\(m=6,\ r=5\) なら \(1\) 次元 ── つまり定数倍を除いてただ一本。だから 6 個組を選ぶたびに、関係が自動的に一本ずつ決まる。プログラムが速い理由でもある。
  2. ヒットの条件を \(|\log_{10}V|<0.05\) と書いた。これは \(V\) がどの範囲にあることか。なぜ \(V\) そのものではなく対数で測るのか。
    答えを見る
    \(10^{-0.05}<V<10^{0.05}\)、つまり \(0.89<V<1.12\)(約 \(\pm12\%\))。対数で測るのは、\(V\) と \(1/V\) が同じ関係だから。指数の符号を反転しただけの式を二重に数えないため、\(1\) からの距離は対数で対称に測る必要がある。
  3. 「でたらめな宇宙」を作るとき、式の集合は固定して値だけをずらした。式のほうをランダムにしなかったのはなぜか。
    答えを見る
    知りたいのは「この宇宙の数字が特別か」であって、「この列挙アルゴリズムが特別か」ではない。式の集合を固定すれば、探索の網の目・本数・複雑さの分布がすべて同一になり、違いは値だけに絞られる。比べたいもの以外を揃えるのが対照実験の作法。
  4. 陽性対照で \(4.9\sigma\) が出たのに、同じ計算の全体の p 値は \(0.26\) だった。矛盾していないのはなぜか。
    答えを見る
    本物の関係は「複雑さ 6–7」の帯にある一本だけ。全体で見ると、他の帯の偶然のヒットに薄められて消える。信号がどこにあるか分かっているなら、そこだけを見るほうが強い ── ただし「見る場所を後から決める」と look-elsewhere そのものになる。陽性対照が正当なのは、帯を結果を見る前に決めていたから。

この回で作ったもの

機械。 物理量の表から、単位が消える組み合わせを全部列挙する。原理は「無次元=次元行列の整数核」で、実装は掃き出し法。純 C++、依存ライブラリなし、16 万本の列挙に 2.6 秒。

採点法。 列挙した式を固定したまま、値だけをでたらめにした宇宙を数百個作り、ヒット数を比べる。look-elsewhere 効果を、理屈ではなく実測する。

結果。 162,931 本を探して、偶然を超える一致はゼロ(p = 0.67)。どの複雑さの帯を見ても超過なし。閾値とでたらめさを振っても動かない。

そして、壁の位置。 有名な一致が拾えなかった理由は、それらが \(8\pi\) や \(1/4\) という \(O(1)\) 係数の中に隠れているから。次元解析は形までしか出せない。人間が解けていない問題の多くは、この壁の向こうにある ── 機械が手前で止まったことで、壁がどこにあるかが測れました。

この文書は「つくる格子」シリーズ第1回、物理好きの高校生・大学生向け読み物です。姉妹編「わかる」が既知の物理を解説するのに対し、本シリーズは作業そのものを見せます ── 道具を作り、走らせ、出た結果を(それが負の結果でも)そのまま読む。

本文中の数値は実際の探索プログラムの出力です。無次元量の全体が次元行列の核をなすこと(Buckingham の \(\pi\) 定理)、および look-elsewhere 効果は、いずれも確立した内容です。いっぽう「量の表」は筆者が選んだものであり、素材の選び方によって結論は変わりえます ── この探索は「基本定数の間に単純な数値的一致は無い」を証明したのではなく、この表・この複雑さの範囲・この一致の定義のもとで、偶然を超える超過は検出されなかったと述べているだけです。また \(\sigma\) の値は偶然側の分散が小さいとき過大に見えるため、p 値で読んでください。図はあなたのブラウザ上で同じ手続きを縮小して再実行しており、数値が本文と厳密に一致しないのは乱数と探索範囲(材料 5 個まで)の違いによります。

探索プログラム(純 C++・依存なし):kuuhaku_cpp / 姉妹編:「わかる」シリーズ全集 ── 印刷する場合はブラウザの「印刷」から「PDF に保存」を(印刷版ではスライダーと解答は静止・非表示になります)。

印刷 / PDF 化:⌘+P(Windows は Ctrl+P)。図のスライダーで、あなた自身の手で「偶然の山」を動かせます。