【数学建模】常用微分方程模型 + 详细手写公式推导 + Matlab代码实现

article/2025/10/10 22:12:24

文章目录

  • 一、学习内容
  • 二、学习时间
  • 三、学习产出
    • 3.1 微分方程基本概念
    • 3.2 微分方程在数学建模中的应用
    • 3.3 微分方程常用模型
      • 3.3.1 人口增长模型
        • 3.3.1.1 指数增长模型(马尔萨斯模型)
        • 3.3.1.2 阻滞增长模型(Logistic模型)
        • 3.3.1.3 人口模型小结
      • 3.3.2 传染病模型
        • 3.3.2.1 SI模型
        • 3.3.2.2 SIS模型
        • 3.3.2.3 SIR模型


一、学习内容

  1. 微分方程基本概念
  2. 微分方程在数学建模中的应用
  3. 微分方程常用模型(人口增长模型、传染病模型)

二、学习时间

2022.06.19


三、学习产出

3.1 微分方程基本概念

微分方程,是指含有未知函数及其导数的关系式。解微分方程就是找出未知函数。

微分方程是伴随着微积分学一起发展起来的。微积分学的奠基人Newton和Leibniz的著作中都处理过与微分方程有关的问题。微分方程的应用十分广泛,可以解决许多与导数有关的问题。物理中许多涉及变力的运动学、动力学问题,如空气的阻力为速度函数的落体运动等问题,很多可以用微分方程求解。此外,微分方程在化学、工程学、经济学和人口统计等领域都有应用。

数学领域对微分方程的研究着重在几个不同的面向,但大多数都是关心微分方程的解。只有少数简单的微分方程可以求得解析解。不过即使没有找到其解析解,仍然可以确认其解的部分性质。在无法求得解析解时,可以利用数值分析的方式,利用电脑来找到其数值解。 动力系统理论强调对于微分方程系统的量化分析,而许多数值方法可以计算微分方程的数值解,且有一定的准确度。

简单来说,微分方程指的是:含有未知函数及其导数的方程。,下面是几种微分方程的例子:

非齐次一阶常系数线性微分方程:
在这里插入图片描述
齐次二阶线性微分方程:
在这里插入图片描述
非齐次一阶非线性微分方程:
在这里插入图片描述

3.2 微分方程在数学建模中的应用

问题描述:
某人每天由饭食获取2 500卡热量,其中1 200卡用于新陈代谢,此外每千克体重需支付16卡热量作为运动消耗,其余热量则转化为脂肪,已知以脂肪形式贮存的热量利用率为100%,每千克脂肪含热量10 000卡,问此人的体重如何随时间而变化?

解析:
设人的体重为m(t),假设体重随时间是连续变化的,即m(t)是连续函数且充分光滑,故我们认为能量的摄取和消耗是随时发生的.这里我们以“天”为时间单位,在任何一个时间段内考虑能量的摄入和消耗所引起的体重的变化.根据能量的平衡原理,任何时间段内由于体重的改变所引起的人体内能量的变化应该等于这段时间内摄入的能量与消耗的能量的差.

我们发现从理论上来说,只要适当调节A和B,C(不变),即控制饮食和增加活动量,减肥就能达到好的效果.

3.3 微分方程常用模型

3.3.1 人口增长模型

在这里插入图片描述
图片来源:【微分方程模型】【2021国赛赛前培训】

3.3.1.1 指数增长模型(马尔萨斯模型)

所谓指数增长模型,就是假设人口是随着一个固定的增长率不断增长。此模型由马尔萨斯1798年提出,故又称为马尔萨斯模型。下面是有关指数增长模型公式的推导和演示:

  • 假设t时刻人口数量为连续、可微函数x(t)
  • 假设单位时间人口增长率为常数r
  • 假设初始人数为x0
    在这里插入图片描述
    Matlab代码:
