主页 模型库 竞赛 学习中心 工具箱 论文库 前沿 建模空间 AI建模
学习中心 探索专题 元胞自动机与自主体模型 反应扩散与图灵斑图

本页实验台

  1. Gray–Scott 模型
  2. 图灵不稳定
  3. 斑点还是条纹
  4. 尺寸决定花纹
LAB 01

Gray–Scott 模型

两个参数 F 与 k 一动,斑点、条纹、分裂、混沌轮番出现

问题
豹的斑、斑马的条、鱼身上的花纹——这些图案是基因一个一个"画"上去的,还是化学反应自己长出来的?1952 年图灵给出了第二个答案,而且只需要两种互相作用、扩散速度不同的物质。
模型
Gray–Scott 是反应扩散方程的一个具体实例:
∂u/∂t = Du∇²u − uv² + F(1−u)
∂v/∂t = Dv∇²v + uv² − (F+k)v
u 是"底物",v 是"自催化物",F 是补料率,k 是消耗率,Du、Dv 是两者的扩散系数。uv² 这一项是自催化:v 越多,产生 v 越快。
迭代步数—
花纹覆盖的面积比例—
斑块数 / 孔洞数—
自动判定的形态—
Gray–Scott 只有两个可调参数,却能长出十几种完全不同的花样。F 是供给速率(把原料补回来的快慢),k 是消耗速率(把产物清走的快慢)。两个数字一动,画面就在斑点、条纹、迷宫、孔洞、自我复制、混沌之间来回跳。先按播放,让它跑三五千步,再慢慢调 k。在 F=0.035 附近,把 k 从 0.065 降到 0.055,你会看到一颗颗分开的圆点逐渐拉长、连接,最后变成一张迷宫。读数里的"斑块数 / 孔洞数"就是自动判定的依据:斑点是"很多块 + 一个连通的背景",迷宫是"一块 + 很多个洞",两者在拓扑上正好相反。反应扩散最值得记住的一点是:这些图案没有蓝图。没有哪个格子知道自己该是斑点还是条纹,也没有一个中心在分配位置。初始状态是均匀的(加了一点随机扰动),花纹的波长、间距、拓扑全部由那两个参数和扩散系数之比决定。这正是发育生物学最需要的性质——基因组里不可能存下每一根条纹的位置,只能存下规则。
LAB 02

图灵不稳定

为什么必须是"短程激活、长程抑制"才会出花纹

问题
扩散通常被认为是"抹平差异"的:热量扩散会让温度变均匀。那为什么加了扩散反而会长出花纹?图灵的答案很反直觉:需要两种物质,而且抑制的那个必须跑得更快。
模型
对均匀定态做线性化,看波数 q 的扰动增长率 λ(q)。
λ(q) = ½ [ tr Jq + √( (tr Jq)² − 4 det Jq ) ],  Jq = J − q² diag(Du, Dv)
J 是反应项的雅可比矩阵。若存在某个 q > 0 使 λ(q) > 0 而 λ(0) < 0,均匀态对有波长的扰动不稳定——这就是图灵不稳定,条件之一是 Dv ≫ Du(短程激活、长程抑制)。
增长最快的波数 q*—
对应的花纹波长 2π/q*—
最大增长率—
会不会长出花纹—
图灵的洞见有一个很反直觉的核心:扩散通常让东西变均匀,但在两个物质、两种扩散速度的情况下,扩散反而能制造不均匀。条件写出来很简单——激活物扩散得慢,抑制物扩散得快。一个小的随机起伏让某处激活物略多,它就地把自己进一步放大(自催化),同时产生抑制物;抑制物跑得远,把周围一圈压下去。结果是"这里高、旁边一圈低、再远一点又高"——花纹就是这么来的。把 d 从 1 一路往上拖,盯住那条曲线什么时候抬到 0 以上。在 a=0.1、b=0.9、γ=100 时,d 到 5 都还全程在 0 以下(均匀态稳定);d=10 时出现一段正的区间,最快波数 q*=5.64,波长 1.11;d=20 时最大增长率升到 26.3,q* 降到 4.87,波长 1.29。两件事值得记住。第一,必须 d 大于某个临界值才会失稳——这就是"短程激活、长程抑制"这句话的定量版本。第二,失稳之后长出来的不是任意花纹,而是波长约等于 2π/q* 的花纹:这个波长由化学参数决定,和区域大小、和初始扰动长什么样都无关。动物身上条纹的粗细为什么在同一物种里那么一致,答案就在这里。
LAB 03

