|
``几乎在所有教科书,甚至最好的教科书中,这个原理都被呈现得令人无法理解。''(K. 雅可比,《动力学讲义》,1842-1843)。我并未选择打破这一传统。
V. I. 阿诺尔德,《经典力学的数学方法》[5],脚注,第 246 页
|

拉格朗日量 L 必须被解释为位置和速度分量 qi 和
i 的函数,以便偏导数有意义,但随后为了使时间导数 d/dt 有意义,必须将解路径代入拉格朗日量的偏导数中,使之成为时间的函数。传统上使用模糊符号的做法在简单情形下很方便,但在更复杂的情形下可能严重妨碍清晰的推理。为了推理的清晰和明确,我们采用了更精确的数学符号。我们的符号是函数式的,遵循现代数学表述的方式。附录介绍了我们的函数符号。计算也进入了力学数学思想的表述中。我们要求我们的数学符号足够明确和精确,以至于可以被自动解释,就像计算机所做的那样。这一要求的后果是,文中的公式和方程能够独立存在。它们具有清晰的含义,不依赖于非正式的上下文。例如,我们用函数符号将拉格朗日方程写作如下形式:

2 L 表示通过对拉格朗日量函数 L 取关于速度参数位置的偏导数而得到的函数。传统的偏导数记法使用对“变量”的导数,依赖于上下文,可能导致歧义。拉格朗日量的偏导数随后沿着路径函数 q 被显式计算。取时间导数后形成拉格朗日方程。每一步都是显式的;没有隐式代入。
计算算法被用于精确传达分析动力学现象所使用的一些方法。用计算机语言表达变分力学的方法,迫使这些方法变得明确且计算上有效。计算要求我们精确地表示力学和几何概念作为计算对象,并允许我们显式地表示操作这些对象的算法。此外,一旦被形式化为一个过程,一个数学思想就成为一个可以直接用于计算结果的工具。
学生的主动探索是学习体验中不可或缺的一部分。我们的重点是理解系统的运动;要学习运动,学生必须通过模拟和实验主动探索系统的运动。练习和项目是本书表述的有机组成部分。
数学精确到可以被自动解释,这使得主动探索可以扩展到数学本身。要求计算机能够解释任何表达式,为表达式是否正确提供了严格而即时的反馈。经验表明,以这种方式与计算机交互,能够发现并纠正理解中的许多不足。
在本书中,我们使用 Scheme 表达计算方法,Scheme 是 Lisp 编程语言家族的一种方言,我们在麻省理工学院的计算机科学入门课程中也使用它。有许多优秀的 Scheme 教材。我们在附录中提供了 Scheme 的简短介绍。
即使在计算机科学入门课程中,我们也从不正式教授该语言,因为我们不需要这样做。我们直接使用它,学生们在几天之内就能掌握。这是 Lisp 类语言的一大优势:它们构成复合表达式的方式很少,而且几乎没有任何句法结构。所有形式化性质可以在一个小时内讲完,就像国际象棋的规则一样。过不了多久,我们就会忘记该语言的句法细节(因为根本没有),然后专注于真正的问题——弄清楚我们要计算什么。
Scheme 相对于其他语言在经典力学阐述中的优势在于,Scheme 中操作实现数学函数的过程比其他计算机语言更简单、更自然。事实上,力学的许多定理可以直接表示为 Scheme 程序。
我们在本书中使用的 Scheme 版本是 MIT Scheme,并附加了一个名为 Scmutils 的大型软件库,它将 Scheme 运算符扩展为适用于各种数学对象(包括符号表达式)的泛型运算符。Scmutils 库还为我们本书中使用的数值方法提供支持,例如求积法、微分方程组的积分和多变量最小化。
经 Scmutils 库增强的 Scheme 系统是自由软件。我们在互联网上 http://www-mitpress.mit.edu/sicm 提供该系统,包括文档和源代码,其形式可用于 GNU/Linux 操作系统。
本书从一个不同寻常的角度呈现经典力学。它关注理解运动而非推导运动方程。它将非线性动力学的最新发现贯穿全书,而非将其作为事后补充。它使用函数式数学符号,从而能够精确理解经典力学的基本性质。它利用计算来约束符号、捕获和形式化方法,以及进行模拟和符号分析。
本书是过去六年在麻省理工学院教授经典力学的成果。我们课程的内容始于威斯登关于非线性动力学和太阳系动力学的思想,以及阿贝尔森和萨斯曼在计算机科学入门课程中发展的关于如何使用计算来形式化方法论的思想。当我们开始时,我们以为用这种方法来形式化力学会很容易。我们很快发现,许多我们自以为理解的东西实际上并未理解。我们要求数学符号足够明确和精确,以至于可以被自动解释(就像计算机所做的那样),这一要求在揭示推理中的双关和缺陷方面非常有效。由此产生的为让数学精确、清晰且计算上有效而进行的斗争,持续时间远超我们预期。通过这一过程,我们对力学和计算都学到了很多。我们希望其他人,尤其是我们的竞争者,将采纳这些方法,这些方法能在加深理解的同时减缓研究速度。
[链式法则] 仅仅用经典符号陈述就需要引入无关的字母。对 D1(fo(g,h)) 的通常求值过程如下:如果 f(u,v) 是一个函数,且 u = g(x,y),v = h(x,y),则3 此处不作解释地呈现,以给出符号的风格印象。正文中会给出完整解释。 4 ``必须使用偏导数的工具,而其中的符号甚至也是模糊的。'' V.I. 阿诺尔德,《经典力学的数学方法》[5],第 47 节,第 258 页。另见该页上的脚注。[符号
u/
x 表示
/
x g(x,y),而
/
u f(u,v) 表示 D1 f(u,v) = D1 f(g(x,y),h(x,y))。] 这个方程通常简单地写作
注意 f 在方程两边含义不同!