% 人口增长-指数增长模型
% 清空工作区和变量区
clear;clc;
% 定义迭代次数
n = 250;
% 定义并初始化参数
x = zeros(1,n);
x(1,1) = 5.42; % 初始化人口数(亿)
r = 0.018; % 人口增长率
% 开始迭代
for t = 2:nx(1,t) = x(1,1)*exp(r*t);
end
% 绘图
plot(1:1:n,x);
legend('人口增长曲线');
xlabel('迭代次数');
ylabel('人口数(亿) ');
grid on;

在这里插入图片描述
从上图,我们可以明显地看出指数增长模型存在以下几点局限性:

  • 不符合多数地区人口增长规律。
  • 实际上只有在群体总数不太大时才合理,当总数增大时,生物群体的各成员之间由于有限的生存空间,资源,食物等原因可能发生竞争的情况。
  • 人口净增长率不可能始终保持常数,它应当与人口数量有关。

3.3.1.2 阻滞增长模型(Logistic模型)

阻滞增长模型对指数增长模型进行了改善,即考虑了资源、环境等因素对人口增长的阻滞作用,且阻滞作用随人口的增加而变大。下面是有关阻滞增长模型公式的推导和演示:

  • 假设t时刻人口数量为连续、可微函数x(t)
  • 假设单位时间人口增长率为x的减函数,即r(x)=a-bx,其中b>0
  • 假设当前环境和资源最大可能承受的人口数为xm
  • 假设r(0)=r,r(xm)=0,其中r为一个常数,即初始人口增长率
  • 假设初始人数为x0

在这里插入图片描述

Matlab代码:

% 人口增长-阻滞增长模型
% 清空工作区和变量区
clear;clc;
% 定义迭代次数
n = 500;
% 定义并初始化参数
x = zeros(1,n);
x(1,1) = 5.42; % 初始化人口数(亿)
r = 0.018; % 初始人口增长率
xm = 100; % 最大人口数
% 开始迭代
for t = 2:nx(1,t) = xm/(1+(xm/x(1,1)-1)*exp(-r*t));
end
% 绘图
plot(1:1:n,x);
legend('人口增长曲线');
xlabel('迭代次数');
ylabel('人口数(亿) ');
grid on;

在这里插入图片描述

3.3.1.3 人口模型小结

  • 指数增长模型和Logistic模型(阻滞增长模型)均为对微分方程所作的模拟近似方程。
  • 前一模型假设了增长率为一常数,后一模型则假设环境只能供养一定数量的种群,从而引入了上个竞争项
  • 指数增长模型呈现的是J型增长,只适应于短期内,并没有考虑外界因素的影响。
  • Logistic模型呈现S型,适应于中长期且有外界因素影响。

3.3.2 传染病模型

  • 描述传染病的传播过程
  • 分析受感染人数的变化规律
  • 预报传染病高发期到来的时刻
  • 按照传播过程的一般规律,用机理分析方法建立模型

3.3.2.1 SI模型

SI模型将人群分为两类,一类是健康人群(S),另一类是感染者(I)

  • 假设总人数为N,且N不变
  • 假设时刻t健康人和感染者所占比例分别为s(t)和i(t),且s(t)+i(t)=1
  • 假设每个病人每天有效接触人数为L(日接触率),感染者接触健康者,就会让健康者患病
    在这里插入图片描述
    Matlab代码:
% 传染病SI模型
% 清空工作区和变量区
clear;clc;
% 定义迭代次数
n = 100;
% 定义并初始化状态E(s,i)
E = zeros(2,n);
E(1,1) = 0.99; % 初始健康者比例
E(2,1) = 0.01; % 初始感染者比例
% 初始化参数
L = 0.5; % 病人日接触率
% 开始迭代
for t = 1:n-1E(2,t+1) = E(2,t) + L*E(2,t)*(1-E(2,t));E(1,t+1) = 1 - E(2,t+1);
end
% 绘图
s = E(1,:); % 健康者比例数据
i = E(2,:); % 感染者比例数据
plot(s,'DisplayName','s');hold on;
plot(i,'DisplayName','i');
legend('健康者比例','感染者比例');
xlabel('迭代次数');
ylabel('比例');
grid on;
hold off;

