具有复杂行为的简单模型,即混沌
技术

具有复杂行为的简单模型,即混沌

计算机越来越多地被科学家用来揭开大自然精心隐藏的秘密。 建模,连同实验和理论,正在成为研究世界的第三种方式。

三年前,在西里西亚大学,我们启动了一个将计算机方法整合到教育中的项目。 结果,创建了许多令人兴奋的教学材料,使学习许多主题变得更加容易和深入。 Python 被选为主要工具,再加上可用的科学库的强大功能,它可能是使用方程式、图像或数据进行“计算机实验”的最佳解决方案。 完整工作台最有趣的实现之一是 Sage [2]。 它是计算机代数系统与 Python 语言的开放式集成,还允许您立即开始使用网络浏览器和通过云服务 [3] 或单一计算服务器进行交互的可能访问选项之一开始游戏。本文的版本基于 [4] 。

生态混乱

在牛津大学的第一年,澳大利亚科学家罗伯特·梅研究了人口动态的理论方面。 他在一篇论文中总结了他的工作,该论文发表在《自然》杂志上,标题为“具有非常复杂动力学的简单数学模型”[1]。 多年来,本文已成为理论生态学中被引用次数最多的著作之一。 是什么让人们对这项工作产生了如此浓厚的兴趣?

种群动力学的经典问题是在给定当前状态的情况下计算特定物种的未来种群。 在数学上,生态系统被认为是最简单的,其中一代人口的生命持续一个季节。 一个很好的例子是在一个季节经历完全变态的昆虫种群,例如蝴蝶。 时间自然地被划分为与人口的生命周期相对应的离散时期2。 因此,描述这样一个生态系统的方程自然有所谓的离散时间,即t = 1,2,3…。 罗伯特·梅(Robert May)处理了这种动态等问题。 在他的推理中,他将生态系统简化为一个物种,其种群是前一年种群的二次函数。 这个模型是从哪里来的?

描述种群进化的最简单的离散方程是线性模型:

其中 Ni 是第 i 个季节的丰度,Ni + 1 描述了下一个季节的种群。 很容易看出,这样的等式会导致三种情况。 当a = 1时,进化不会改变种群的大小,<1导致灭绝,而a>1的情况意味着无限的种群增长。 这会导致自然界的不平衡。 由于自然界中的一切都是有限的,因此调整这个等式以考虑有限的资源量是有意义的。 想象一下害虫吃谷物,每年都是一样的。 如果昆虫与它们可以繁殖的食物量相比很少,它们可以以完全的繁殖能力繁殖,数学上由常数 a > 1 确定。但是,随着害虫数量的增加,食物将变得稀缺,繁殖能力将下降。 在一个危急的情况下,可以想象有这么多昆虫出生,以至于它们还没来得及繁殖就吃掉了所有的谷物,然后种群死亡。 Verhulst 于 1838 年首先提出了一个模型,该模型考虑了有限获取食物的这种影响。在该模型中,增长率不是恒定的,而是取决于人口的状态:

增长率 a 和 Ni 之间的关系应具有以下性质:如果人口增加,则增长率应降低,因为难以获得食物。 当然,具有此属性的函数有很多:这些是自上而下的函数。 Verhulst 提出了以下关系:

其中 a>0 和常数 K>0 表征食物资源,称为环境容量。 K 的变化如何影响人口增长率? 如果 K 增加,则 Ni/K 减少。 反过来,这会导致 1-Ni/K 增长,这意味着它会增长。 这意味着增长率在提高,人口增长得更快。 因此,让我们通过假设增长率如等式(1)那样变化来修改之前的模型(3)。 然后我们得到方程

这个方程可以写成一个递归方程

其中 xi = Ni / K 和 xi + 1 = Ni + 1 / K 表示在时间 i 和时间 i + 1 中重新调整的种群。方程 (5) 称为逻辑方程。

看起来经过这么小的修改,我们的模型很容易分析。 让我们来看看。 考虑方程 (5) 的参数 a = 0.5,从初始总体 x0 = 0.45 开始。 使用递归方程(5)可以得到顺序种群值:

x1= 斧头0(1-x0)

x2= 斧头1(1-x1)

x3= 斧头2(1-x2)

