马尔萨斯 ( Malthus)人口指数增长模型Logistic 模型

news2024/12/23 9:02:21

3.要求与任务

从 1790 — 1990 年间美国每隔 10 年的人口记录如下表所示:

用以上数据检验马尔萨斯 ( Malthus)人口指数增长模型,根据检验结果进一步讨论马尔萨斯
人口模型的改进,并利用至少两种模型来预测美国2010 年的人口数量。
提示 1 : Malthus 模型的基本假设是:人口的增长率为常数,记为 r 。记时刻 t的人口为
x ( t )(即 x ( t )为模型的状态变量),且初始时刻的人口为 ,于是得到如下微分方程:

在这里插入图片描述

提示 2 :阻滞增长模型(或 Logistic 模型) 由于资源、环境等因素对人口增长的阻滞作用,
人口增长到一定数量后,增长率会下降,假设 人口的增长率为x 的减函数,如设 r(x)=r(1-x/xm) ,
其中 r 为固有增长率 (x 很小时 ) ,xm为人口容量(资源、环境能容纳的最大数量), 于是得到
如下微分方程:
在这里插入图片描述
4、代码及结果
方法一:马尔萨斯 ( Malthus)人口指数增长模型
代码:

t = [1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990];
p = [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];
y = log(p); %求ln(p)函数值
a = polyfit(t,y,1) %用一次多项式对t和y进行拟合
z = polyval(a,t); %求得以a为系数的多项式在t处的函数值
z1 = exp(z)
r = a(1)
plot(t,p,'bo',t,z1,'r') %分别画出散点图以及拟合曲线图
xlabel('时间');
ylabel('人口数量');
legend('实际数据','理论曲线');

在这里插入图片描述
结论:随着时间的增加,人口按指数规律无限增长。可以进行短期的人口预测,较为符合
但是之后误差就很大了。
误差分析:询美国人口统计图表得出2000年为282.162、2010年人口为309.322、2020年人口
为329.484,发现两者有一定区别,因为预测中无法考虑到未来可能发生的各种变化因素。实际上
随着人口数量的增加,自然资源、环境因素, 人口政策,年龄和性别结构、地域特征等因素对人
口数量的阻滞作用越来越明显。
方法二:Logistic模型
通过求解差分方程的方式得到每个时刻的人口增长率,并将其归一化。接着使用线性回归的方法拟合出人口增长率与人口数量之间的关系,并推导出了一个基于人口增长率的指数模型,用于预测未来的人口数量。
代码:

clc
clear
close all
x=[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];%人口
n=length(x);
t=0:1:n-1;
rk=zeros(1,n);
rk(1)=(-3*x(1)+4*x(2)-x(3))/2;
rk(n)=(x(n-2)-4*x(n-1)+3*x(n))/2;
for i=2:n-1
    rk(i)=(x(i+1)-x(i-1))/2;
end
rk=rk./x;
p=polyfit(x,rk,1);
b=p(2);
a=p(1);
r0=b;
xm=-r0/a;
%输出
pnum=zeros(n,1);
for i=0:1:n-1
    pnum(i+1)=xm/(1+(xm/x(1)-1)*exp(-r0*i));
end
year1=[1790 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 2010 2020 2021];
plot(year1,pnum,'r--o',year1,x,'k-*')
xlabel('年份')
ylabel('人口数量/万人')
legend('预测人口数量','实际人口数量')

figure(2)
fnum=zeros(n+14,1);
for i=0:1:n+13
    fnum(i+1)=xm/(1+(xm/x(1)-1)*exp(-r0*i));
end
year2=[1790 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 2010 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035];
plot(year2,fnum,'r--o')
xlabel('年份')
ylabel('人口数量/万人')
legend('预测人口数量')

在这里插入图片描述
结论:当t=2000 时人口为295.769、t=2010时人口为315.909、t=2020时人口为333.962。
误差分析:查询美国人口统计图表得出2000年为282.162、2010年人口为309.322、2020年人口
为329.484,发现两者几乎一致,Logistic模型的缺点是模型中的参数r和人口总数上限xm很难准确得
到,尤其是xm的值还会随着人口发展变化的情况而改变。实际上随着人口数量的增加,自然资源、环境因素, 人口政策,
年龄和性别结构、地域特征等因素对人口 数量的阻滞作用越来越明显,增长率不应取为常数。
方法三:多项式拟合
在代码中,使用了polyfit函数拟合5阶多项式,将拟合结果和原始数据一起绘制出来。另外,该
代码还用polyval函数计算了未来几十年的人口预测数量,并在另一个图表中绘制出来。
代码:

