当前位置: 首页 > article >正文

用MATLAB复现经典SEIR模型:从零开始搭建你的第一个疫情传播仿真(附完整代码)

用MATLAB构建SEIR模型零基础实现疫情传播动态仿真当第一次看到传染病传播曲线的陡峭上升时我被数学模型的预测能力震撼了。作为流行病学研究的基础工具SEIR模型用简洁的微分方程揭示了病毒扩散的内在规律。本文将带你从零开始用MATLAB构建这个经典模型无需深厚的数学背景只要跟着步骤操作90分钟内就能看到自己电脑上生成的疫情传播动态曲线。1. 准备工作与环境配置在开始建模之前我们需要确保MATLAB环境就绪。如果你尚未安装MATLAB官网提供30天试用版学生还可以申请教育版许可。安装时建议选择以下工具箱MATLAB基础组件必选Curve Fitting Toolbox用于后期数据分析Statistics and Machine Learning Toolbox可选安装完成后新建一个脚本文件快捷键CtrlN保存为SEIR_Model.m。我们将在这个文件中编写所有代码。对于初次接触MATLAB的用户了解几个基本操作会很有帮助% 这是单行注释 disp(Hello World) % 在命令窗口输出文本 % 常用工作区命令 clear all % 清空工作区变量 clc % 清空命令窗口 close all % 关闭所有图形窗口2. SEIR模型核心原理解析SEIR模型将人群划分为四个互斥状态易感者(Susceptible)可能被感染的健康人群潜伏者(Exposed)已感染但无症状且不具传染性感染者(Infectious)出现症状并具有传染性康复者(Recovered)痊愈并获得免疫力的人群模型的核心是一组耦合微分方程描述各状态间的转化关系dS/dt -βSI/N dE/dt βSI/N - σE dI/dt σE - γI dR/dt γI其中关键参数包括β感染率感染者每天接触并传染易感者的概率σ潜伏期倒数1/平均潜伏期天数γ康复率1/平均感染期天数这些参数决定了疫情发展的形态。例如COVID-19的典型参数值为平均潜伏期5.2天 → σ ≈ 0.19平均感染期10天 → γ ≈ 0.1基本传染数R₀≈2.5 → β ≈ R₀×γ 0.253. 基础SEIR模型的MATLAB实现现在我们将上述方程转化为可执行的MATLAB代码。首先定义模型参数和初始条件% 参数设置 N 1e6; % 总人口数 beta 0.25; % 感染率 sigma 0.19; % 潜伏期倒数 gamma 0.1; % 康复率 % 初始条件 I0 1; % 初始感染者 E0 0; % 初始潜伏者 R0 0; % 初始康复者 S0 N - I0; % 初始易感者接下来我们需要用欧拉法求解微分方程组。虽然MATLAB有内置的ODE求解器但为了教学目的我们手动实现% 时间设置 t_start 0; t_end 180; % 模拟180天 dt 1; % 时间步长(天) t t_start:dt:t_end; % 初始化数组 S zeros(size(t)); S(1) S0; E zeros(size(t)); E(1) E0; I zeros(size(t)); I(1) I0; R zeros(size(t)); R(1) R0; % 欧拉法迭代 for i 1:length(t)-1 S(i1) S(i) - beta*S(i)*I(i)/N * dt; E(i1) E(i) (beta*S(i)*I(i)/N - sigma*E(i)) * dt; I(i1) I(i) (sigma*E(i) - gamma*I(i)) * dt; R(i1) R(i) gamma*I(i) * dt; end最后我们绘制各人群随时间变化的曲线% 绘制结果 figure(Color,white,Position,[100,100,800,500]) plot(t,S,b, t,E,y, t,I,r, t,R,g,LineWidth,2) grid on xlabel(时间(天)) ylabel(人数) legend(易感者,潜伏者,感染者,康复者,Location,best) title(基础SEIR模型仿真结果) set(gca,FontSize,12)运行这段代码你将看到典型的疫情传播曲线感染者数量先上升达到峰值然后逐渐下降最终人群主要分布在康复者和少数未感染的易感者中。4. 模型优化与参数敏感性分析基础模型虽然能反映传播趋势但现实情况更为复杂。我们可以从几个方面进行改进4.1 加入干预措施假设在第60天实施社交距离政策使感染率β降低50%for i 1:length(t)-1 % 第60天实施干预 current_beta beta; if t(i) 60 current_beta beta * 0.5; end S(i1) S(i) - current_beta*S(i)*I(i)/N * dt; % 其余方程保持不变... end4.2 参数敏感性分析了解不同参数对结果的影响至关重要。我们可以创建参数扫描函数function peak_infections simulate_SEIR(beta, sigma, gamma) % 参数设置同上... % 运行模拟... peak_infections max(I); end % 测试不同R0值的影响 R0_values 1.5:0.5:3.5; peaks zeros(size(R0_values)); for i 1:length(R0_values) peaks(i) simulate_SEIR(R0_values(i)*gamma, sigma, gamma); end figure plot(R0_values, peaks/N*100, -o) xlabel(基本传染数 R_0) ylabel(感染峰值占总人口比例(%)) title(R0对疫情峰值的影响)4.3 可视化优化使用subplot创建多面板图表更全面地展示结果figure(Color,white,Position,[100,100,1000,700]) subplot(2,2,1) plot(t,S,b,LineWidth,2) title(易感者变化) grid on subplot(2,2,2) plot(t,E,y,LineWidth,2) title(潜伏者变化) grid on subplot(2,2,3) plot(t,I,r,LineWidth,2) title(感染者变化) grid on subplot(2,2,4) plot(t,R,g,LineWidth,2) title(康复者变化) grid on5. 进阶扩展思路掌握了基础SEIR模型后你可以尝试以下扩展方向5.1 模型变体SEIRS模型考虑免疫力随时间衰减康复者可能再次变为易感者SEIQRD模型加入隔离(Q)和死亡(D)人群年龄结构化模型考虑不同年龄组的接触模式差异5.2 实际数据拟合使用curve fitting工具箱将模型与实际疫情数据拟合% 假设有实际数据actual_cases ft fittype(A*exp(b*x),coefficients,{A,b}); fit_result fit(t(1:30), actual_cases(1:30), ft);5.3 空间扩展将模型扩展到空间维度模拟病毒在不同地区间的传播% 假设有5个相互连接的城市 num_cities 5; connectivity rand(num_cities); % 城市间连接强度 % 每个城市维护自己的SEIR状态 S zeros(length(t), num_cities); I zeros(length(t), num_cities); % 初始化... for i 1:length(t)-1 for city 1:num_cities % 计算来自其他城市的输入感染 imported_infections sum(connectivity(:,city).*I(i,:)); S(i1,city) S(i,city) - (beta*S(i,city)*I(i,city)/N 0.1*imported_infections) * dt; % 其余方程... end end6. 常见问题与调试技巧初学者在实现SEIR模型时常遇到以下问题数值不稳定时间步长dt过大导致解发散。尝试减小dt或改用ode45求解器[t,y] ode45(SEIR_equations, [0 180], [S0 E0 I0 R0]);参数设置不合理导致曲线形态异常。确保所有参数为非负值各人群初始值之和等于总人口Nβ/(γμ) ≈ R₀μ为死亡率单位不一致时间参数σ、γ的单位需统一通常为1/天可视化问题曲线重叠难以区分。可以使用不同线型和颜色添加图例和网格调整坐标轴范围当模型行为不符合预期时建议打印中间变量值检查计算过程简化模型排除干扰因素与已知正确结果进行对比% 调试示例检查人群总数是否守恒 total_population S E I R; if any(abs(diff(total_population)) 1e-6) warning(总人口不守恒) end通过本教程你不仅学会了SEIR模型的实现还掌握了传染病建模的基本思路。记得保存你的工作成果这些代码可以作为更复杂模型的基础。尝试改变参数观察曲线变化这是理解流行病动力学的绝佳方式。

