かけ算第13号|チューリング(阻害場) × フィロタキシス
黄金角の生まれ方 — 押し合いだけが決めている
問い
当ギャラリーのフィロタキシスは、黄金角 137.5° を手で入れて種を並べている。ヒマワリのボロノイも同じ。だが実際のヒマワリは角度表を持っていない。137.5° はどこから出てくるのか。
答えは19世紀からある: 新しい芽は「すでにある芽からいちばん遠い隙間」に出る(ホフマイスターの規則, 1868)。つまり芽どうしが押し合っている。1992年、ドゥアディとクデールは磁性流体の滴を皿に落とすだけでこの押し合いを再現し、葉序が自発的に現れることを示した。2003〜2006年には実際の植物での分子機構も判明した——オーキシンという物質を細胞が汲み上げ、濃度の極大が周囲を枯渇させる。活性化と抑制、つまりチューリング・パターンの骨格そのもの。
フィロタキシスは、成長する円環の上の反応拡散だった。この作品はその抑制だけを取り出した最小模型で、黄金角が「入力」ではなく「出力」になることを確かめる。
規則は2つ、つまみは1つ
① 新しい芽は、既にある芽からの反発がいちばん弱い角度に生まれる。② 生まれた芽は外へ流れる(茎が伸びる)。つまみは成長の速さ G ひとつだけ——1周期で半径が何倍になるか(プラストクロン比)。乱数はどこにも使っていない。
G を下げると、黄金角に落ちる
成長が速い(G≥1)と、新しい芽には直前の1枚しか見えず、必ず真反対=180.000°(互生)になる。成長を遅くすると前の何枚もが同時に効くようになり、180°が不安定になって分岐する。そこから先、角度は137.5° に吸い寄せられる——G=0.03 で実測 137.83°、黄金角との差 0.32°。
発見: 枝はひとつではない。角度も数列も1本の式に乗る
黄金角の線の下に、もっと細い枝がある。それぞれの角度を最初に置いてやると、その角度にとどまる(=安定な固定点になっている)。しかもその角度は1本の式で書ける:
発散角 = 360° / (m + 1/φ)
そして枝ごとに螺旋の本数の数列が入れ替わる。数列は a₁=1, a₂=m, aₙ₊₁=aₙ+aₙ₋₁ で作られる——m=2 でフィボナッチ、m=3 でルーカス。
| 枝 | 理論の角度 | 実測(G=0.03) | 螺旋の本数の数列 | 実測のパラスチキー |
|---|---|---|---|---|
| m=2 | 137.508° | 137.83° | 1,2,3,5,8,13,21,34(フィボナッチ) | 8, 13, 21 |
| m=3 | 99.502° | 99.51° | 1,3,4,7,11,18,29,47(ルーカス) | 7, 11, 18 |
| m=4 | 77.955° | 77.75° | 1,4,5,9,14,23,37,60 | 5, 9, 14 |
| m=5 | 64.079° | 64.22° | 1,5,6,11,17,28,45,73 | 6, 11, 17 |
連分数で書くと正体が見える: 1/(m + 1/φ) = [0; m, 1, 1, 1, …]。尻尾がぜんぶ1で終わる数=貴金属数——「分数で近似しにくい」性質を持つ数の一家で、φ はその中で m=2 の席にいるだけだった。見取り図の発見1で「黄金比は分数のリズムを最も強く拒む」と書いたが、拒むのは φ だけではない。拒む数はひと家族いて、植物はそのどれにも住める。
実際の植物でも、ルーカス葉序(99.5°)はマツやサボテンで報告されている稀な型として知られている。この模型では「その角度を置いてやれば居つくが、放っておいては出てこない」——珍しさの理由がそのまま出てくる。
では、なぜ自然は黄金角なのか
枝が4本もあるのに、なぜ 137.5° ばかり見るのか。この模型はきれいに答える——素直な初期条件は、どれも黄金枝に落ちるから。芽1枚から始めても、2枚を180°に置いても、3枚・4枚・5枚の輪生から始めても、でたらめな角度から始めても、G を下げていけば全部が同じ 137.640° に着地する(8通りで確認)。他の枝は、その角度を最初から置いてやらないと現れない。
黄金角が特別なのは「いちばん詰まるから」ではなく(それも正しいが)、放っておくとそこに落ちる唯一の枝だから。植物は最適化していない。押し合っているだけで、坂の底が黄金角だった。
対照実験 — 記憶の枚数が葉序を決める
かけ算の検査は「片親に戻す」(発見8)。ここでは阻害の届く範囲を絞って、フィロタキシスの構造を消しにいく。
| 阻害が届く枚数 | 発散角(G=0.05) | 植物でいうと |
|---|---|---|
| 直前1枚だけ | 180.000°(ばらつき0) | 互生(2列に交互) |
| 直前2枚 | 120.8° | 三輪生(3列) |
| 3〜6枚 | 135〜144°(定まらない) | 過渡 |
| 8枚以上 | 137.64°(黄金角) | 螺旋葉序 |
阻害が1枚しか届かないと、新しい芽は前の1枚の真反対に出るしかない——厳密に180°。2枚届くと三つ組。8枚以上届いてはじめて黄金角が立ち上がる。葉序の型は、遺伝子が角度を指定しているのではなく「何枚ぶん覚えているか」で決まる。
もうひとつの対照: 反発の法則を取り替えても角度は動かない。反発を 1/d から 1/d⁵ まで——効き方の距離依存を5段階変えても——発散角は 137.644〜137.673° の 0.03° 幅に収まる。黄金角は力の法則の性質ではなく、幾何の性質だった。
ただし境界がある。1/d⁶ まで短距離にすると単一の角に落ち着かなくなり、147.8° → 79.0° → 136.9° → 137.1° → 79.2° を繰り返す周期5の循環に入る(「最近接の芽からいちばん遠い点」という極端な規則でも同じ)。これは上の表で阻害を1〜6枚に絞ったときの壊れ方と同じ現象——阻害が近くにしか届かなければ、黄金角は立たない。指数を上げることと記憶を減らすことは、この模型では同じことだった。
どう作ったか
誕生円(半径1)の上で反発エネルギー Σd−p を 0.4° 刻みで走査し、谷を三分探索で詰める。芽は年齢 k に対し半径 ekG に置く(=自己相似なので配置が定常状態に落ち着く)。断熱掃引——G を大きい方から下げながら育てる——が要で、いきなり小さい G から始めると乱れたまま固まる。パラスチキーは「番号差 k の隣り具合 dk = |zi+k−zi|/|zi| の中央値」を k=1..60 で測り、小さい方から拾う。ヒマワリのボロノイで「隣接番号差が100%フィボナッチ」を測ったのと同じ物差しが、手で置いた点ではなく自分で生まれた点にも通る。
機械検査は15件。①G≥1.2 で厳密 180.000°・G=0.03 で 137.83°(黄金角との差 0.32°)②m=2..5 の4枝が理論の貴金属角に ±1.5° でとどまる ③各枝のパラスチキーが a₁=1,a₂=m の数列に含まれる(フィボナッチ/ルーカス/…)④反発の指数を 1/d〜1/d⁵ に替えても 0.1° 以内・1/d⁶ では周期5の循環に壊れる(境界も検査) ⑤阻害1枚→180.000°・2枚→120.8°・多数→黄金角 ⑥素直な種3通りが全て同じ角度に着地 ⑦G を下げると螺旋の本数が階段状に上がる((5,8)→(8,13)→(13,21))⑧出荷SVG3枚。
重い方 — 本物の反応拡散に、同じことをさせてみた
ここまでは「阻害場」だけを取り出した最小模型だった。では親の作品チューリング・パターンのソルバ(Gray-Scott)をそのまま連れてきて、成長する茎(円筒)に載せたらどうなるか。足したのは2つだけ——①帯の中でだけ反応と拡散を効かせる(外は分化した組織で、模様は永久に凍る)②N ステップごとに場を1セル上へずらす(茎が伸びる・数値拡散ゼロのコンベア)。
まず対照から(発見8)。帯もコンベアも外すと、これはただの周期平面=親の作品そのもの。実際 turing.js と浮動小数まで完全一致(最大差 0.0)——足し算の順序まで1文字ずつ揃えてあるので、丸め誤差すら出ない。ここが揃っていれば、以降の違いは全部「帯とコンベア」のせいだと言い切れる。
3つの型が出た。円周と成長の速さを変えると、まず「行」が立つ——1行あたりの個数は円周÷波長で決まり、行どうしは揃うか半分ずれるかの2択。発散角は 180.0°(互生・ばらつき0.0)と90.0°(十字対生・ばらつき0.2)できれいに止まる。どちらも実在の葉序。しかも同じ行の原基の高さのばらつきは行間隔の3%未満=複数が同時に生まれている。
そして周48セルあたりをゆっくり育てると、様子が変わる。原基が1個ずつ生まれるようになり、螺旋葉序になる(右の図。行の構成が全部[1,1,1,…])。ここが軽い模型と同じ土俵で、発散角も同じ帯に入る。
| 茎の長さ | 成長 600 | 成長 800 | 成長 1000 | 成長 1500 |
|---|---|---|---|---|
| 70セル | 140.4° ±1.6 | 142.7° ±1.0 | 144.9° ±0.5 | — |
| 100セル | — | — | 137.4° ±0.8 | — |
| 120セル | — | 136.3° ±0.8 | 133.6° ±0.7 | 131.0° ±1.1 |
数字はどれもばらつきが1°前後=その設定の中ではきっちり一定。そして値の入る帯 131〜145° には、実在の螺旋葉序がまとめて入っている——2/5葉序 144°(サクラ・リンゴ)、3/8葉序 135°(ポプラ)、そして極限の黄金角 137.508°。茎を100セルにした一発では 137.42°(黄金角との差 0.09°)まで出た。
ただし固定しない。同じ (周48, 成長1000) でも茎の長さを70→100→120セルと変えるだけで 144.9° → 137.4° → 133.6° と動く。軽い模型が初期条件8通りで 137.637° に 0.01° の再現性で落ちたのとは、性格がまるで違う。重い模型は「黄金角のあたり」までは来るが、そこを選び切らない。
⚠️ この段落と上の表は、次節(v1.15)で訂正した。帯の高さを茎の長さの割合(0.40NZ)で決めるコードになっていたので、茎を伸ばすと帯も一緒に広がっていた=交絡。帯をセル数で固定すると角度は動かず、動かしていたのは「帯の中に残っている原基の枚数」だった。重い模型はちゃんと選び切っていた。
ひとつ測れた手がかりを置いておく。Gray-Scott で阻害(基質 u の枯渇)がどこまで届くかは線形化で解ける: 0.3·Du∇²δu = F·δu より ℓ = √(0.3·Du/F) = 2.86 セル(0.3 は9点ラプラシアンの実効係数——∇² のつもりで書くと3割強はずれる)。数値でも 2.89 セル、誤差1%で一致。いっぽう原基の間隔は約18セル、つまり阻害が届くのは原基 0.16 枚ぶん。軽い模型の対照実験では、黄金角が立つのに8枚ぶん要った。この差が「選び切らなさ」の正体かどうかはまだ測っていない——ここは解釈として置く。(v1.15 で測った: 記憶を担っていたのは阻害の到達距離ではなく、模様自身の波長と帯の幅だった。次節)
逆に、重い模型にしかできないこともある。連続場は同時に2個以上を立てられるので、対生・輪生を作れる。1個ずつ生まれる軽い模型には、この型は原理的に作れない(発散角を1つずつしか定義できない)。2つの模型は競合ではなく分業だった。
探した範囲: 円周 32〜128セル・成長の速さ 1セルあたり150〜4000ステップ・茎の長さ 60〜120セル・拡散 Du=1〜8/Dv=0.08〜0.5・帯の形3通り・円筒と対数極座標(成長する円盤)の2つの計量。掃引の原本は tools/explore/turing-apex-sweep.js。
続き — 「選び切らない」の正体は、帯の幅だった
前節の最後をもう一度読む。「同じ (周48, 成長1000) でも茎の長さを70→100→120セルと変えるだけで 144.9° → 137.4° → 133.6° と動く」。これは交絡だった。帯(原基が生まれる competent zone)の高さを、コードでは茎の長さの割合(0.40NZ)で決めていた。だから茎を伸ばすと帯も一緒に広がる。動かしていたのは茎の長さではなく、帯の幅のほうだった。
同じ設定のまま、帯だけを絶対セル数(28セル)に固定して茎を伸ばしてみる。
| 茎の長さ | 帯=茎の0.40(前回のコード) | 帯=28セル固定(対照) |
|---|---|---|
| 70セル | 帯の中に3.6枚 → 145.1° | 3.6枚 → 145.0° |
| 100セル | 5.2枚 → 137.6° | 3.6枚 → 145.4° |
| 120セル | 6.9枚 → 133.5° | 3.6枚 → 145.4° |
帯を固定すると動かない(成長600でも茎70〜140セルで140.4〜141.6°)。いっぽう既定(割合)では、帯の中に残っている原基が 3.6 → 5.2 → 6.9枚と増えていて、角度はそれにつれて動いていた。重い模型はちゃんと1つの角度を選んでいた。選ばれる角度を決めていたのは、茎の長さではなくいま帯の中に残っている原基の枚数だった。
2つの模型が、同じ横軸で同じ階段を踏む
「帯の中に残っている枚数」=帯の高さ ÷ 原基の縦間隔 は、軽い模型の「阻害が届く枚数」とちょうど同じ物差しになる。帯の幅を16→90セルまで振って測る(周48セル・成長600・波長は約18.7セル)。⚠️横軸は設定値ではなく測定値(縦間隔は結果として出てくる)。
| 帯の幅 | 帯の中の枚数 | 重い方(Gray-Scott) | 軽い模型(同じ枚数) |
|---|---|---|---|
| 16〜20セル | — | 原基にならず輪になる(点0・輪7本) | — |
| 24セル | 1.5枚 | 92.2° ±63.5(定まらない) | 2枚 → 120.8° |
| 28セル | 2.4枚 | 124.1° ±46.9(定まらない) | 3枚 → 143.9° |
| 34セル | 4.7枚 | 133.3° ±17.0(塊が繋がる) | 5枚 → 135.4° |
| 40セル | 4.9枚 | 136.3° ±0.3 | 5枚 → 135.4° |
| 56セル | 7.5枚 | 137.3° ±0.6 | 8枚 → 137.7° |
| 84セル | 11.3枚 | 137.3° ±0.3 | 11枚 → 137.7° |
帯が波長と同じくらいまで狭いと(16〜20セル=波長の0.9〜1.1倍)原基が立たず、全周に回った輪になる。2〜4枚では点はできるが角度が定まらない。5枚で136.3°、7枚半で137.3°——そこから枚数を11枚に増やしても動かない。軽い模型が8枚で黄金角に入ったのと、転移点まで揃った。途中の値も似ている(3枚台で143°、5枚で135〜136°)。阻害場だけの最小模型と、本物の反応拡散の PDE が、同じ横軸の上で同じ階段を踏む。
ひとつ違いも出た。記憶が1〜2枚のとき、軽い模型は厳密に180°を選ぶが、重い方は乱れる。1個ずつ「いちばん空いた角度」を選ぶ規則には唯一の答えがあるが、連続場には「前の1枚から波長ぶん離れていればどこでもよい」という自由が残る——というのが解釈で、ここは測っていない。
「選び切る」かどうかも、枚数で決まる
ばらつきの小ささだけでは「選び切った」と言えない。軽い模型でやったのと同じ対照——素直な種を3通り(対称性を破る種の形を5×5/4×4/6×6セルに替える)——を重い方にも通す。
| 帯の幅 | 種 5×5 | 種 4×4 | 種 6×6 |
|---|---|---|---|
| 28セル(2〜3枚) | 124.1° ±46.9 | 142.8° ±0.1 | 134.8° ±33.9 |
| 56セル(7.5枚) | 137.3° ±0.6 | 137.4° ±0.4 | 137.3° ±0.5 |
2〜3枚では種を替えると答えが変わる(124°/142.8°/134.8°)。7枚半では3通りが0.1°以内で一致する。軽い模型の検査⑥「素直な種3通りが全て同じ角度に着地」と、同じ物差しで同じ答えが出た。
もうひとつ。角度は生まれた直後の値ではない。帯84セルで原基を古い順に5枚ずつ平均すると 121.2 → 132.2 → 134.3 → 135.7 → 136.5 → 136.9 → 137.1 → 137.3 と上がっていき、そこから55枚ぶん動かない。落ち着くまでに原基35〜40枚(=約40プラストクロン)かかる。
記憶を担っているのは、届く距離ではなく波長
Gray-Scott で阻害(基質の枯渇)が届く距離は ℓ=2.86セル、原基の間隔は約18.7セル——0.16枚ぶんしかない。それでも帯を広げれば記憶が効く。測ってみると、原基どうしの最近接距離は帯の幅を24→90セルに変えても 17.3〜20.8セル=ほぼ波長(18.7セル)のままだった。つまり立入禁止円の半径を決めているのは模様自身の波長で、化学的な減衰長ではない。帯の中に何枚の立入禁止円が居残るか——それが「記憶の枚数」の中身だった。
逆側からも確かめる。阻害だけを遠くまで届かせる系(Gierer–Meinhardt: 活性 a と阻害 h を別に持ち、Dh≫Da にする)に差し替えて、到達距離そのものを伸ばしにいった。線形化すると全部が式で出る(0.3 は9点ラプラシアンの実効係数)。
だから「阻害が届く枚数」は R = ℓh/λ = √q/(2π)(q ≡ ℓh/ℓa)=q の平方根しか伸びない。
模様が出はじめる境界は q > 1+√2 = 2.414(拡散比 Dh/Da = s·q² > 3+2√2 倍)。そこでの記憶は R=0.247枚。
平坦なトーラスで裏を取った。q=2.0・2.2 では模様が出ず(振幅0.0)、q=2.6 から出る——解析の境界 2.414 を数値が挟む。出た模様の間隔も最大成長の波長と10%以内で一致する。式は正しい。
そのうえで8枚ぶん届かせるには q=(16π)²≈2530 が必要で、拡散比は s·q²≈7.7×10⁶、波長は 474セルになる。格子で計算できる大きさではない。実際に払える範囲(記憶0.32〜0.48枚)で成長する茎に載せると、出てくるのは厳密 180.0°(互生・ばらつき0.0)——帯を波長の2.7倍から4倍に広げても 180.0° のまま。これは軽い模型の「記憶1枚 → 厳密180°」と同じ答え。阻害が指数で落ちる系では、いちばん近い1枚が効きすぎて、それ1枚しか覚えていないのと同じになる。黄金角は「阻害が遠くまで届くこと」では買えなかった。
ただし「どの角度か」は円周でも動く
帯を72セル(=十分な記憶)に固定して、円周だけを変える。波長は約18.7セルのままなので、変わるのは周÷波長だけ。
| 円周 | 周÷波長 | 種 5×5 | 種 4×4 |
|---|---|---|---|
| 48セル | 2.57 | 137.4° ±0.3 | 137.4° ±0.4 |
| 51セル | 2.73 | 121.7° ±0.1 | 121.7° ±0.2 |
| 54セル | 2.89 | 126.9° ±0.0 | 126.9° ±0.0 |
円周を6%変えるだけで、やはりきっちり選び切ったまま(種2通りが0.2°以内で一致)、値が 137.4° から 121.7° に飛ぶ。つまり「選び切るか」は記憶の枚数の話、「どの角度か」は円筒の周と波長の比の話だった。円筒に円板を詰める格子は周÷波長ごとに族をつくる(van Iterson 1907 の図で知られる系統)——その枝をなぞって黄金角がどこに現れるかを確かめるのはまだやっていない。黄金角がこの模型で「特別扱い」されている証拠は、いまのところ周48〜49セル(2.57〜2.62)に平坦部があること以上には出ていない。
軽い模型で黄金角が出るのは、半径が伸びる幾何(つまみ G=1周期あたりの半径の伸び)を持っているから。円筒は半径が伸びない。この違いを詰めるのが次の宿題になった。
道具 — ゲージ記録と、短い窓の罠
ここまでの測定を可能にしたのは小さな道具立て。帯の外は不活性(chi=0 で反応も拡散も止まる)だから、捨てられる直前の1行を成長のたびに控えておくと、茎を高くしなくても時間方向に長い記録が取れる。費用が茎の長さの2乗から1乗に落ち、同じ計算時間で原基14枚→95枚まで測れるようになった。
⚠️ 罠: 短い窓は「きっちり一定」に見える。帯28セルは窓を110セルに取ると 142.8°±0.1 と読めるが、記録を3倍長くすると別の状態に入り、種を替えると 124.1°±46.9 や 134.8°±33.9 になる。ばらつきの小ささは「選び切った」証拠にならない——記録の長さと初期条件を替えてから言う。
もうひとつの道具は輪の検出。塊の角度方向のまとまり具合 |Σw·eiθ|/Σw を出しておくと、点(1に近い)と全周に回った輪(0に近い)を分けられる。これがないと、帯20セルの輪の重心角を「発散角 74.8°」として拾ってしまう(初版の失敗)。
残っているつまみは成長の速さ。3倍ゆっくり(1セルあたり1800ステップ)にすると、同じ枚数でも 10.2枚→132.4°±0.1・12.0枚→132.5°±0.1 と、別の値にきっちり落ちる。縦間隔は7.4→7.0セルでほとんど変わっていないので「枚数」では説明できない。場が緩和する時間という2つ目のつまみが残っている。
機械検査は v1.15 で11件足した(全体で473件)。①帯を28セルに固定すると茎70→100セルで角度が動かない ②帯を割合にすると同じ茎の変化で帯の中の枚数が増える ③帯56セルで黄金角との差1°以内かつばらつき1°未満 ④種を替えても一致・低記憶ではばらける ⑤軽い模型も同じ転移点 ⑥帯20セルは原基でなく輪(点0・輪7本)⑦GM は λ=2π√(ℓaℓh)・R=√q/(2π) ⑧8枚に必要な q と拡散比 ⑨境界 q=1+√2 を数値の分散関係が挟む ⑩平坦なトーラスで間隔が最大成長の波長と一致 ⑪出荷SVG。
探した範囲: 帯16〜90セル・茎38〜227セル・円周45〜54セル・成長600と1800・種3通り/GM は q=2〜16 の平坦と、q=4・9 を成長する茎に。掃引の原本は tools/explore/turing-apex-band.js。
出典
- 数理(長距離阻害)
- A. Gierer & H. Meinhardt, "A theory of biological pattern formation", Kybernetik 12 (1972) 30(活性化因子と阻害因子を別に持つ系)。円筒に円板を詰める格子の族は G. van Iterson (1907) の図で知られる系統——この模型がその枝をなぞるかは未検証
- 数理
- S. Douady & Y. Couder, "Phyllotaxis as a physical self-organized growth process", Phys. Rev. Lett. 68 (1992) 2098(および J. Theor. Biol. 178 (1996) の三部作)。阻害場という発想は W. Hofmeister (1868)。植物での分子機構は D. Reinhardt et al., Nature 426 (2003) 255/H. Jönsson et al., PNAS 103 (2006) 1633
- 生成
- generators/phyllotaxis-turing.js(阻害場の走査+三分探索・断熱掃引・パラスチキーの中央値測定・分岐図と阻害場の作図。依存ゼロ・乱数ゼロ)/generators/turing-apex.js(本物の Gray-Scott を成長する茎に載せた「重い方」。turing.js のソルバに帯とコンベアを足しただけ/v1.15 で足したもの=帯を絶対セル数で扱う bandRun・ゲージ記録 gauge/gaugeStrip・輪の検出・長距離阻害 simulateGM。掃引の原本は tools/explore/turing-apex-sweep.js と tools/explore/turing-apex-band.js)