🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 9.1.1 计算机建模 利用计算机解决现实中的问题,首先需要在计算机中将问题表示出来,这个过程称为建模(modeling),即建立描述现实问题的一个模型(model)。打个比方,用照相机拍摄自然 景物就是建模,即得到自然景物在照相机中的表示(数字图像)。不过照相机“建模”追求 的是模型必须反映自然景物的每一个细节,最好是一模一样。而用计算机为现实问题建模, 追求的是模型必须抽象出问题的关键特征,至于非关键的部分则可以忽略。如此得到的模型 比较简单,虽然不一定和现实很“像”,但足够支持解决问题。现实问题在计算机内的模型 通常都是数学模型,即利用数学公式或数学过程来描述现实问题。 下面我们写一个简单的程序,该程序的行为具有“混沌”现象的特征。所谓混沌现象, 是指在确定性系统中发生的看上去随机、不规则的运动,即用确定性理论描述的系统却表现 出不确定的行为。混沌现象的特征是不可预测性和对初始条件的极端敏感性。读者想必听说 过著名的“蝴蝶效应”:某处的一只蝴蝶扇动一下翅膀,这一扰动有可能导致很远的另一个 地方的天气出现非常大的变化。这个比喻想说的其实就是气象具有混沌行为。事实上,现实 生活和工程技术问题中,混沌现象是无处不在的。下面的程序虽然简单,却具有混沌现象不 可预测和对初始值敏感的两个特征。 【程序 9.1】chaos.py ``` def main(): x = input("Enter a number between 0 and 1: ") for i in range(10): x = 3.9 * x * (1 - x) print x main() ``` 运行这个程序,可得如下输出: ``` Enter a number between 0 and 1: 0.2 0.624 0.9150336 0.303213732397 0.823973143043 0.565661470088 0.958185428249 0.156257842027 0.514181182445 0.974215686851 0.0979659811419 ``` 再次运行这个程序,但换一个输入数据 0.21,可得如下输出: ``` Enter a number between 0 and 1: 0.21 0.64701 0.89071343361 0.379637749907 0.918500422135 0.291943847024 0.806179285114 0.609391556931 0.928330600362 0.259478297495 0.749382311434 ``` 从运行结果可以发现,尽管程序的代码是确定的,但输出的 10 个结果毫无规律,好像 完全是不可预测的。此外,比较两次运行的输出结果,可以发现初始输入数据的微小变化会 使输出结果很快变得显著不同。这两点正是混沌现象的特征。本程序之所以能够显现出混沌 特征,是因为程序中使用了计算公式 k*x*(1-x),反复利用这个公式求值就会导致混沌。 换句话说,程序 chaos 利用数学公式 k*x*(1-x)为混沌现象建立了模型。 一旦用计算机程序为现实问题建立了模型,我们就可以通过运行程序并分析结果来探索 现实问题的性质。这时,模型的好坏是至关重要的,错误的程序自然会给出错误的结果,但 正确的程序也可能因为不准确的模型而产生错误的结果。