相关文章:

用MATLAB复现经典SEIR模型:从零开始搭建你的第一个疫情传播仿真(附完整代码)

用MATLAB构建SEIR模型:零基础实现疫情传播动态仿真 当第一次看到传染病传播曲线的陡峭上升时,我被数学模型的预测能力震撼了。作为流行病学研究的基础工具,SEIR模型用简洁的微分方程揭示了病毒扩散的内在规律。本文将带你从零开始&#xff0c…...

终极免费方案:用NoFences彻底解决你的Windows桌面混乱问题

终极免费方案:用NoFences彻底解决你的Windows桌面混乱问题 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 还在为满屏的桌面图标而头疼吗?每次找文件都…...

Obsidian Tasks:5步掌握任务优先级管理,让重要事项不再遗漏

Obsidian Tasks:5步掌握任务优先级管理,让重要事项不再遗漏 【免费下载链接】obsidian-tasks Task management for the Obsidian knowledge base. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-tasks Obsidian Tasks 是 Obsidian 知识库…...

基于Next.js与GitHub Pages构建个人开发者门户:从SSG到CI/CD全流程实践

1. 项目概述:一个开发者个人门户的诞生在技术社区里,一个以自己名字命名的.github.io仓库,往往不仅仅是一个静态网站,它更像是一个开发者的数字名片、技术博客、项目集散地,甚至是一个个人品牌的线上总部。今天要聊的这…...

