理论物理学家和实验物理学家


笑话

翻译:理论是当你知道一切但什么都不管用。实践是什么都管用但没人知道为什么,在我们实验室,理论和实验被结合起来: 什么都不管用而且没人知道为什么。

作为一个学过一点理论和实验的人, 我来解释一下这个笑话。

对于 Theorist (做理论的人),“nothing works” 大部分情况并不是因为基础理论不正确(如果你发现了那少部分情况, 你很可能会得诺奖),而是因为我们计算能力有限, 需要做很多近似, 近似的近似, 以及近似的近似的近似…… 对于解析计算 (就是所谓的用公式和符号计算), 我们通常只有在极端理想的条件下才能得到结果。 例如, 自由落体问题的解析计算的结果是 x=gt^2/2, 然而条件是: 不考虑空气阻力, 不考虑引力场随高度的变化, 不考虑地球自转, 没有任何初速度, 不考虑物体的大小及形状, 物体必须具有较大的质量(以忽略任何量子效应), 物体下落的过程速度不能太快(以忽略狭义相对论效应), 引力场不能太强(以忽略广义相对论效应), 等等。

我以前一直以为, 计算能力有限的问题, 放在计算机时代来说完全不成问题, 因为计算机每秒钟可以进行上亿次运算。 计算机计算分为解析计算和数值计算, 前者以 Mathematica 等软件为代表, 例如可以计算一些复杂的不定积分, 解出微分方程的解析解等, 然而这只比手动计算前进了一小步, 更复杂的问题计算机也找不到解析解, 例如三体问题 (没错, 同名小说就是根据这个命名的, 而这只是一个看似非常简单的问题)。

事实上, 比起解析解, 计算机更擅长数值解。 举一个数值计算的例子: 在自由落体的基础上, 若假设物体受到的阻力与其速度的平方成正比, 求下落距离关于时间的变化。 这个问题的简单数值计算方法就是, 若已知某时刻 t1 物体的下落速度, 可以算出该时刻的阻力, 进而计算出合力及加速度, 然后假设在接下来的一段微小时间, 物体做匀加速运动, 这就可以计算出 t2 时物体的速度以及微小位移, 然后再根据新的速度计算出 t2 时刻新的阻力, 新的合力及新的加速度, 再次假设匀加速运动, 就可以计算出下一段微小时间后的速度和微小位移…… 以此类推。 把这些微小位移和微小时间加起来, 可以得到一个总位移关于总时间的列表, 就可以画出位移关于时间的图了。 注意这里的”微小时间”取得越小, 计算结果就越精确。 当然, 这只是一个非常幼稚的算法, 成熟的算法可以用更小的计算量得到更精确的结果, 但不会有特别特别大的改进(视具体问题而定)。

由于数值计算必须要用离散的数据 (例如上面的 t1, x1, t2, x2…) 来逼近连续的量(函数 x(t)), 当我们计算的不是一个质点, 而是一个连续体时(例如琴弦的振动, 即琴弦形状随时间的变化), 我们就需要把这个连续体分成许许多多离散的点(例如把琴弦看成许许多多质点连接而成), 然后在某个时刻分析每个点和与其相邻点的作用力等, 再按照以上类似的方法来计算 (再次声明, 这是一种非常幼稚的算法, 如果你真的想算这个问题, 建议找一本计算物理学习更聪明的方法, 或者问我)。

当我们开始研究原子分子尺度的运动时, 我们日常中关于物体运动的经验(牛顿运动定律)就不适用了(牛顿力学理论可以看做量子力学在能量很大或质量很大时的近似), 我们甚至不能同时确定电子的速度和位置(海森堡不确定性原理), 我们只能通过”概率波”来描述某个粒子。 你可以想象你在琴弦的一端抖了一下, 琴弦上出现一个波包快速向另一端移动, 这个波包就可以想象成粒子的”概率波”, 波包最凸起的地方就是粒子最有可能被探测到的地方。 如果这个波包非常紧凑, 那么我们仍然可以确定粒子的大概范围, 但如果我在弦上到处乱拍几下, 整条弦都会乱抖, 我们就完全不能确定粒子在什么地方了(如果有人对这样的量子力学科普感兴趣, 我可以写更多)。

粒子的波动性给数值计算增加了极大的计算量, 例如我们要用量子力学分析最简单的原子: 氢原子(一个质子和一个电子组成), 首先由于质子比电子重得多, 我们可以假设质子不动, 计算电子的波函数关于时间的变化。 要知道这是一个三维空间的波, 如果还是用我们的幼稚算法, 我们需要建立一个三维的网格, 然后对每个格点和相邻的格点进行分析然后得到其位置随时间的变化。 注意维度的增加对数值计算是一个巨大的灾难, 如果在琴弦的计算中(一维问题), 我们需要建立 1000 个格点才能保证足够的精度, 那么在氢原子的计算(三维问题)中, 如果需要同样的精度, 我们将需要 1000^3 = 1000,000,000 个格点, 而这只是最简单的原子, 加上质子不动的假设 (且忽略电子自旋, 忽略核自旋, 忽略周围原子对该原子的热运动撞击, 忽略光波等电磁辐射等等等等)。

好, 现在来看氦原子(两个电子, 仍然假设原子核不动), 如果你认为我们需要建立的格点数是 2000,000,000 你就太 naive 了。 根据量子力学, 这时每个粒子有三个自由度, 整个系统有六个自由度(6维), 我们需要 1000^6 = 1000,000,000,000,000,000 个格点才能达到同样的精度!

如果我要计算铀原子(原子弹的炸药)或者DNA分子呢…… 有没有感觉出了一身鸡皮呵呵。

当然我们有许许多多的近似方法可以用, 在考虑各种特殊情况时, 我们可以忽略各种不那么重要的相互作用, 然后做一阶近似, 二阶近似…… 所以, 如果你只学了量子力学的基础理论而不学各种近似方法, 那你将对真实世界几乎一无所知 (again, doesn’t mean the theory is wrong)。

至于 Experimentalist (做实验的人) 的 “Everything works” 也是有夸张的成分的。 如果有人有兴趣的话我会另写……