un

guest
1 / ?
back to lessons

第一个大型计算

理查德·汉明的第一个大规模模拟:1945年洛斯阿拉莫斯。目标——设计可行的原子弹。

使模拟成为必要的问题:不存在小规模实验。临界质量是二元的。要么裂变材料超过临界质量,链反应传播,要么不这样。您无法运行缩小版本的实验。

球形implode设计

有一种设计使用了球对称——implode。工程师将物质分为许多连续的壳层。对于每个壳层,他们编写了两面力作用的方程以及压力与密度之间的状态方程。

时间被离散为每10⁻⁸秒的间隔——称为'摇晃'(来自'羊毛尾巴的摇晃')。在每次摇晃时,计算推进:每个壳层移动到哪里?对其施加哪些力?

模拟循环:连续壳层与时间步长

三个迫使模拟出现的条件

汉明确定义了模拟取代物理实验的情况:

1. 不可能的实验——临界质量无法在亚规模进行测试

2. 危险的实验——您无法引爆炸弹以获取校准数据

3. 太昂贵或太慢——大气阻塞、天气预报、导弹轨迹

目标:产生等效结果,而不是精确复制物理过程。模拟不需要与现实一一对应。它必须在设计所需的准确性范围内产生相同的可观察结果。

等效结果

洛斯阿拉莫斯汉明的关键见解:状态方程的数据是不准确的。压力-密度关系来自高压实验室、地震估计、恒星核心模型——所有这些都有显著不确定性。

工程师将这些曲线读为三位数,然后将它们表列为五位数。似乎是垃圾输入。

然而,炸弹设计成功。

为什么?因为计算取了相邻壳层值的二阶差分。任何局部误差在壳层沿曲线运动过程中通过平均值得到消除。关键的是:方程状态的曲率,只关心平均值。

计算中的反馈补偿了不准确的输入。

汉明的原则:'模拟的目标不是精确复制现有过程,而是产生等效结果。'在您自己的领域中,描述一个模拟,其中输入或模型已知为近似值——但模拟仍然产生有用的可靠输出。是什么计算特性使这一点成为可能?

重复的核心

汉明确定了大型模拟的通用结构特征:高度重复的内循环

在洛斯阿拉莫斯:相同的力方程在 每个壳层每个时间步 运行。一个壳层的代码运行了数千次。没有这种重复结构,编程成本将不可接受。

这个原则推广:天气预报将大气划分为块;相同的物理方程更新每个块。导弹模拟在每个时间增量处沿着相同的轨迹方程运行。晶体管设计计算相同的场方程在每个空间网格点。

汉明的建议:尽早找出任何提议模拟的重复部分。将模拟表示为利用重复性的形式。没有紧密内循环的模拟可能是结构不合理的。

专家知识作为硬性先决条件

汉明反复强调一个他认为非谈不可的规则:只有领域专家才能知道什么重要

模拟专家可以对代码进行结构化、选择数值方法、调试重复循环。但只有对物理、化学或工程领域有深入了解的人才能确定:

- 模型中必须出现哪些效果

- 可以安全忽略哪些效果

- 是否一个不寻常的结果表示物理真理还是模型错误

在洛斯阿拉莫斯,汉明是计算专家。物理学家是领域专家。他们无法相互替代。

术语作为障碍与工具

汉明最强烈的操作规则之一:了解你模拟的领域的术语

他的故事:一项海军截获问题,涉及28个同时的微分方程。他坚持让提议者——一个物理学家朋友——与他一起逐行审查二进制机器代码,直到计算运行。

在审查过程中,物理学家说:‘迪克,那是极限限制,而不是电压限制。’相同的数学符号,相同的正式方程——但两种不同的物理解释,产生了完全不同的结果。

教训:双方都理解了数学。他们之间没有通常意义上的沟通失败。但是极限操作的物理含义是方程本身无法确定的。

没有审查,模拟将以错误的解释运行。没有运行时错误。没有明显的坏输出。只是对一个重要问题的错误答案。

汉明坚持认为对所模拟事物有深入了解的人必须参与详细的编程。他拒绝运行海军模拟,直到物理学家审查了机器代码的每一行。从你的实际经验或熟悉的领域给出一个具体例子,说明一个模拟或模型编码了一个技术上正确但物理上或操作上错误的假设。这个假设是什么?一个专家如何发现它?

稳定的问题与不稳定的问题

汉明将模拟能够很好处理的问题与模拟几乎不可能处理的问题进行了明确区分。

原子弹:在途中小差异不会对最终爆炸产生很大影响。模拟是稳定的——中间错误不会放大。

天气预报:相反。一个小的扰动——‘日本蝴蝶翅膀是否拍动’——在理论上可以决定是否会有台风袭击大陆。对初始条件敏感性使得日常天气模拟在长期预测上不靠谱。

两类问题使用相同的数学结构:将空间划分为单元格,将时间划分为步骤,向前推进。区别在于‘方向场’——是否小偏差从轨迹上增长(不稳定)或收缩(稳定)随着时间的推移。

天气问题既有短期不稳定性(日常混乱),也有长期稳定性(四季按顺序轮换),也有非常长期的不稳定性(冰期)。

汉明的规则:在开始任何模拟之前,检查问题是否本质上是稳定的还是不稳定的。如果不稳定,确定不稳定性是否是你需要的答案的本质部分,还是一个尺度或边界条件的副产品。不要在投入了几个月的工作后才发现这一点。

简单先,完善后

汉明解决新模拟问题的首选方法:

1. 从简单开始 — 只包括主要效果。把主要行为搞清楚。

2. 早期获取见解 — 简单的模拟揭示了问题的结构,避免在细节上投入大量精力。

3. 逐步完善 — 逐步添加次要效果,每次添加都要将其与更简单的基线进行验证。

他用尼克弹道导弹项目作为例子。他的早期模拟使用了简单的指数大气模型。后来的模拟添加了高度依赖的密度曲线、横风项和非线性阻力。但是,简单模型提供的早期见解 — 垂直发射可以在密集的下层大气中减少阻力;更大的机翼比它们在后期操控性中多消耗更多速度 — 来自于简单模型。

警告: 最后,使用完整的模拟来冻结设计。简单模拟获得见解;完整模拟获得承诺。

汉明发现在1940年代的继电器设备上慢慢观察几条轨迹,而不是在高速计算机上运行数千条轨迹,会给他带来同样多的启示。他写道:‘我经常怀疑更多的解决方案是否能教会我同样多的东西。’这条原则说明了计算量与理解之间的关系。你同意吗?为什么?