收藏!小白程序员轻松入门大模型:6步解锁AI Agent开发全攻略

本文提供AI大模型应用开发的入门路线图,分为六步:掌握大模型基础与核心技术(如RAG、Prompt工程);提升Python、API调用等开发基础;实践智能问答、知识库等应用场景开发;学习项目落地全流程&#…...

基于AI与双级缓存的新闻聚合器:从架构设计到工程实践

1. 项目概述:一个只传递好消息的AI新闻聚合器最近在做一个挺有意思的Side Project,起因是受够了每天被各种负面新闻轰炸。不知道你有没有同感,一打开新闻App,满屏都是冲突、灾难和让人焦虑的标题党。这不仅仅是个人感受&#xff0…...

Temu在韩国提速“火箭配送”:当日达背后,跨境物流的护城河正在变深

韩国电商市场正在成为全球平台最密集的试验场。Coupang的“火箭配送”用十年时间教育了韩国消费者对配送时效的期待值,而现在,Temu决定在这个已经被拉高的标准线上继续加注。近日,Temu正式在韩国市场推出同名“火箭配送”服务,首尔…...

VisualCppRedist AIO:Windows系统运行库完整解决方案深度指南

VisualCppRedist AIO:Windows系统运行库完整解决方案深度指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是Windows系统必备…...

利用 Taotoken 的模型广场为不同 Agent 工作流选择合适的底层模型

利用 Taotoken 的模型广场为不同 Agent 工作流选择合适的底层模型 在构建复杂的 AI Agent 工作流时,一个常见的挑战是如何为规划、代码生成、逻辑推理等不同的子任务匹配合适的底层模型。不同的任务对模型的能力、响应速度和成本敏感度要求各异。Taotoken 的模型广…...

WeChatMsg终极指南:如何安全备份并深度分析你的微信聊天记录

WeChatMsg终极指南:如何安全备份并深度分析你的微信聊天记录 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...

从数字租客到知识主人:dedao-dl如何重塑你的学习资产所有权

从数字租客到知识主人:dedao-dl如何重塑你的学习资产所有权 【免费下载链接】dedao-dl 得到 APP 课程下载工具,可在终端查看文章内容,可生成 PDF,音频文件,markdown 文稿,可下载电子书。可结合 openclaw sk…...

AgentLoop MemoryStore:助力企业 Agent 稳定运行,释放业务价值!

AI 开发者面临的记忆痛点想必每一位 AI 开发者,都经历过智能 Agent 上线后出现问题的场景。Demo 运行流畅、内部评审通过、老板认可,团队攻坚两个月将其推向生产环境,第一周用户反馈尚可,但第二周就收到用户质疑,如“我…...

别再手动模拟I2C了!用STM32F103C8T6的硬件I2C驱动AT24C256(附完整工程)

解锁STM32硬件I2C潜能:高效驱动AT24C256 EEPROM实战指南 在嵌入式开发中,数据存储的可靠性和效率往往直接影响产品性能。许多开发者习惯用GPIO模拟I2C总线与EEPROM通信,这种方式虽然简单直接,但当项目需要更高传输速率或更稳定的数…...

基于可信云服务滥用的钓鱼攻击机理与防御研究 —— 以 Google AppSheet 钓鱼事件为例

摘要 依托正规云平台发起的 “可信渠道钓鱼” 已成为当前社会化工程攻击的主流演进方向,传统基于域名信誉、邮件认证协议的防御机制面临系统性失效。2026 年 4 月曝光的AccountDumpling攻击行动显示,境外黑产团伙借助 Google AppSheet 低代码平台的合法邮…...

避坑指南:OpenWrt部署网心云Docker版最常见的5个网络错误及解决方法

OpenWrt部署网心云Docker版网络故障排查实战手册 当你兴致勃勃地在OpenWrt上部署网心云Docker版,准备开启边缘计算之旅时,网络问题往往会成为拦路虎。作为一名经历过无数次深夜排障的老兵,我整理了几个最常见的网络错误及其解决方案&#xff…...

BepInEx游戏插件框架:10分钟掌握Unity游戏模组开发神器

BepInEx游戏插件框架:10分钟掌握Unity游戏模组开发神器 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx游戏插件框架是Unity游戏模组开发的终极解决方案&#x…...

保姆级教程:用VS2022编译Sony Camera Remote SDK 1.12.00(附避坑指南)

