physics-mechanism-decomposer
当面对一个开放现象、说不清"为什么会这样"时使用——IYPT 题目、实验里看到的奇怪行为、科研中待解释的观测。把现象拆成候选机制清单,用守恒量收支表检查有没有漏,为每个机制写出带指数的标度律,用同量纲的量级比较排出主导、次导与可忽略,再为每个机制配一个能真正分辨它的观测量(判据是指数或符号不同,不是系数不同)。产出的是可检验命题与实验建议,不是结论。
SKILL.mdskills/physics/physics-mechanism-decomposer/SKILL.md
GitHub物理机制分解器 / Physics Mechanism Decomposer
开放问题绕不开的那一步:把"为什么会这样"变成一组可以逐条检验的命题。
产出不是"因为表面张力"。产出是:候选机制有哪几条、每条的标度律是什么、 量级比下来谁主导、以及做哪个实验能把它们分开。
何时使用 / When to use
- IYPT 型题目:现象给了,机制要自己找
- 实验里看到没预期的行为,想知道可能是什么在起作用
- 已经有一个解释,但拿不准它是不是主导的那条
- 要设计实验,需要知道测哪个量最能区分假设
- 论文或答辩里要说清"为什么是这个机制而不是那个"
不适用于 / Not for:
- 封闭计算题,条件已经给全 —— 用
problem-formalization-coach - 材料还没整理成现象陈述 —— 用
competition-scenario-extractor - 已经排好机制,要配数值锚点做量级估算 ——
fermi-estimation-coach - 已有数据要做拟合体检 ——
model-fit-auditor;怀疑数据本身有漂移、温度依赖等系统误差 ——dataset-systematic-error-hunter
需要的输入 / Inputs
| 输入 | 必填 | 说明 |
|---|---|---|
| 现象描述 | 是 | 在什么条件下能看到、看到了什么、什么时候看不到 |
| 可控参数 | 是 | 实验里能改哪些量、改的范围多大 |
| 已有观测或数据 | 否 | 哪怕是定性的"加大三倍后变强"也很有用 |
| 已有的解释 | 否 | 有的话作为候选之一进清单,不给它特殊地位 |
流程 / Process
1. 把现象写成可证伪的陈述
三栏分开,不要混:
| 栏 | 内容 | 注意 |
|---|---|---|
| 可观测事实 | 直接看到或测到的 | 带条件:在什么参数范围内成立 |
| 待解释的部分 | 事实里哪一条是"奇怪"的 | 写清"奇怪"相对于什么预期 |
| 边界 | 什么时候现象消失 | 现象消失的边界往往比现象本身更有信息量——它直接指向控制它的那个参数 |
"水滴会在热板上悬浮"不是可证伪陈述。 "板温高于约 200 °C 时,水滴寿命从数秒跳到数十秒"才是。
2. 枚举候选机制:两条互补的路子都要走
只用一条会漏。
路子甲:守恒量收支表。 对每个相关的守恒量写一条收支方程:
d(储量)/dt = Σ流入 − Σ流出 + Σ源汇
守恒量清单:质量 / 物质的量、动量、角动量、能量、电荷。 (熵不守恒,但可以写成有产生项的收支式,用来定位耗散在哪。)
每一项必须归到一个具体机制。对不上的那一项就是漏掉的机制。 能量收支写不平,就说明有一条能量通道还没被列出来。
路子乙:物理域清单。 逐个域过一遍,问"这里有没有它":
惯性 · 重力 · 弹性 · 塑性与断裂 · 黏性 · 表面张力与润湿 · 压强与浮力 · 摩擦与接触 · 热传导 · 对流 · 辐射 · 相变潜热 · 扩散与混合 · 静电 · 磁与电磁感应 · 涡流与磁滞 · 化学反应 · 光的散射吸收干涉 · 热涨落 · 几何与边界效应 · 流体不稳定性(瑞利–泰勒、开尔文–亥姆霍兹、 瑞利–普拉托、瑞利–贝纳尔、马兰戈尼)
注意区分机制与条件。 几何形状、初条件、边界条件不是机制, 但它们决定哪个机制主导。把它们单列一栏,不要混进机制清单。
3. 为每条机制写标度律
标度律必须写成带指数的形式:X ∝ Y^a Z^b。
"随 Y 增大"不是标度律,它没有可检验内容。
每条标度律标注来源,四档证据力不同:
| 档 | 来源 | 强度 |
|---|---|---|
| 【推导】 | 从控制方程里的某一项直接得到 | 最强 |
| 【量纲】 | 量纲分析给出结构,无量纲系数未定 | 结构可信,系数不可信 |
| 【文献】 | 已有经验关联式 | 必须连同适用范围一起引。例如层流平板边界层的 Nu_L = 0.664 Re_L^{1/2} Pr^{1/3} 只在 Re_L < 5×10⁵、0.6 ≲ Pr ≲ 50 成立,超出范围照抄是错的 |
| 【猜测】 | 还没有依据 | 只能作为待验证项,不能参与排序 |
4. 排序:只比同量纲的量
三步走,每步都要留下数:
- 统一量纲。 要比"哪个机制更重要",先把它们化成同一个物理量—— 都化成力、都化成功率、或都化成能量。拿力去比能量没有意义。
- 代入本题的量级。 每个数标注是【题面】、【标准值】还是【估算】。
- 写出比值。 结论写成
阻力功/重力功 ~ 10⁻³,不写"比较小"。
常用的比值直接查 _shared/dimensionless-groups.md。
门槛的三个陷阱(详见该文档第 5 节):
- 目标量是和 → 10 % 的项通常可忽略
- 目标量是两个大项之差 → 10 % 的项可能决定符号,绝不能忽略
- 目标量在指数上 → 指数里 10 % 的偏差放大成倍数
比值落在门槛一个量级以内时必须实算,不能引门槛下结论。
有执行能力时,把所有机制表达式写成 dimcheck.py 的输入,
用 [compare] 小节确认它们确实同量纲:
python3 ../_shared/scripts/dimcheck.py mechanisms.dim
表达式里的分数指数要加括号(d^(1/2)、Re_L^(1/2))。d^1/2、m*v^2/2 这类写法有歧义,脚本以退出状态 2 拒收:
这是 .dim 的写法问题,改好重跑,不算量纲结论。
5. 为每条机制配一个可分辨的观测量
这一步决定了整份分析有没有用。 排序只是猜想,分辨才是证据。
两条机制对某观测量的预言,必须在结构上不同才算可分辨:
| 算可分辨 | 例子 |
|---|---|
| 指数不同 | 小球终端速度:斯托克斯阻力给 v_t ∝ d²,二次阻力给 v_t ∝ d^{1/2}。双对数图上斜率 2 与 0.5,一眼分开 |
| 符号不同 | 一个机制预言随温度升高而增强,另一个预言减弱 |
| 定性行为不同 | 一个有阈值一个没有;一个单调一个有极大值 |
| 依赖的变量不同 | 一个依赖 σ 另一个不依赖 → 只改 σ 就能分开 |
| 不算可分辨 | 原因 |
|---|---|
| 只有前因子(系数)不同 | 前因子常有几倍的不确定度,可以被"调"掉 |
| 同指数、只差量级 | 同上 |
| 只在一个数据点上不同 | 一个点分不开两条曲线 |
实验设计的关键约束:判据里的那个参数必须能被独立改变。
换一种液体会同时改变 ρ、μ、σ 三个量,这是最常见的失败设计。几个能相对独立调节的手法:
- 只改黏度:甘油–水混合可以让
μ变几个量级,而σ的相对变化小得多 - 只改表面张力:低浓度表面活性剂能明显降低水的
σ,μ几乎不动 - 只改气体密度:改变环境气压
前两条的具体物性数值随温度、浓度变化,由使用者查,连同温度与出处一起写(见 ../_shared/physics-evidence-contract.md 第 3 节)。
改不动的时候要如实说改不动,并给出退而求其次的方案(例如同时测两个观测量做联合约束)。
6. 完备性自检
四项,缺一项就还没做完:
- 收支闭合:每个守恒量的收支表,每一项都归到了某条机制。
- 没有重复计数:同一段耗散没有在两条机制里各算一次。
- 不是只列了会算的:清单里应当有至少一条你还不会定量处理的机制, 如实标为【猜测】。一份全是自己会算的机制的清单,通常是漏了的那份。
- 与已有观测不矛盾:主导机制给的标度律,与手上的定性观察("加大三倍后变强") 指数对得上。对不上就是排序错了,不是观察错了。
输出格式 / Output
## 现象陈述
| 可观测事实 | 待解释的部分 | 现象消失的边界 |
## 收支表
| 守恒量 | 储量 | 流入 | 流出 | 源汇 | 每项归到哪条机制 | 是否闭合 |
## 候选机制
| ID | 机制 | 物理域 | 它如何产生这个现象(一句话) |
## 条件(不是机制,但决定谁主导)
- 几何 / 初条件 / 边界条件
## 标度律
| ID | 标度律 | 来源档(推导/量纲/文献/猜测) | 适用范围 |
## 量级排序
| ID | 比值 | 数值 | 各量的来源 | 结论(主导/次导/可忽略/待定) |
- 量纲检查:脚本已跑 / 人工检查 / 未执行
## 可分辨观测量
| 要分辨的两条 | 观测量 | 结构差别(指数/符号/定性/变量) | 需要独立改变什么 | 能不能改得动 |
## 完备性自检
- 收支闭合 / 无重复计数 / 含未定量机制 / 与已有观测一致
## 交接
- 已确认 / 暂定 / 未解决
- 下一步:<实验设计,或量级估算(fermi-estimation-coach)>
六个高频翻车 / Common failures
- 把现象名当机制。 "因为共振"不是机制——是哪个自由度与什么驱动共振,固有频率多少。 "因为湍流""因为表面张力"同理。
- 同一条机制被数了两次。 同一段耗散在"黏性"和"摩擦"里各出现一次,排序就废了。
- 只列了自己会算的机制。 这是最常见也最难自觉的一条,所以自检里专门有一项。
- 写了"主要是因为 X"却没有量级比较。 没有比值的主导判断只是偏好。
- 把相关当因果。 改变
A时B也变了,可能是第三个量在动。 要下因果结论,必须能独立改变A。 - 机制清单里混进了条件。 几何、初条件、边界条件单列一栏。
边界 / Boundaries
- 不下结论:给的是排了序的候选与可检验命题,"就是因为 X"由证据决定,不由本 skill 决定。
- 不虚构数据与文献:引用经验关联式必须给来源与适用范围;查不到就标【缺失】。
- 不编造"典型值":材料参数必须连同温度、压强等状态条件一起给。
- 不把【量纲】档的结果说成推导:量纲分析给结构不给系数。
- 不省略可分辨观测量那一步:只排序不给分辨方案,等于给了一份没法证伪的清单。
- 不代替参赛者做智力产出:IYPT 与科研场景下机制清单是本人的工作,本 skill 只提供结构与检查项。
Token 控制 / Token discipline
- 物理域清单在心里过一遍,输出只写命中的那几条
dimensionless-groups.md按需查行,不整表复制进输出- 收支表只写与待解释部分相关的守恒量
- 交接只带排序结论与可分辨观测量表
参考资料 / References
../_shared/dimensionless-groups.md— 无量纲数定义、π 定理、排序纪律(第 3、4 步核心)../_shared/idealization-catalog.md— 被题面关掉的机制要在这里拿回来重排../_shared/physics-evidence-contract.md— 状态标签、有效数字、诚信边界../_shared/scripts/dimcheck.py— 第 4 步的同量纲检查
变更记录 / Changelog
| 版本 | 日期 | 变更 | 类型 |
|---|---|---|---|
| 0.1.1 | 2026-09-26 | fermi-estimation-coach 与组四 skill 已建成,删掉三处"计划中"并写出实名(model-fit-auditor、dataset-systematic-error-hunter);独立调节手法里去掉不带温度与出处的表面张力数值,改为定性说法并要求查值时写明条件;第 4 步注明分数指数要加括号(修好的 dimcheck.py 对 d^1/2 这类写法以退出状态 2 拒收) |
patch |
| 0.1.0 | 2026-08-30 | 初始草稿:收支表与物理域双路枚举、标度律四档来源、同量纲排序、可分辨观测量判据与独立可调性、四项完备性自检 | minor |