Close;
clc;
clear all           %清除所有
n=5;%拟合多项式的次数
year=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 
1920 1930 1940 1950 1960 1970 1980 1990];
num=[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];%户籍人口; 
p5= polyfit(year,num,n);       %5阶拟合 
%绘制原始数据和拟合曲线图
figure(1)
hold on;
xlabel('year');     %设置横坐标名
ylabel('num');      %设置纵坐标名
title('1790-1990人口增长曲线');   %设置标题
grid on      %网格线
plot(year,num,'r*',year,polyval(p5,year)) 
legend('人口数量','拟合曲线')
figure(2)
year1=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 
1920 1930 1940 1950 1960 1970 1980 1990 2000 2010 2020 2030]
plot(year1,polyval(p5,year1)) 
people=polyval(p5,year1);
legend('人口预测数量')

在这里插入图片描述
结论:当t=2000 时人口为286.151、t=2010时人口为323.925、t=2020时人口为369.047。
误差分析:查询美国人口统计图表得出2000年为282.162、2010年人口为309.322、2020年人口
为329.484发现两者有一些差别,而且预测的时间越长,误差会逐渐增大,因为预测中无法考虑到
未来可能发生的各种变化因素。实际上随着人口数量的增加,自然资源、环境因素, 人口政策,
年龄和性别结构、地域特征等因素对人口数量的阻滞作用越来越明显,增长率不应取为常数。
四、总结及体会
通过这个数学建模的实例,我们可以体会到数学建模的重要性和难度。
在实际问题中,我们需要根据已知数据、假设和条件,将其量化为数学模型。经过推导和求解,得出模型所能提
供的结果。这个过程需要严谨的数学思维和运用一定的数学工具。
同时,在实际问题中,还需要考虑到数据的准确性、假设的合理性和模型的可靠性等因素。这些因素都会影响到
最终的模型结果和应用效果。因此,需要在建立模型的过程中,注重数据的采集、分析和处理,以及对假设和模
型的合理性进行判断和修正。
此外,我们还需要在建模的过程中,注重交流和合作。不同领域的专家拥有不同的知识背景和专业技能,他
们的合作和交流可以使得模型更加完善和全面。
总之,数学建模不仅是数学的一个应用领域,同时也涉及到多个学科,需要全面的知识储备和跨学科的合作
在实际问题中,需要注重思维方式、数据准确性和交流合作等因素,以期获得可信、可靠的模型结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/617375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自学黑客(网络安全),一般人我还是劝你算了吧

作为从16年接触网络安全的小白,谈谈零基础如何入门网络安全,有不对的地方,请多多指教。 这些年最后悔的事情莫过于没有把自己学习的东西积累下来形成一个知识体系。 后续我也会陆续的整理网络安全的相关学习资料及文章,与大家一…

数据结构与算法练习(三)二叉树

文章目录 1、树2、二叉树3、满二叉树4、完全二叉树5、二叉树的遍历(前序、中序、后序)二叉树删除节点或树 6、顺序存储二叉树顺序存储二叉树遍历(前序、中序、后序) 7、线索化二叉树中序线索二叉树前序线索二叉树后序线索二叉树 1…

Matlab 之 Curve Fitting APP 使用笔记

文章目录 Part.I IntroductionPart.II 使用笔记Chap.I 拟合函数Chap.II 注意事项 Part.I Introduction 曲线或曲面拟合获取拟合参数。本篇博文主要记录一下 Matlab 拟合 APP Curve Fitting 的使用方法。 Part.II 使用笔记 这个APP用来做拟合的,包括二维数据的线拟…

常见的样本统计量及其数字特征

常见的样本统计量及其数字特征 下图来自《统计学图鉴》 样本统计量有什么作用? 因为总体特征包含有总体均值、总体方差等特征,我们在用样本推断总体时,其实就是用样本特征去估计总体特征,例如:样本均值这个统计量的期…

案例33:基于Springboot名城小区物业管理系统开题报告设计

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Spark RDD统计每日新增用户

文章目录 一,提出任务二,实现思路三,准备工作1、在本地创建用户文件2、将用户文件上传到HDFS指定位置 四,完成任务1、在Spark Shell里完成任务(1)读取文件,得到RDD(2)倒排…

为什么要对实体类进行序列化并且要生成序列化ID?

一、为什么要对实体类进行序列化且要生成序列化ID 在Java开发中,实体类将会被用来与其他对象进行交互。Java语言是面向对象的,所以实体类包含了很多信息和方法。序列化是Java中一种将对象转换为字节流的机制,使得对象可以在网络上传输和存储。…

相机成像模型(一)