在这里插入图片描述
SI模型的缺点在于,没有考虑病人可以被治愈的情况,导致最后所有健康者都会变为感染者,不太符合实际情况

3.3.2.2 SIS模型

SIS模型在SI模型的基础上,还考虑了健康人被感染后可能会被治愈,而且治愈后,还可能再次被感染的情况

  • 假设总人数为N,且N不变
  • 假设时刻t健康人和感染者所占比例分别为s(t)和i(t),且s(t)+i(t)=1
  • 假设每个病人每天有效接触人数为L(日接触率),感染者接触健康者,就会让健康者患病
  • 假设病人每天的治愈率为M(日治愈率)
    在这里插入图片描述
    Matlab代码:
% 传染病SIS模型
% 清空工作区和变量区
clear;clc;
% 定义迭代次数
n = 100;
% 定义并初始化状态E(s,i)
E = zeros(2,n);
E(1,1) = 0.99; % 初始健康者比例
E(2,1) = 0.01; % 初始感染者比例
% 初始化参数
L = 0.5; % 病人日接触率
M = 0.2; % 病人日治愈率
% 开始迭代
for t = 1:n-1E(2,t+1) = E(2,t) + L*E(2,t)*(1-E(2,t))-M*E(2,t);E(1,t+1) = 1 - E(2,t+1);
end
% 绘图
s = E(1,:); % 健康者比例数据
i = E(2,:); % 感染者比例数据
plot(s,'DisplayName','s');hold on;
plot(i,'DisplayName','i');
legend('健康者比例','感染者比例');
xlabel('迭代次数');
ylabel('比例');
grid on;
hold off;

在这里插入图片描述
SIS模型作为SI模型的升级版,考虑了病人被治愈的情况,但同时,SIS模型没有考虑病人被治愈后,可能会产生抗体,而不会被再次感染的情况,不太符合某些传染病的模拟

3.3.2.3 SIR模型

SIR模型在SIS模型的基础上,还考虑了病人被治愈后,可能会产生抗体,而不会被再次感染的情况,适应性更强。
SIR模型中,有三种人群:健康者(S),感染者(I),免疫者(R)

  • 假设总人数为N,且N不变
  • 假设时刻t健康人、感染者和免疫者所占比例分别为s(t)、i(t)和r(t),且s(t)+i(t)+r(t)=1
  • 假设每个病人每天有效接触人数为L(日接触率),感染者接触健康者,就会让健康者患病
  • 假设病人每天的治愈率为M(日治愈率)
  • 假设病人被治愈后,会产生抗体,成为免疫者,免疫者群体不会被再次感染
    在这里插入图片描述

Matlab代码:

% 传染病SIR模型
% 清空工作区和变量区
clear;clc;
% 定义迭代次数
n = 100;
% 定义并初始化状态E(s,i,r)
E = zeros(3,n);
E(1,1) = 0.99; % 初始健康者比例
E(2,1) = 0.01; % 初始感染者比例
E(3,1) = 1 - E(1,1) - E(2,1); % 初始免疫者比例(假设一开始没有免疫者)
% 初始化参数
L = 0.5; % 病人日接触率
M = 0.1; % 日治愈率
% 开始迭代
for t = 1:n-1E(1,t+1) = E(1,t) - L*E(1,t)*E(2,t);E(2,t+1) = E(2,t) + L*E(1,t)*E(2,t) - M*E(2,t);E(3,t+1) = 1 - E(1,t+1) - E(2,t+1);
end
% 绘图
s = E(1,:); % 健康者比例数据
i = E(2,:); % 感染者比例数据
r = E(3,:); % 免疫者比例数据
plot(s,'DisplayName','s');hold on;
plot(i,'DisplayName','i');
plot(r,'DisplayName','r');
legend('健康者比例','感染者比例','免疫者比例');
xlabel('迭代次数');
ylabel('比例');
grid on;
hold off;

