阻滞增长模型--Logistic模型


写在前面

做了一个作业,觉得挺有意思,有空就发上来了。

阻滞增长模型–Logistic模型的部分推导、思路,并给出参考代码。
参考书籍:《数学模型》第四版,姜启源 谢金星 叶俊 编
MATLAB版本2021b
点我下载源代码及原始数据
提取码:p3uu


一、思路

阻滞作用体现在对人口增长率r的影响上,使得r随着人口数量x的增加而下降。于是有:
在这里插入图片描述
对r(x)做假设,设r(x)是x的线性函数,即,
在这里插入图片描述这里r称固有增长率;引入人口容量xm,当x=xm时人口不在增长,于是有,
在这里插入图片描述
结合上述三式,有,
在这里插入图片描述
可解得,
在这里插入图片描述式5即为Logistic阻滞增长模型。
取数据得第一个时间点得值为x0,即x0=3.9。
由式4可得,
在这里插入图片描述
等号左边项可由实际数据计算得出,左端项与右端x呈线性关系,可通过线性拟合得r,s,进而求得x_m。
至此,式5中固有人口增长率r、人口容量x_m、人口初始值x_0均已求得。


二、原始数据

点我下载mat格式原始数据
提取码:75d5
数据在参考书P164
参考书P164


三、源代码

// function_xt.m
function output = function_xt(xm, x0, r, t )
%UNTITLED2 此处提供此函数的摘要
% Logistic模型
% 输入:
% xm:人口容量
% r :固有增长率
% x0:初始人口数
% t :时间点
% 输出
% x(t),时间点对应的人口数
output = xm / ( 1 + ( xm/x0 - 1 ) * exp(-r*t) );
end
// main
%%
% 运行环境:matlab2021b
%
% @94902022-3-29
%
clear
close all

%% 加载数据并进行 固有增长率、人口容量 的计算
% 加载原始数据
load('data.mat')
% 求微分
dxdt = diff(Data.value);
% 线性拟合中 y 的计算
y = dxdt./Data.value(1:end-1);
% 进行线性拟合
% 返回值p(1)为系数,p(2)为截距
p = polyfit(Data.value(1:end-1), y, 1);
% 对应赋值
s = -p(1);
r = p(2);
xm = r/s;
x0 = Data.value(1); % 取第一个数据点为x0

%% 获取模型关键值后进行计算
for t = 0:1:20
    yhat(t+1) = function_xt(xm,x0,r,t);
end
%% 画图,返回关键值
plot(Data.t(1:end-1), Data.value(1:end-1),'blue')
hold on
plot(Data.t(1:end-1), yhat, '*')
set(gca, 'XLim',[Data.t(1) Data.t(end)]);
xlabel('时间(年)','FontSize',24)
ylabel('人数(百万)','FontSize',24)
legend('原始数据','模型计算','FontSize',24)
title('阻滞增长模型拟合图形','FontSize',24)

fprintf('人口容量xm是:%f\n',xm)
fprintf('固有增长率r是:%f\n',r)

四、结果

人口容量xm是:294.385993
固有增长率r是:0.324519

在这里插入图片描述


  • 11
    点赞
  • 170
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 阻滞增长模型是一种描述生物群体增长和环境因素影响的数学模型,可以用来预测生物群体的未来发展趋势。在MATLAB中,可以使用ode45函数求解阻滞增长模型阻滞增长模型的一般形式为: dN/dt = rN(1-N/K) - λN 其中,N是生物群体的数量,t是时间,r是生长率,K是生物群体的容量,λ是死亡率。 在MATLAB中,可以使用以下代码进行求解: ``` function dy = logistic(t,y) r = 0.1; % 生长率 K = 1000; % 容量 lambda = 0.05; % 死亡率 dy = r*y*(1-y/K)-lambda*y; end [t,y] = ode45(@logistic,[0 50],500); plot(t,y) xlabel('时间') ylabel('生物群体数量') title('阻滞增长模型') ``` 在上述代码中,使用ode45函数求解阻滞增长模型,并使用plot函数绘制生物群体数量随时间的变化趋势图。 ### 回答2: MATLAB阻滞增长模型是一种用于描述生物发展、人口增长或其他社会现象的模型。它基于阻塞、增长和死亡这三个主要因素,通过设定阻滞增长的阈值,来预测某一群体的增长趋势。 在该模型中,群体的增长受到一定的限制,一旦达到阻滞阈值,增长将减缓甚至停止。这个阻滞阈值可以是环境的承载能力、资源的匮乏、疾病的传播等因素。当阻滞发生时,群体内的个体数将会趋于稳定,这被称为“平衡状态”。 为了描述阻滞增长模型,我们可以使用微分方程或差分方程,其中增长率取决于每个因素的影响。在MATLAB中,可以使用函数和脚本来实现这些方程,并建立相应的模型。通过改变不同参数的值,可以观察到不同的增长趋势。 MATLAB提供了丰富的绘图和分析工具,可以用于可视化和分析阻滞增长模型的结果。通过图表,我们可以清晰地看到群体增长的变化,以及阻滞发生的时刻和持续时间。 总之,MATLAB阻滞增长模型是一种用于描述群体增长模型,它考虑了阻滞增长和死亡等因素的影响。通过使用MATLAB的函数、脚本、绘图和分析工具,可以实现该模型并进行进一步研究和分析。 ### 回答3: MATLAB中的阻滞增长模型是一种用于描述生物群体或经济增长模型,它考虑到了资源的有限性和个体之间的相互作用。 这个模型基于下面的假设:增长速度和资源供应之间存在关系。当资源充足时,个体可以以正常的速度生长和繁殖;但是当资源有限时,个体数量的增长会受到限制。 在MATLAB中,可以使用一些函数和算法来模拟和分析阻滞增长模型。首先,需要确定模型的基本参数,例如初始个体数量、资源供应的大小和增长速率等。 接下来,可以使用MATLAB中的差分方程或微分方程来描述模型的动态演化过程。通过对方程进行数值求解,可以得到模型的时间演化曲线。 另外,还可以使用MATLAB中的绘图函数来可视化模型的结果。例如,可以绘制个体数量随时间变化的曲线,以及资源供应和个体数量之间的关系。 最后,可以使用MATLAB中的统计函数和分析工具来对模型进行进一步的分析。例如,可以计算个体数量的平均增长率、变异系数和相关性等。 总之,使用MATLAB可以方便地建立阻滞增长模型并进行分析和可视化。这对于研究生物群体或经济增长等问题具有重要的意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值