人口模型(Malthus+Logistic)

Malthus模型6.15很明显可以知道当x(0) = x0,对x(t)对t求导之后导数为r * x0 * e^rt = r * x(t),符合6.14的条件。但是很明显,这样的模型肯定是不符合实际规律的,因为人口不可能随时间无限增长的,需要对模型进行修正。阻滞增长型(Logistics模型)即将原来人口增长的常数变为随基数而递减的线性关系,表明当人口达到一定数量时,人口便不会再继续增长下面展示一道例题直接建立对应模型即可。clc, clear% 非线性最小二乘估计data

Malthus模型
人口模型(Malthus+Logistic)
人口模型(Malthus+Logistic)
6.15很明显可以知道当x(0) = x0,对x(t)对t求导之后导数为r * x0 * e^rt = r * x(t),符合6.14的条件。
但是很明显,这样的模型肯定是不符合实际规律的,因为人口不可能随时间无限增长的,需要对模型进行修正。
人口模型(Malthus+Logistic)
阻滞增长型(Logistics模型)
即将原来人口增长的常数变为随基数而递减的线性关系,表明当人口达到一定数量时,人口便不会再继续增长
人口模型(Malthus+Logistic)
人口模型(Malthus+Logistic)

下面展示一道例题
人口模型(Malthus+Logistic)
直接建立对应模型即可。
人口模型(Malthus+Logistic)

clc, clear
% 非线性最小二乘估计
data = [3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 251.4 281.4];
x = data';
t = [1790:10:2000]';
t0 = t(1);
x0 = x(1);
fun = @(cs, td)cs(1)./(1 + (cs(1)/x0 - 1) * exp(-cs(2) * (td - t0))); %cs(1)=xm,cs(2)=r
cs = lsqcurvefit(fun, rand(2,1), t(2:end), x(2:end), zeros(2,1))
pre1 = fun(cs, [t;2010])

% 线性最小二乘法
a = [ones(21,1), -x(2:end)];
b = diff(x)./x(2:end)/10;
cs = a\b;
r = cs(1), xm = r/cs(2)
h(1) = xm;
h(2) = r;
pre2 = fun(h, [t;2010])

%先向前差分,再进行拟合
a = [ones(21, 1), -x(1:end-1)];
b = diff(x)./x(1:end-1)/10;
cs = a\b;
r = cs(1), xm=r/cs(2)
h(1) = xm;
h(2) = r;
pre3 = fun(h, [t;2010])

可见使用的方法不同,得出的结果也有较大差异

本文参考的是司守奎,孙兆亮主编的数学建模算法与应用(第二版)

版权声明:本文为博主Icy Hunter原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_52785473/article/details/122585458

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年1月19日 下午8:29
下一篇 2022年1月19日 下午8:55

相关推荐