计算机程序是一种模型
当你写完一个程序,它最后的确会返回给你一些数字。而且,在运行程序之前,你的确不知道这些数值到底怎么样。但这并不代表这一过程类似于真实实验。归根结底,程序是由人而不是现实世界所创造的。当你解一个微分方程(所有人都会认为这是“理论科学”)时,在你得到最终解之前,你同样不知道结果。没人会管这一过程叫做实验。
现在说到我最喜爱的模型了。如果你在弹簧末端放置一个质点并略作偏移,将会发生什么呢?是的,它会来回做简谐振动。这里是建立弹簧上质点的数值模型的一些细节,但是让我跳到结尾的重点。下图表示了弹簧上质点运动的两种解法——一个是通过解微分方程,另一个则是借助数值模型(只有一些数据点)。


是的,这看起像数据,但又不是数据。如果我让数值计算中的步长再小一些,可能你根本无法看出这两种理论解法的差异。下图的数值模型更好一些。我将其中一个图略作上移,使得它们不会完全重合在一起。


这两个模型都给出了相当漂亮的理想结果,因此完全一样。