チューリング・パターン(反応拡散方程式と生物の形態形成)
アラン・チューリングが解き明かした、遺伝子に設計図がなくても自然にヒョウ柄や縞模様が生まれる数理
- 1
- 暗号解読や計算機科学の父アラン・チューリングが、晩年1952年に発表した「形態形成の化学的基礎」に基づく数理モデル
- 2
- 「自己を増やす促進物質(アクチベーター)」と「それを抑える抑制物質(インヒビター)」が異なる速度で拡散するとき、一様な状態から自発的に模様が湧き出る
- 3
- シマウマの縞模様、ヒョウの斑点、熱帯魚タテジマキンチャクダイの皮膚模様、指の形成などがこの数式で説明される
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
「なぜヒョウには斑点があり、シマウマには縞があるのか?」という生命最大の謎を、コンピューターの父アラン・チューリングが化学反応と拡散の数理だけで解明した。
身につく武器・思考力
DNAに絵が描かれていなくても、数式の物理法則に従うだけで自律的に幾何学模様が湧き出る「自己組織化の美」を体感し、先端CGやナノテクに応用できる。
実社会・ITでの活躍現場
- •映画やゲームの3DCGにおけるリアルな大理石・木目・動物スキンテクスチャの自動生成
- •再生医療・幹細胞工学における毛包・肺の気管支・指の骨の自律的器官形成シミュレーション
- •ナノテクノロジーにおける自己組織化単分子膜(SAMs)や多孔質材料の微細加工
- •都市計画における商業エリアや住宅街の自律的クラスター発展モデル
Layer 1 — 直感・シミュレーター
「ヒョウの斑点」「シマウマの縞」「熱帯魚の迷路」のプリセットボタンを押してみよう。中央に置かれたわずかな化学物質の種から、偏微分方程式の計算ループを通じて、自発的に美しい幾何学模様がみるみるキャンバス全体に自己組織化されていく様子を観察できる。
チューリング・パターン(自己組織化による模様生成)が自発的に生じるために不可欠な拡散係数の条件はどれか?
Layer 2 — 定義・受験・証明
定義
2種類の化学物質(モルフォゲン)の濃度場を (促進物質)、(抑制物質)とする。チューリングの反応拡散方程式(Reaction-Diffusion System)は次式で表される。
ここで はそれぞれの拡散係数、 は空間ラプラシアン、 は物質間の局所化学反応項である。
公式・数理モデル
証明・導出
拡散誘導不安定性(Turing Instability)の発生条件:
拡散がない均一な系()において、平衡点 が安定であるとする。 反応項のヤコビ行列を と置くと、均一系の安定条件は、
である。通常、拡散項(熱伝導方程式と同じ働き)は濃度のムラを均一に均す方向に働くはずである。 しかし、波長 の空間摂動 を代入すると、空間固有値問題の行列は、
となる。ある波長 において となれば、固有値 となりその空間波長成分だけが指数関数的に増幅する。
この二次関数が下に凸で最小値が負になる条件を解くと、 が導かれる。 (自己促進)かつ (自己抑制)のとき、拡散係数比 (抑制物質の拡散が促進物質より圧倒的に速い)であれば、拡散が原因で空間的一様性が破れ、自発的に特定の周期波長を持つ模様が固定される(拡散誘導不安定性)。
押さえておきたいポイント
- 「生物のDNAの中に縞模様を描く直接のコードはない」。数式の物理法則に従って化学反応が進むだけで自律的に模様が生み出される
- 日本の生物学者・近藤滋教授らが、タテジマキンチャクダイの縞模様が成長とともに波のように移動・分岐することを実験で証明し、チューリング理論が正しかったことを実証した
- 近年では皮膚の模様だけでなく、肺の気管支の分岐構造、指の形成(5本指の配置)、羽毛の並び順など、器官形成の広範な原理として解明が進んでいる
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
ジェネラティブデザイン・テクスチャ自動生成・組織工学シミュレーション
コンピューターグラフィックス(CG)における大理石や動物テクスチャのプロシージャル生成、ならびに人工皮膚や再生医療における細胞分化・毛包配置の自己組織化シミュレーションにGray-Scottモデル等の反応拡散方程式ソルバーが用いられている。
1// 2次元 Gray-Scott 反応拡散ソルバーのコアロジック2function updateReactionDiffusion(3 gridA: number[][],4 gridB: number[][],5 width: number,6 height: number,7 f: number = 0.035, // 供給率8 k: number = 0.065, // 枯渇率9 da: number = 1.0, // Aの拡散率10 db: number = 0.5 // Bの拡散率11) {12 const nextA = gridA.map((row) => [...row]);13 const nextB = gridB.map((row) => [...row]);1415 for (let y = 1; y < height - 1; y++) {16 for (let x = 1; x < width - 1; x++) {17 const a = gridA[y][x];18 const b = gridB[y][x];1920 // ラプラシアン(隣接4セルとの差分)21 const lapA = gridA[y - 1][x] + gridA[y + 1][x] + gridA[y][x - 1] + gridA[y][x + 1] - 4 * a;22 const lapB = gridB[y - 1][x] + gridB[y + 1][x] + gridB[y][x - 1] + gridB[y][x + 1] - 4 * b;2324 const reaction = a * b * b; // A + 2B -> 3B の反応項2526 nextA[y][x] = a + (da * lapA - reaction + f * (1 - a));27 nextB[y][x] = b + (db * lapB + reaction - (f + k) * b);28 }29 }3031 return { nextA, nextB };32}
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元