在这里插入图片描述
可以看到,在SIR模型中,随着时间的推移,感染者人数先上升,达到一个峰值后,再下降,最后下降为0,所有人都成为免疫者


http://chatgpt.dhexx.cn/article/f4wU1KQI.shtml

相关文章

数学建模之微分方程模型详解

全文共10110个字,码字总结不易,老铁们来个三连:点赞、关注、评论 作者:[左手の明天] 原创不易,转载请联系作者并注明出处 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议&#xff0c…

Station P2(ROC-RK3568-PC) 裸机开发5_RKUBoot TPL

完整编译 u-boot-next-dev:./make.sh rk3568 2>&1 >log.txt 生成两个主要的文件是: RKLoader:rk356x_spl_loader_v1.08.111.bin Uoot FIT Image:uboot.img 两个都是有特定格式的混合文件。 RKLoader 的生成&#xf…

tpl怎么搞_emlog后台模板设置功能插件tpl_options

到目前为止emlog都没有集成模板后台设置功能,可能是和emlog一直走轻量级路径有关。但是集成模板后台配置功能,无论是对emlog模板开发者还是用户来说,其作用都非常大,可以使一些模板功能不需要修改模板文件就可以改变设置&#xff…

tpl.js的使用

tpl.js的使用 tpl.js简介1.如何写模板2.如何引用模板tpl.js的下载地址 tpl.js简介 tpl.js是用于和require.js相结合的html模板,和template.js的用法非常相似,我们可以从以下几点来学习它,我们先来看一下小案例中的目录结构: 1.如何写模板 …

vscode配置tpl文件关联html语言

使用beego框架的时候,有个操作,需要将tpl文件修改vscode识别成html; 有两种方法: 方法一:页面配置 ctrl shift p 选择打开工作区设置 找到Files:Associations文件关联 添加项:*.tpl html 方法二&…

基于JAVA的TPL解释器

基于JAVA的TPL解释器 编写一个Java程序,该程序读取一个文件中的TPL指令(见下文),并执行这些指令。该语言编写的程序每一行都必须以这些单词中的一个开头,不区分大小写。具体代码可参考链接 https://download.csdn.net…

U-Boot 之零 源码文件、启动阶段(TPL、SPL)、FALCON、设备树

最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,在之前的博文 Linux 之八 完整嵌入式 Linux 环境、(交叉)编译工具链、CPU 体系架构、嵌入式系统构建工具 中详细介绍了嵌入式 Linux 环境,接下来就是重点学习一…

java .tpl是什么模版_tpl标签定义

canonical 阅读(996) 评论(0) 编辑 收藏 所属分类: Witrix开发平台 tpl自定义标签的设计目标之一是尽量减少配置说明项. 在tpl标签库中, 标签定义格式如下 importVars"varA, varB" otherArgs"optionalArgA, optionalArgB" localScope"trueOrFalse&q…

创建TPL自定义模板

文件布局 <!--1d7c7a527b6335cc7a623305ca940e1findex.tpl.html--><!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999…

php tpl模板文件,php自己创建TPL模板引擎之初学习

一&#xff0c;创建初始化模板所需的文件和文件夹。 1&#xff0c;index.php主文件&#xff0c;用于编写业务逻辑。 2&#xff0c;template.inc.php模板初始化文件&#xff0c;用于初始化模板信息。 3&#xff0c;templates目录存放所有的模板文件。 4&#xff0c;templates_c目…

观远数据苏春园:五年AI+BI路,数智化破局中的变与不变|数据猿采访

““2021年终大型金猿主题策划活动”已正式开启&#xff0c;欢迎报名参与&#xff1a;榜单奖项产业图谱行业报告线下论坛&#xff5c;或点击文末“阅读原文”链接后提交活动意向报名表&#xff0c;并进一步与数据猿工作人员沟通后&#xff0c;可获取相关申报资料与模板。 数据智…