为了方便(6)中的计算,我们可以使用以下程序(它是用 Python 编写的,可以在 Sage 平台上运行。我们建议您阅读本书 http://icse.us.edu .pl/e-book .),模仿我们的模型:

a = 0.5 x = 0.45 对于范围 (10) 内的 i:      x \u1d a * x * (XNUMX-x)      打印 x

我们计算 xi 的连续值,并注意到它们趋于零。 通过对上面的代码进行实验,也很容易看出无论 x0 的初始值如何,这都是正确的。 这意味着人口不断死亡。

在分析的第二阶段,我们将参数 a 的值增加到 ae (1,3) 范围内的任何值。 事实证明,那么序列 xi 会达到一定的量 x * > 0。从生态学的角度来解释这一点,我们可以说种群规模固定在一定水平,不会随季节变化. 值得注意的是,x * 的值不依赖于初始状态 x0。 这是生态系统努力稳定的结果——种群调整其规模以适应养活自己的能力。 在数学上,据说系统趋向于一个稳定的不动点,即满足等式 x = f(x)(这意味着下一时刻的状态与前一时刻的状态相同)。 使用 Sage,我们可以通过绘制人口随时间的变化来以图形方式可视化这种演变。

这样的稳定​​效应是研究人员预料到的,如果不是出乎意料,逻辑方程(5)也不会引起太多关注。 事实证明,对于参数的某些值,模型(5)的行为方式是不可预测的。 首先,有周期性和多周期性状态。 其次,随着每个时间步长,人口变化不均匀,就像随机运动一样。 第三,对初始条件非常敏感:两个几乎无法区分的初始状态导致完全不同的种群进化。 所有这些特征都是类似于完全随机运动的行为特征,被称为确定性混沌。

让我们探索这个属性!

首先,让我们设置参数a = 3.2 的值,看看进化。 令人惊讶的是,这一次人口达到的不是一个值,而是两个值,每两个季节连续出现一次。 然而,事实证明,问题并没有就此结束。 当 a = 4 时,系统不再是可预测的。 让我们看一下图(2),或者我们将使用计算机自己生成一个数字序列。 结果似乎完全是随机的,并且对于稍微不同的起始人群来说是完全不同的。 但是,细心的读者必须反对。 一个由确定性方程描述的系统,即使是一个非常简单的系统,如何表现出不可预测的行为? 也许。

该系统的一个特点是其对初始条件的显着敏感性。 从两个相差百万分之一的初始条件开始就足够了,只需几个步骤,我们就会得到完全不同的总体值。 让我们在电脑上检查一下:

a = 4.0

x = 0.123 y = 0.123 + 0.000001 PCC = [] 对于范围 (25) 内的 i: x = a*x*(1-x) u = a * u * (1-u) 打印 x, y

这是一个确定性进化的简单模型。 但这种决定论是骗人的,它只是数学决定论。 从实际的角度来看,系统的行为是不可预测的,因为我们永远无法在数学上精确地设置初始条件。 事实上,一切都是以一定的精度确定的:每个测量仪器都有一定的精度,这会在具有混沌特性的确定性系统中造成实际的不可预测性。 一个例子是天气预报模型,它总是表现出混乱的特性。 这就是为什么长期天气预报如此糟糕的原因。

混沌系统的分析极其困难。 然而,借助计算机模拟,我们可以很容易地解开混沌的许多谜团。 让我们画出所谓的分叉图,在上面我们沿着横坐标轴放置参数a的值,沿着纵坐标轴放置逻辑映射的稳定不动点。 我们通过同时模拟大量系统并在多次采样后绘制值来获得稳定点。 您可能会猜到,这需要大量计算。 让我们尝试“仔细”处理以下值:

将 numpy 导入为 np 尼克斯 = 300 钠 = 500 x = np.linspace(0,1, nx) х = х + np.zeros((Na,Nx)) h = np.transpose (h) a = np.linspace (1,4, Na) a = a + np.zeros ((Nx, Na)) 对于范围 (100) 内的 i: x=a*x*(1-x) pt = [[a_,x_] 对于 a_,x_ in zip(a.展平(),x.展平())] 点 (pt, 大小 = 1, figsize = (7,5))

我们应该得到类似于图(3)的东西。 如何解读这幅画? 例如,在参数 a = 3.3 的情况下,我们有 2 个稳定的不动点(人口规模每隔两个季节都相同)。 但是,对于参数 a = 3.5,我们有 4 个常数点(每第四个季节人口具有相同的数量),对于参数 a = 3.56,我们有 8 个常数点(每个第八个季节人口具有相同的数量)。 但是对于参数 a≈3.57,我们有无限多的固定点(人口规模从不重复,并且以不可预测的方式变化)。 但是,通过计算机程序,我们可以改变参数 a 的范围,并用我们自己的双手探索这个图的无限几何结构。

这只是冰山一角。 数以千计的科学论文已经写了关于这个方程的文章,但它仍然隐藏着它的秘密。 借助计算机模拟,您无需借助高等数学,就可以成为非线性动力学领域的先驱。 我们邀请您阅读在线版本,其中包含有关逻辑方程的许多有趣属性以及可视化它们的有趣方法的详细信息。

1 确定性法则是一种未来由初始状态唯一确定的法则。 反义词是概率法则。 2 在数学中,“离散”是指从某个可数集合中获取值。 相反的是“连续”。

添加评论