从零构建Sony相机遥控开发环境:VS2022实战指南与深度排错 第一次接触Sony Camera Remote SDK时,面对压缩包里密密麻麻的文档和代码,很多开发者会感到无从下手。这份指南将带你用最新Visual Studio 2022环境完整构建SDK 1.12.00版本&#xff0…...

AISMM 2.0核心算法迭代深度解析(SITS2026闭门报告首次公开)

更多请点击: https://intelliparadigm.com 第一章:SITS2026专家:AISMM的未来演进 核心范式迁移:从静态模型到自适应智能体 AISMM(Adaptive Intelligent System Management Model)在SITS2026技术峰会上被多…...

告别Optane后,国产SCM存储级内存Xlenstor2 X2900P实战评测:真能平替吗?

国产SCM存储级内存Xlenstor2 X2900P深度评测:Optane退场后的真实替代力 当Intel宣布全面终止Optane业务时,整个存储行业都在寻找那个能填补DRAM与NAND之间鸿沟的"完美替代者"。两年过去,国产厂商大普微推出的Xlenstor2 X2900P以DWP…...

5分钟快速指南:使用WeakAuras Companion告别繁琐的手动更新

5分钟快速指南:使用WeakAuras Companion告别繁琐的手动更新 【免费下载链接】WeakAuras-Companion A cross-platform application built to provide the missing link between Wago.io and World of Warcraft 项目地址: https://gitcode.com/gh_mirrors/we/WeakAu…...

拆解特斯拉Autopilot与比亚迪DiPilot:主流车企的ADAS方案到底有何不同?

特斯拉Autopilot与比亚迪DiPilot技术全景对比:从传感器哲学到用户体验差异 当你在高速公路上开启自适应巡航时,是否思考过眼前这辆车的电子系统究竟如何理解世界?不同车企对"安全"二字的诠释差异,往往隐藏在毫米波雷达的…...

AISMM模型实施失败的3个隐性根源,92%CTO至今未察觉——今天不读,下周就可能被审计否决

更多请点击: https://intelliparadigm.com 第一章:AISMM模型与数字化转型 AISMM(Artificial Intelligence-enabled Service Maturity Model)是一种面向服务型组织的智能化成熟度评估框架,它将人工智能能力深度嵌入服务…...

基于Vue 3与FastAPI的ChatGPT Web应用脚手架:从流式对话到生产部署

1. 项目概述与核心价值 最近在GitHub上看到一个挺有意思的项目,叫“Aniuyyds/ChatGPT-website”。光看名字,你可能会觉得这又是一个基于OpenAI API的聊天网站前端,市面上类似的轮子已经多如牛毛了。但当我真正点进去,仔细研究它的…...

OR-Tools:如何用Google的运筹学引擎解决现实世界优化难题?

OR-Tools:如何用Google的运筹学引擎解决现实世界优化难题? 【免费下载链接】or-tools Googles Operations Research tools: 项目地址: https://gitcode.com/gh_mirrors/or/or-tools 面对复杂的调度排班、物流路径规划、资源分配等优化问题&#x…...

JavaScript 鼠标滚轮事件详解:监听向上/向下滑动

在 Web 开发中,监听鼠标滚轮事件(wheel)可以实现许多交互效果,例如滚动加载内容、缩放元素、切换幻灯片等。本文将详细介绍如何使用 JavaScript 监听鼠标滚轮的向上滑动和向下滑动事件,并提供完整的代码示例。1. 鼠标滚…...

如何解决Upscayl中的Vulkan兼容性问题:完整指南

如何解决Upscayl中的Vulkan兼容性问题:完整指南 【免费下载链接】upscayl 🆙 Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl Upscayl是一款免费…...

KMS智能激活工具终极指南:如何永久激活Windows和Office系统

KMS智能激活工具终极指南:如何永久激活Windows和Office系统 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款专业的智能激活脚本,专为Windows和Offic…...

在 Taotoken 控制台进行模型选型与性能初探的实操指南

在 Taotoken 控制台进行模型选型与性能初探的实操指南 面对众多大语言模型,如何选择一款适合自己应用场景的模型,是许多开发者和团队面临的首要问题。直接逐一接入不同厂商的 API 进行测试,不仅流程繁琐,还需要管理多个密钥和计费…...

Path of Building终极指南:5个技巧让流放之路Build规划变得简单高效

Path of Building终极指南:5个技巧让流放之路Build规划变得简单高效 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building是流放之路玩家必备的离…...

5步掌握kohya_ss:AMD GPU上的Stable Diffusion终极训练指南

5步掌握kohya_ss:AMD GPU上的Stable Diffusion终极训练指南 【免费下载链接】kohya_ss 项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss kohya_ss是一个基于Gradio的图形界面工具,专门用于Stable Diffusion模型的训练和微调。这个开…...