相机模组 如上图所示相机模组由多个元件组成,其中比较重要的元件包括镜头、感光芯片、驱动芯片。镜头的作用是聚集光线,确保良好的成像环境;感光芯片将光信号转换为电信号;驱动芯片则负责信号处理(去噪、白平衡等)与格式转换。 相机的成像过程为物体通过镜头聚集…

jvm cpu 高定位

快速的发现线程cpu高, 最终发现是gc线程, 最终去分析jvm top -o %CPU top -Hp108920 jmap -dump:formatb,fileheap.bin 108920 jvm 命令和工具_个人渣记录仅为自己搜索用的博客-CSDN博客 $ jstat -gcold 108920 MC MU CCSC CCSU OC OU YGC FGC FGCT GCT 218368.0 212670.3 253…

Java POI技术

引入依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.1</version> </dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-oo…

Netty的bytebuf详解

ByteBuf ByteBuf是对nio中ByteBuffer的增强。主要的增强点就是ByteBuf它可以动态调整容量大小&#xff0c;当要存储的数据超过了当前容量的上限就会进行扩容&#xff0c;扩容的上限是多少&#xff1f;扩容机制是什么&#xff1f;请跟着本文往下看。对了&#xff0c;还有一个增强…

区间预测 | MATLAB实现基于QRCNN-GRU卷积门控循环单元多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-GRU卷积门控循环单元多变量时间序列区间预测 目录 区间预测 | MATLAB实现基于QRCNN-GRU卷积门控循环单元多变量时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRCNN-GRU卷积神经网络结合门控循…

[BUUOJ] [RE] [ACTF新生赛2020] rome1

IDA 好久没写博客了&#xff0c;最近在刷re&#xff0c;这道题是我觉得十分有意义的一道题。故AC后总结分享给大家。不足之处请指正。 分析 直接导入IDA shift F12 双击后按 ctrl x跳转到被调用的函数中&#xff0c;按F5反编译&#xff0c;源代码如下 int func() {int r…

数据结构-线性表-链表

目录 线性表的链式存储结构&#xff1a;一、单向链表的ADT定义二、链表的优缺点 线性表的链式存储结构&#xff1a; 为了表示数据元素ai和其后继元素ai1之间的逻辑关系&#xff0c;对ai来说需存储其本身信息和后继元素的信息&#xff08;存储位置&#xff09;。这两部分组成ai…

Android系统(AOSP)--编译指令篇

目录 一、编译Android系统 二、普通编译指令 三、快速编译指令 四、新建lunch项和编译类型说明 五、Android编译系统的整体架构 六、编译后的输出目录和生成文件 七、Android常用编译命令总结 一、编译Android系统 1.Android系统全编译(Android5.1以后mtk都是这种方式…

裸辞3个月没工作,害怕面试,害怕HR问我的问题,怎么办?

其实裸辞最大的伤害就是很容易导致自己的不自信。 现在可能就是你的低谷期&#xff0c;你需要做的是什么呢&#xff0c;丰富自己。 你要相信&#xff0c;你只是太久没有面试过&#xff0c;生疏了而已。 今天小月带你回到面试场&#xff0c;找回面试最纯正的感觉&#xff01; 面…

火龙果MM32F3273G8P开发板MindSDK开发教程1 - 点亮LED

火龙果MM32F3273G8P-MindSDK开发教程1-点亮LED 1、登录官网下载对应的MindSDK固件 https://mindsdk.mindmotion.com.cn/&#xff0c;然后注册下载mm32F3270的固件即可。 下载完的文件为 plus-f3270_mdk.zip 解压后的文件路径如图&#xff1a; 2、新建LED工程 将下载的plu…

基于张量补全的交通数据复原文献汇总(最新)

由于传感器故障和通信故障等因素导致的交通数据缺失严重制约了ITS的发展与应用。如何准确、高效地恢复缺失数据已成为ITS的一个关键问题。近年来&#xff0c;LRTC&#xff08;低秩张量补全&#xff09;的方法已被广泛应用于交通数据补全。本文将介绍几篇最新的关于交通数据补全…

python3 爬虫相关学习7:初步摸索使用 BeautifulSoup

1 一个爬图片pic的代码的例子 下面这段是爬一些图片pic的代码学写了一段bs的代码&#xff0c;但是马上报错 #E:\work\FangCloudV2\personal_space\2learn\python3\py0001.txtimport requests from bs4 import BeautifulSoupurl"https://movie.douban.com/celebrity/10115…

搭建个人博客

个人网站用处有很多&#xff0c;可以写博客来记录学习过程中的各种事&#xff0c;不管是新知识还是踩坑记录&#xff0c;写完就丢在网站上&#xff0c;方便日后复习&#xff0c;也可以共享给他人&#xff0c;让其他人避免踩雷。 当然也不仅限于技术性的文章&#xff0c;生活中有…