2.3 线性vs非线性系统 我们先再看一遍简单种群增长的模型 假设生育率是2 在之前的视频中,我说过这个模型是线性的 比如用T+1时刻的种群规模对T时刻的种群规模作图 这是因为兔子之间没有相互作用,且增长也没有极限 换句话说,线性就是整体等于部分之和 这一点我们可以在简单种群增长的模型里看到 比如一开始只有一只兔子,生育率为2 繁殖3年可以得到8只兔子 现在,把最开始的兔子数量设成10,即刚才的10倍 繁殖3年,得到80只兔子 也是刚才结果的10倍 所以如果我们最开始运行10次1只兔子的繁殖情况 每次繁殖3年,然后把十次模拟加起来 其结果与10只兔子繁殖3年的结果一样——两种情况最终都有80只兔子 这就是整体等于部分之和 但如果系统是非线性的,结果就会有所不同 现在我们在个体之间加入非线性相互作用 请看非线性模型 nt+1等于出生率乘以nt减去因拥挤而死去的兔子 假设这是因为食物,空间或者其他限制因素所致 我们设因拥挤而死去的兔子数量等于nt平方除以最大种群数量 这个模型现在具有了非线性特征 nt平方项来源于可能有可交配的兔子的数量在nt平方量级 这个假设高度简化了真实情况 只是为了模拟非线性,仅仅是真实情况的一个近似 进一步扩展这个模型,让其更一般化 加入其他因为非拥挤因素而死亡的兔子 即引入死亡率 扩展后的模型会出现出生率减去死亡率这一项 现在,这个模型被称为逻辑斯蒂增长模型 它是由数学家 Pierre Verhulst在19世纪初发明的 我们来看相应的netlogo模型 模型名叫logisticModel.nlogo 可以从下面的链接或者课程网站来下载 这个就是模型 有设置初始数量的滚动条,也有设置出生率和死亡率的 注意这里两个率用的是实数而非整数了 假如计算得出后代的数目不是整数,模型会四舍五入 还有一个设置承载数量的滚动条 承载数量就是栖息地内最大种群数量的学术说法 把初始数量设成1,出生率为2.0,死亡率为0 承载数量为50 初始化,然后开始模拟繁殖 可以看见种群数量在增长 注意这里种群数量最终固定在25 即使在繁殖一轮,数量也不会改变 注意这里种群数量对时间的曲线不再是指数增长曲线 增长没有那么快了 一开始有较快增长,但很快开始减速,最终进入平台 这就是逻辑斯蒂方程 而今年种群数量对去年种群数量的曲线也不再是一条直线 因为系统不再是线性的了 回到netlogo模型 一个明显的问题就是为什么兔子数量不固定在50 即承载数量 这是因为模型就是这样 如果有25只,那么25的平方除以50正好是12.5 即死去的兔子数量 在出生率为2时,剩余的兔子经过繁殖正好是25 再次强调,这只是数学模型,并非真实情况 特别对于很小的种群数量 只是为了模拟真实世界中的种群增长,但不一定准确 这个模型的重点不在于它模拟自然这一块 而是在于其非线性特征可能产生的后果 回到模型 现在问题是整体等于部分之和--即线性系统的特征--还是否存在? 重复之前的实验 让1只兔子繁殖3轮 四舍五入得到7只兔子 然后把初始兔子数量设为5,即刚才的5倍 初始化,然后繁殖3轮 可以看见这里兔子数量并非5乘以7 本来这个数量应该是刚才的5倍 即3轮繁殖后,每只兔子生出7只兔子 但当你以为5只兔子会产生5倍,即35只后代时 实际上只有21只 所以在这个非线性系统中,整体不等于部分和 现在你知道了线性和非线性系统的差别 以及部分间的非线性相互作用产生的效应 这个特征我们会在将来不断地提到。 现在是练习时间