大咖 | 王汉生:从数据到价值的转化,回归分析的“道”与“术”

摘自《数据思维》 作者&#xff1a;王汉生 学过统计学的同学们都知道一件事情&#xff0c;回归分析师数据分析的一个非常重要的模型方法。而且这些模型很可能是线性的、非线性的,也可能是参数的、非参数的,甚至是一元的、多元的,低维的、高维的,不尽相同。所以&#xff0c;把数…

李宏毅深度学习--《Backpropagation》

李宏毅深度学习 Gradient Descent of neural network&#xff1a; n e u r a l n e t w o r k neural\ \ network neural network的参数&#xff1a; θ { w 1 , w 2 , ⋯ , b 1 , b 2 , ⋯ } θ\{w_1,w_2,\cdots,b_1,b_2,\cdots \} θ{w1​,w2​,⋯,b1​,b2​,⋯}计算参数 θ…

郑宇:多源数据融合与时空数据挖掘(转载)

来自&#xff1a; https://mp.weixin.qq.com/s?__bizMzAwMTA3MzM4Nw&mid2649440531&idx1&snd9c92b1f157ee37c7c6e185919a3ffbb&chksm82c0a897b5b721810f4d795cc144d309086274a9071515e727f9f420d7ffb7f06c9b376557ee&scene21#wechat_redirect 和https:/…

近10年数据智能团队建设,联想总结了由内而外的发展经验 | 专访联想集团副总裁田日辉...

来源&#xff1a;大数据文摘 本文约3300字&#xff0c;建议阅读5分钟。 本文为清华大学大数据研究中心联合大数据文摘发起的年度白皮书《顶级数据团队建设全景报告》系列专访的第四篇内容。《报告》囊括专家访谈、问卷、网络数据分析&#xff0c;力求为行业内数据团队的组建和高…

谷俊丽:基于大数据的深度学习

嘉宾介绍&#xff1a;谷俊丽&#xff0c;博士学历&#xff0c;毕业于清华大学-美国University of Illinois Urbana-champaign大学&#xff0c;在清华期间作为核心人员研发过超长指令字数字信号处理器&#xff0c;在美期间曾参与UIUC超级计算机上的研究工作&#xff0c;并工作实…

MyBatis从入门到精通(1):MyBatis入门

作为一个自学Java的自动化专业211大学本科生&#xff0c;在学习和实践过程中”趟了不少雷“&#xff0c;所以有志于建立一个适合同样有热情学习Java技术的参考“排雷手册”。 最近在读刘增辉老师所著的《MyBatis从入门到精通》一书&#xff0c;很有收获&#xff0c;于是将自己学…

给力!低代码开发平台广州流辰信息科技助您增辉创价值!

低代码平台开发公司流辰信息深耕行业多年&#xff0c;一直以市场为导向&#xff0c;凭借敏锐的市场洞察力砥砺前行、拼搏进取&#xff0c;提升研发创新能力&#xff0c;广州流辰信息科技与各新老客户朋友风雨同舟&#xff0c;携手共创宏伟新蓝图&#xff01; 一、熔铸前沿科技 …

汇聚数据库创新力量,加速企业数字化转型

2022年12月29日&#xff0c;以“汇聚数据库创新力量&#xff0c;加速企业数字化转型”为主题的openGauss Summit 2022在线上举行。会上&#xff0c;openGauss社区理事会理事长江大勇对外公布了最近社区及生态进展&#xff0c;并宣布推出资源池化架构&#xff0c;实现软硬融合&a…

【金猿人物展】龙盈智达首席数据科学家王彦博:量子科技为AI大数据创新发展注入新动能...

‍ 王彦博 本文由龙盈智达首席数据科学家王彦博撰写并投递参与“数据猿年度金猿策划活动——2022大数据产业趋势人物榜单及奖项”评选。 ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 回顾2022年大数据行业发展&#xff0c;令人感触最深的是数字经济时代对“数据安全”和…