类似气象, 海洋这样的复杂系统是一个对初始条件极为敏感的结构, 开始初始值微小不同会导致最终结果的很大差异, 美国气象学家爱德华. 罗伦兹称之为"蝴蝶效应", 并给出了我们这样富有诗意的表述: "一只蝴蝶在巴西轻拍翅膀,可以导致一个月后德克萨斯州的一场龙卷风" .
1798年由人口学家马尔萨斯(Thomas Malthus) 发表了《人口论》, 并且提出了非常著名的 Malthus 人口模型.
他认为人口是以几何级数(指数级数)增长的, 但是人类生存的最重要条件: 资源(食物, 燃料等)是算术级数增长, 随着人口的不断增长, 最后生活的资源会不能满足消费需求, 因此资源和战争等因素会限制人口的过度增长.
-------------------------------------------------------------------------------------------------------------------
从两种级数谈起, 那我们先来回顾下什么是"几何级数"和"算术级数":
几何级数(Geometric sequence), 又称等比数列. 也就是后一项和前一项之比都是一个常数. 比如下面这个数列:
下面就是一个等比数列,因为第二项与第一项的比和第三项与第二项的比相等,都等于 2 . 这样后一项与前一项的比称公比(符号
)
回到人口论中, 如果从前一项到下一项之间需要一代人的时间,并假定一代人的时间是30年,那么对于每一年人口增长率大概就是 2.34%.
对于几何级数, 如果
就是越往后增长的幅度及越大, 反之
就是越往后越小.
而在等差数列(arithmetic sequence)中, 任何相邻两项的差相等. 该差值称为公差. 在这个数列中,从第二项起,每项与其前一项之差都等于3,即公差(common difference)为 3.
我们可以将两种级数都绘制在同一幅图像中, 可以更好的进行对比:
-------------------------------------------------------------------------------------------------------------
Malthus人口模型
按 Malthus "人口论"中假定的人口按几何级数增长, 那设
是人类在第 n 年末时的数目, 若在单位时间内人口增长率为
, 那么下一个时间段末人口应该是:
可以得到人口增长呈几何级数的结论:
下面我们获取国内 1950 到 1959 年人口数据, 以此来计算出人口的增长率来.
获取这 10 年的数据:
拿到 50 和 59 年的人口数据:
按此 10 年的数据计算出人口增长率为 1.84%:
按此增长率对比从 1950 年到 2014 年预测人口与实际人口差异.
共 65 年:
按公式计算出所有数据:
获取真实数据:
将预测值和真实值绘制出来:
从上图可以看出计算出的数字和实际数字在 1990 年之前都还是相当接近的. 1990 年之后, 一来由于计划生育国家政策, 所以我国人口增长有所下降, 再者由于 Malthus 模型的指数函数性质, 所做预测值会快速上升. 比如计算到 2050 年, 我国将达到 35 亿人口, 到那时恐怕挤得地铁上也有挂票才好.
那显然 Malthus 模型在预测人口长期发展必定是不足够好的, 因为还欠缺了某些重要的因素(资源的限制), 所以还需要进一步修正这个模型, 这也是我们下一次将要看到的 Logistic 人口发展模型.
上面对于人口增长问题, 或者说更为一般的种群发展问题, 我们只是考虑了离散按每一年的情况, 但其实更合适的方式是用连续性模型进行分析. 所以将人口总数 p(t) 看为依赖时间 t 的函数, 这样就将 Malthus 人口模型列出微分方程:
可以将此解绘制出来:
---------------------------------------------------------------------------------------------------
Logistic 模型
研究人口(或者更一般的种群问题)模型的目的在于根据已知过去某个时刻的人口数量, 来预测未来某个时刻的人口. 而上一次提到的 Malthus 人口模型, 因为模型之中并没有引入生存资源限制的变量, 所以在荷兰的 Verhulst 在 1845 年提出了Logisitc 模型(逻辑函数).
Verhulst 修改模型为:
N(t) 表示 t 时刻人口数;
K 表示整个社会环境所能承载最大的人口数;
表示约束项, 也就是因为生存资源限制了人口数量的增长 - 在最初阶段
近似为1, 故人口增长速度可以较快上升, 但也因人口的增多, 约束项会变小, 从而抑制人口无限制的增长下去.
我们来观察下面的模型:
如果人口增长率增高的话, 约束项会迅速减小, 从而抑制人口无限制的增长下去;
初始人口数目如果大于整个社会环境所能承载最大的人口数 K 时候, 增长速度为负, 故人口会迅速减少到极限值处;
我们动手用 Wolfram 语言将其解函数求出来:
或者通过 Wolfram|Alpha 进行公式查询, 将参数带入进行计算:
离散型的模型也可以递归表函数来求解出来:
对于 r 的1000个值,求出从映射
的
和
的迭代:
----------------------------------------------------------------------------------------------------------------------------------
混沌模型
类似气象, 海洋这样的复杂结构是一个对初始条件极为敏感的系统, 最初的微小变化会导致最终结果的很大差异, 即"蝴蝶效应". 美国气象学家爱德华.罗伦兹给出了这样富有诗意的表述: "一只蝴蝶在巴西轻拍翅膀,可以导致一个月后德克萨斯州的一场龙卷风" .
在数学中的意义在于告诉我们, 将非常近似的初始值带入方程, 只是因为这种非常微小偏差, 但将会引起过程和结果的极大差异.
让我们从 Logistic 人口模型(种群数量) 模型来动手验证上面的说法, 它简化的形式如下:
,
为种群数 - 在
内变化
考虑每个种群数目下限为 0(灭亡), 也应该会有一个上限的(该种群受到环境资源限制的最大数目), 于是将这个范围映射到 [0,1] 之内.
如此调整后的映射称为Logistic 映射 (logistic map), 相应的迭代公式为:
请注意在
由小变大的不同阶段, 整个迭代的过程会出现非常有趣的现象.
当
时候, 由于
趋于
, 所以该物种会逐渐灭亡
当
时候, 任何
中的初始值
最终都会趋于常数值
当
时候, 无论初值如何,
都会绕着 2 个数来回持续振荡, 也就是最后会是 a,b,a,b,... 的变化:
,
绕着 4 个数来回持续的振荡:
若
再增大一点
,
会在
个值之间持续震荡, 当大于
后整个系统就进入到了混沌状态 - 也就是在最终迭代计算后的值可能在 (0,1) 中的任何位置. (对于有些个别特定
值还有周期性的结果)
我们分别看下情形下的图像:
当
时候, 由于
趋于
, 所以该物种会逐渐灭亡
当
时候, 任何
中的初始值
最终都会趋于常数值
当
时候, 无论初值如何,
都会绕着 2 个数来回持续振荡, 也就是最后会是 a,b,a,b,... 的变化:
,
绕着 4 个数来回持续的振荡:
若
再增大一点
,
会在 8, 16, 32,... 个值之间持续震荡, 当大于
后整个系统就进入到了混沌状态 - 也就是在最终迭代计算后的值可能在 (0,1) 中的任何位置. (对于有些个别特定
值还有周期性的结果); 观察初始值为 3.9 和 3.90001的图形 - 在开始时,两条轨迹似乎是重合的, 但当差异变得越来大, 最终引起过程的极大不同:
下面绘制动态的图形:
我们已经看到当 α >3.5699 时候, 整个系统已经进入到了混沌的状态. 现在将 x 从 0.75 到 1, α 从 0.8 到 4 之间变化都绘制出来, 如下图所示:
我们也可以换一种方式来对Logistic 映射 x(n+1)= α x(n) 做可视化. 以 x(n)为 x 轴坐标, x(n+1)作为 y 轴. 任取 (0,1) 中的 x0 作为初始值, 将迭代过程中数值序列通过下面方式连接起来形成的直线. 这种图形有些蜘蛛网类似, 所以称之为"蛛网迭代".
在 1< α <3 之内, 从 (0,1) 出发的 x0 的轨道都会趋向一个不动点:
当然可以制作成动态模型来看, 整个 α 从 2.8 到 4 变化, 这种蛛网在超过3.57的大部分 α 值可看出其混沌的特性.
我想这篇文章就到此打住, 因为笔者知识有限, 所以也只是关于这个话题用 Wolfram语言做了非常肤浅的介绍, 希望各位朋友对这个话题有了一点思想基础和初步认识, 如果想要理解混沌的内容, 还需要更多相关的探索.