斑点还是条纹

同一套方程,参数落在哪个区域决定动物长什么花

问题
同一套方程、同一只动物,为什么有的地方长成斑点、有的地方长成条纹?参数落在哪个区域决定了结果,而这张"相图"可以真的画出来。
模型
在 (F, k) 平面上扫描,按最终形态分区。分界由非线性项的对称性决定。
(F, k) 平面 → 斑点 / 条纹 / 迷宫 / 分裂 / 均匀 各自的参数区域
经验规律:反应项关于 u ↔ −u 对称时倾向条纹,不对称时倾向斑点。这也解释了为什么同一只豹,尾巴(细长的域)上是环纹而身上是斑点。
迭代步数—
斑块数 / 孔洞数—
花纹粗细 / 背景粗细—
自动判定的形态—
选一个预设,按播放,跑到八千步左右再看读数。这一页想说清一件常被含糊带过的事:"斑点"和"条纹"不是看起来像不像,而是可以量出来的。用的两个量是连通分量的个数和区域的"粗细"(面积÷周长)。斑点:76 个斑块、1 个连通背景,花纹粗细 1.34、背景粗细 5.69。迷宫:1 个连通花纹、75 个洞,粗细 3.10 对 1.82。孔洞:1 个连通花纹、82 个洞,但粗细 3.97 对 1.57——拓扑上和迷宫一样,几何上完全不同:迷宫是细带子围出的洞,孔洞是厚底色上挖的洞。这套判据不是为了好看。在真实的图像分析里(动物花纹分类、材料显微结构、医学影像里的纹理),用的就是这几个量:连通分量数、欧拉示性数、面积周长比。顺便注意"会分裂的斑点"那个预设:每个斑点长到一定大小会一分为二,像细胞有丝分裂一样铺满整个平面——而这只是同一个方程换了两个小数。
LAB 04

尺寸决定花纹

把一条「身体」从很短拉到很长,看花纹从长不出来到 1 条、2 条、越来越多

问题
图灵不稳定挑出了一个波长,而身体的长度是有限的——能塞进去几个波,是由长度除以波长决定的。这一台把"身体"从很短拉到很长,看花纹从长不出来到 1 条、2 条、越来越多。
模型
有限域上波数被边界条件量子化,只有落进不稳定带的模式才能长出来。
qn = nπ ⁄ L,  长出第 n 条纹需要 λ(qn) > 0
L 是域的长度,n 是模式序号。L 太小时连 q₁ 都落不进不稳定带——这就是"小动物没有花纹"的数学原因,小鼠身上没有斑马纹并不是基因缺了什么。
实际长出几条—
线性理论的预测 L·q*/2π—
花纹的振幅—
理论波长 2π/q*—
同一套化学,同一个参数,只改区域的长度,花纹的数量就跟着变。把长度拖到 0.8 以下再按播放:什么也长不出来,浓度始终是一条平线。原因是无流边界只允许波数 q = nπ/L,区域太短时,所有允许的波数都落在不稳定带之外。把长度拖到 1.5,长出 1 条;2.5 长出 2 条;6 长出 4 条;8 长出 5 条;12 长出 9 条。条数几乎正比于长度,比例就是 q*/2π。实测值总是略小于线性理论的预测(12 长度时 9 对 9.3),因为非线性饱和之后系统会挑一个最接近 q* 的允许波数,而不是 q* 本身。这就是"尺寸决定花纹"的机制,也是默里那个著名论断的依据:动物的身体是宽的二维区域,允许二维的波,容易出斑点;尾巴是细长的、近似一维的区域,只允许沿长度方向的波,所以只能是一圈一圈的条纹。由此可以推出一个可证伪的预言:存在有斑点身体加条纹尾巴的动物(豹、猎豹、薮猫),但不存在条纹身体加斑点尾巴的动物。据目前所知,这个预言是对的。

这一页想说的

反应扩散把"花纹从哪来"这个问题变成了两个可算的量:扩散系数之比决定会不会失稳,最不稳定波数决定花纹有多密。这一页的四个实验台分别对应四个层次:现象(Gray–Scott 的各种花样)、机制(线性稳定性分析)、分类(怎么把斑点和条纹量出来)、约束(区域尺寸如何限制花纹)。最值得带走的一句是:发育不需要蓝图,只需要规则加边界条件。

接着看

← 返回模块 ← 返回探索专题