6.2 传染病预测问题

问题提出
世界上存在很多传染病,如何根据其传播机理预测疾病得传染范围及染病人数等,对传染病的控制意义十分重大。

1.指数传播模型
基本假设

(1) 所研究的区域是一封闭区域,在一个时期内人口总量相对稳定,不考虑人口的迁移(迁入或迁出)。
(2) ttt时刻染病人数N(t)N(t)N(t)是随时间连续变化的、可微的函数。
(3) 每个病人在单位时间内的有效接触(足以使人致病)或传染的人数为λ\lambdaλλ>0\lambda>0λ>0为常数)。

模型建立与求解

N(t)N(t)N(t)ttt时刻染病人数,则t+Δtt+\Delta tt+Δt时刻的染病人数为N(t+Δt)N(t+\Delta t)N(t+Δt)。从t→t+Δtt\to t+\Delta ttt+Δt时间内,净增加的染病人数为N(t+Δt)−N(t)N(t+\Delta t)-N(t)N(t+Δt)N(t),根据基本假设(3),有
N(t+Δt)−N(t)=λN(t)Δt N(t+\Delta t)-N(t)=\lambda N(t)\Delta t N(t+Δt)N(t)=λN(t)Δt
若记t=0t=0t=0时刻染病人数为N0N_0N0,则由基本假设(2),在上式两端同时除以Δt\Delta tΔt,并令Δt→0\Delta t\to 0Δt0,得传染病染病人数的微分方程预测模型:
{dN(t)dt=λN(t),t>0,N(0)=N0.(6.13) \left\{\begin{aligned}& \frac{dN(t)}{dt}=\lambda N(t),t>0,\\& N(0)=N_0. \end{aligned}\right.\tag{6.13} dtdN(t)=λN(t),t>0,N(0)=N0.(6.13)
利用mathematica就可以求出该模型的解析解为
N(t)=N0eλt. N(t)=N_0e^{\lambda t}. N(t)=N0eλt.

DSolve[{n'[t] == \[Lambda]*n[t], n[0] == n0}, n[t], t]

结果分析与评价

模型结果显示传染病的传播是按指数函数。。。

这一节主播学过了,不想过多介绍,有空了再说

6.3 常微分方程的求解

这一节在韩中庚老师的书里是介绍了matlab的,不过本人matlab不是非常适合这种符号计算的,于是本人在这里同时也介绍mathematica的用法,例子还是书上的。

6.3.1 常微分方程的符号解

Matlab符号运算工具箱提供了功能强大的求常微分方程符号解函数dsolve,Methematica提供了功能强大的求常微分方程符号解函数DSolve

例 6.3 求解微分方程y′=−2y+2x2+2x,y(0)=1y'=-2y+2x^2+2x,y(0)=1y=2y+2x2+2x,y(0)=1

求得的符号解为y=e−2x+x2y=e^{-2x}+x^2y=e2x+x2

mathematica代码

DSolve[{y'[x] == -2*y[x] + 2*x^2 + 2*x, y[0] == 1}, y[x], x]

matlab代码

clc;clear
syms y(x)
y=dsolve(diff(y)==-2*y+2*x^2+2*x,y(0)==1)

例 6.4 求解二阶线性微分方程y′′−2y′+y=ex,y(0)=1,y′(0)=−1y''-2y'+y=e^x,y(0)=1,y'(0)=-1y′′2y+y=ex,y(0)=1,y(0)=1

求得二阶线性微分方程的解为y=ex+x2ex2−2xexy=e^x+\frac{x^2e^x}{2}-2xe^xy=ex+2x2ex2xex

mathematica代码

DSolve[{y''[x] - 2 y'[x] + y[x] == Exp[x], y[0] == 1, y'[0] == -1}, y[x], x]

matlab代码

clc;clear
syms y(x)
dy=diff(y);
y=dsolve(diff(y,2)-2*diff(y)+y==exp(x),y(0)==1,dy(0)==-1)

例 6.5 已知输入信号为u(t)=e−tcos⁡tu(t)=e^{-t}\cos tu(t)=etcost,试求下面微分方程的解。
y(4)(t)+10y(3)(t)+35y′′(t)+50y′(t)+24y(t)=u′′(t),y(0)=0, y′(0)=−1, y′′(0)=1, y′′′(0)=1 y^{(4)}(t) + 10 y^{(3)}(t) + 35 y''(t) + 50 y'(t) + 24 y(t) = u''(t), \quad y(0) = 0,\ y'(0) = -1,\ y''(0) = 1,\ y'''(0) = 1 y(4)(t)+10y(3)(t)+35y′′(t)+50y(t)+24y(t)=u′′(t),y(0)=0, y(0)=1, y′′(0)=1, y′′′(0)=1

mathematica代码

DSolve[{D[y[t], {t, 4}] + 10 y'''[t] + 35 y''[t] + 50 y'[t] + 24 y[t] == u''[t], y[0] == 0, y'[0] == -1, y''[0] == 1, y'''[0] == 1}, y[t], t]

matlab代码

clc;clear
syms y(t) u(t)
dy=diff(y,1);
dy2=diff(y,2);
dy3=diff(y,3);
u(t)=exp(-t)*cos(t);
y=dsolve(diff(y,4)+10*diff(y,3)+35*diff(y,2)+50*diff(y,1)+24*y==diff(u,2),y(0)==0,dy(0)==-1,dy2(0)==1,dy3(0)==1)

下面给出求常微分方程组符号解的例子。

例6.6 试求解下列柯西问题:
{dxdt=Ax,x(0)=[1,1,1]T \left\{\begin{aligned}& \frac{dx}{dt}=Ax,\\& x(0)=[1,1,1]^T \end{aligned}\right. dtdx=Ax,x(0)=[1,1,1]T
的解,其中x(t)=[x1(t),x2(t),x3(t)]T,A=[3−1120−11−12]x(t)=[x_1(t),x_2(t),x_3(t)]^T,\boldsymbol{A} = \begin{bmatrix} 3 & -1 & 1 \\ 2 & 0 & -1 \\ 1 & -1 & 2 \end{bmatrix}x(t)=[x1(t),x2(t),x3(t)]T,A=321101112

求得的解为
x(t)=[43e3t−12e2t+1623e3t−12e2t+5623e3t+13] \boldsymbol{x}(t) = \begin{bmatrix} \dfrac{4}{3} \mathrm{e}^{3t} - \dfrac{1}{2} \mathrm{e}^{2t} + \dfrac{1}{6} \\[1em] \dfrac{2}{3} \mathrm{e}^{3t} - \dfrac{1}{2} \mathrm{e}^{2t} + \dfrac{5}{6} \\[1em] \dfrac{2}{3} \mathrm{e}^{3t} + \dfrac{1}{3} \end{bmatrix} x(t)=34e3t21e2t+6132e3t21e2t+6532e3t+31

本人不会用mathematica求这类问题了,555.没学过

matlab代码

clc;clear
syms x(t) [3,1]  %定义符号向量,x(t)后有空格
A=[3 -1 1;2 0 -1;1 -1 2];
[s1,s2,s3]=dsolve(diff(x)==A*x,x(0)==ones(3,1))

例6.7 试解初值问题
[x1′(t)x2′(t)x3′(t)]=[10021−2321][x1(t)x2(t)x3(t)]+[00etcos⁡2t],[x1(0)x2(0)x3(0)]=[011] \begin{bmatrix} x_1'(t) \\ x_2'(t) \\ x_3'(t)\end{bmatrix}=\begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & -2 \\ 3 & 2 & 1 \end{bmatrix} \begin{bmatrix} x_1(t) \\ x_2(t) \\ x_3(t) \end{bmatrix} + \begin{bmatrix} 0 \\ 0 \\ \mathrm{e}^t \cos 2t \end{bmatrix}, \quad \begin{bmatrix} x_1(0) \\ x_2(0) \\ x_3(0) \end{bmatrix} =\begin{bmatrix} 0 \\ 1 \\ 1 \end{bmatrix} x1(t)x2(t)x3(t)=123012021x1(t)x2(t)x3(t)+00etcos2t,x1(0)x2(0)x3(0)=011
所得的解为

x(t)=[x1(t)x2(t)x3(t)]=[0et[cos⁡(2t)−sin⁡(2t)−tsin⁡(2t)2]et[cos⁡(2t)+5sin⁡(2t)4+tcos⁡(2t)2]] \boldsymbol{x}(t) = \begin{bmatrix} x_1(t) \\ x_2(t) \\ x_3(t) \end{bmatrix} =\begin{bmatrix} 0 \\ \displaystyle \mathrm{e}^t \left[ \cos(2t) - \sin(2t) - \frac{t \sin(2t)}{2} \right] \\ \displaystyle \mathrm{e}^t \left[ \cos(2t) + \frac{5 \sin(2t)}{4} + \frac{t \cos(2t)}{2} \right] \end{bmatrix} x(t)=x1(t)x2(t)x3(t)=0et[cos(2t)sin(2t)2tsin(2t)]et[cos(2t)+45sin(2t)+2tcos(2t)]

matlab代码

clc;clear
syms x(t) [3,1]
A=[1 0 0;2 1 -2;3 2 1];
[s1,s2,s3]=dsolve(diff(x)==A*x+[0,0,exp(t)*cos(2*t)]',x(0)==[0,1,1]')

例6.8 试求常微分方程组
{f′′+g=3g′+f′=1 \left\{\begin{aligned}& f''+g=3\\& g'+f'=1 \end{aligned}\right. {f′′+g=3g+f=1
在初边值条件f′(1)=0,f(0)=0,g(0)=0f'(1)=0,f(0)=0,g(0)=0f(1)=0,f(0)=0,g(0)=0时的解。

求得的解为
f(x)=x−e−3e2+1ex+e(3e+1)e2+1e−x−3,g(x)=e−3e2+1ex−3e2+ee2+1e−x+3. f(x) = x - \frac{\mathrm{e} - 3}{\mathrm{e}^2 + 1} \mathrm{e}^x + \frac{\mathrm{e}(3\mathrm{e} + 1)}{\mathrm{e}^2 + 1} \mathrm{e}^{-x} - 3,\\ g(x) = \frac{\mathrm{e} - 3}{\mathrm{e}^2 + 1} \mathrm{e}^x - \frac{3\mathrm{e}^2 + \mathrm{e}}{\mathrm{e}^2 + 1} \mathrm{e}^{-x} + 3. f(x)=xe2+1e3ex+e2+1e(3e+1)ex3,g(x)=e2+1e3exe2+13e2+eex+3.

matlab代码

clc;clear
syms f(x) g(x)
df=diff(f,1);
[f,g]=dsolve(diff(f,2)+g==3,diff(g)+diff(f)==1,df(1)==0,f(0)==0,g(0)==0)

mathematica代码

DSolve[{f''[x] + g[x] == 3, g'[x] + f'[x] == 1, f'[1] == 0, f[0] == 0,g[0] == 0}, {f[x], g[x]}, x]

6.3.2 初值问题的Matlab数值解

matlab的工具箱提供了几个解常微分方程数值解的函数,如ode45,ode23,ode113,其中:ode45采用四五阶龙格-库塔方法(以下简称RK方法),是解非刚性常微分方程的首选方法;ode23采用二三阶RK方法;ode113采用的是多步法,效率一般比ode45高。

在化学工程及自动控制等领域中,所涉及的常微分方程组初值问题常常是所谓的“刚性”问题。具体地说,对一阶线性常微分方程组
dydx=Ay+ϕ(x),(6.26) \frac{dy}{dx}=Ay+\phi(x),\tag{6.26} dxdy=Ay+ϕ(x),(6.26)
式中:y,ϕ∈Rm;Ay,\phi\in R^m;Ay,ϕRm;Ammm阶方阵。若矩阵AAA的特征值λi(i=1,2,⋯ ,m)\lambda_i(i=1,2,\cdots,m)λi(i=1,2,,m)满足关系
{Re⁡λi<0,i=1,2,⋯ ,m,max⁡1⩽i⩽m∣Re⁡λi∣≫min⁡1⩽i⩽m∣Re⁡λi∣ \begin{cases} \operatorname{Re}\lambda_i < 0, i = 1, 2, \cdots, m, \\ \max\limits_{1 \leqslant i \leqslant m} |\operatorname{Re}\lambda_i| \gg \min\limits_{1 \leqslant i \leqslant m} |\operatorname{Re}\lambda_i| \end{cases} {Reλi<0,i=1,2,,m,1immaxReλi1imminReλi
则称方程组(6.26)为刚性方程组或stiff方程组,称数
s=max⁡1⩽i⩽m∣Re⁡λi∣/min⁡1⩽i⩽m∣Re⁡λi∣ s=\max\limits_{1 \leqslant i \leqslant m} |\operatorname{Re}\lambda_i| / \min\limits_{1 \leqslant i \leqslant m} |\operatorname{Re}\lambda_i| s=1immaxReλi∣/1imminReλi
为刚性比。理论上的分析表明,求解刚性问题所用的数值方法最好是对步长hhh不做任何限制。

Matlab的工具箱提供连几个解刚性常微分方程的功能函数,如ode15s,ode23s,ode23t,ode23tb。

下节将简单介绍ode45求数值解的用法。今天就到这里吧。

参考文献
[1] 司守奎,孙玺青 数学建模算法与应用第3版[M]

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux救援模式之简介篇

什么是救援模式&#xff1f;救援模式提供了一个最小的Linux环境&#xff0c;通常只加载最基本的系统组件&#xff0c;允许管理员&#xff1a;修复损坏的系统恢复丢失的文件修改配置文件重置密码检查磁盘错误重新安装引导加载程序如何进入救援模式&#xff1f;1. 通过GRUB菜单进…

C++20实战FlamingoIM开发

C++20 与 Flamingo IM 实例 C++20 引入了许多新特性,如概念(Concepts)、协程(Coroutines)、范围(Ranges)等。Flamingo IM 是一个即时通讯项目,结合 C++20 的特性可以提升代码的可读性和性能。以下是基于 C++20 和 Flamingo IM 的实例。 协程实现异步网络通信 使用 C…

FPGA实现SRIO高速接口与DSP交互,FPGA+DSP异构方案,提供3套工程源码和技术支持

目录1、前言&#xff1a;SRIO在FPGADSP架构中的作用工程概述免责声明2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的FPGADSP异构方案我这里已有的 GT 高速接口解决方案3、工程详细设计方案工程设计原理框图FPGA端工程源码FPGA端SRIO从…

记一次导出pdf表单引发的问题

需求&#xff1a;点击按钮&#xff0c;将相关内容生成pdf下载下来问题1&#xff1a;之前项目封装好的下载文件方法不携带token 我尝试新写了一个方法&#xff0c;携带token问题2&#xff1a;此时出现了跨域问题 我分别尝试在controller类上和方法上加CrossOrigin(origins “*”…

AI-调查研究-39-多模态大模型量化 微调与量化如何协同最大化性能与效率?

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; AI炼丹日志-30-新发布【1T 万亿】参数量大模型&#xff01;Kim…

基于Dify构建本地化知识库智能体:从0到1的实践指南

技术选型与方案设计 在企业级AI应用落地中&#xff0c;本地化知识库智能体已成为提升业务效率的核心工具。Dify作为低代码AI应用开发平台&#xff0c;结合RAG&#xff08;检索增强生成&#xff09;技术&#xff0c;可快速构建私有化智能问答系统。以下是关键技术选型与架构设计…

C++与C#实战:FFmpeg屏幕录制开发指南

基于FFmpeg使用C#和C++开发 以下是一些基于FFmpeg使用C#和C++开发的简单屏幕录制软件示例,涵盖不同平台和功能需求。这些示例可作为学习或项目开发的起点。 使用C++开发FFmpeg屏幕录制 基础屏幕录制(Windows) #include <libavcodec/avcodec.h> #include <libav…

「源力觉醒 创作者计划」_DeepseekVS文心一言代码简单测试

一起来轻松玩转文心大模型吧一文心大模型免费下载地址&#xff1a;https://ai.gitcode.com/theme/1939325484087291906小插曲发现自己的上一篇文章的被盗了&#xff0c;而且是在deepseek上检索资料发现的&#xff0c;最让我破防的点在于&#xff0c;它完完全全搬运我的文章&…

服务器数据恢复—RAID上层部署的oracle数据库数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某公司一台服务器上有一组由24块FC硬盘组建的raid。 服务器出现故障&#xff0c;无法正常工作。 经过初步检测&#xff0c;管理员发现导致服务器故障的原因是raid中有两块硬盘掉线&#xff0c;导致卷无法挂载。服务器数据恢复过程&…

链表迭代翻转|二分|状态压缩bfs|数学

&#x1f36d;lc2039.bfs空闲时间把网络抽象成图&#xff0c;用 BFS 算出 0 号节点到各节点的最短距离 d 。结合每个节点发消息的间隔 patience[v] &#xff0c;先算消息往返需要 2d 秒。再看 2d 和 patience[v] 的关系若 2d 能被 patience[v] 整除&#xff0c;最后一条消息已发…

Vulnhub 02-Breakout靶机渗透攻略详解

一、下载靶机 下载地址&#xff1a;https://download.vulnhub.com/empire/02-Breakout.zip 下载好后使用VM打开&#xff0c;将网络配置模式改为net&#xff0c;防止桥接其他主机干扰&#xff08;桥接Mac地址也可确定主机&#xff09;。 二、发现主机 使用nmap扫描没有相应的…

数据结构(5)单链表算法题(中)

一、合并两个有序链表 1、题目描述 https://leetcode.cn/problems/merge-two-sorted-lists 2、算法分析 这道题和之前的合并两个有序数组的思路很像&#xff0c;创建空链表即可&#xff0c;可以很轻松地写出如下代码。 /*** Definition for singly-linked list.* struct L…

园区网络搭建实验

跟着B站上的老师&#xff0c;用华为ensp模拟搭建了一个园区网络&#xff0c;感觉挺好玩的虽然老师说这个很简单&#xff0c;但还是比我公司里的拓扑复杂LSW3配置上行端口3/4配置为串口&#xff0c;下行端口1/2为access口用于连接终端[Huawei]vlan batch 10 20 --创建vlan [Hua…

【tips】小程序css ➕号样式

上传的时候一般页面显示的是加号。不用图片可以用样式实现&#xff1b;wxss&#xff1a; /* 加号 */ .plus-box {width: 91rpx;height: 91rpx;border-radius: 6rpx;background: rgba(204, 204, 204, 1);position: relative; /* 用于定位加号 */ }/* 水平线条 */ .plus-box::bef…

MCU中的GPIO(通用输入/输出)是什么?

MCU中的GPIO(通用输入/输出)是什么? GPIO(General-Purpose Input/Output,通用输入/输出)是微控制器(MCU)或嵌入式系统中的一种可编程数字接口,用于与外部设备进行简单的高低电平信号交互。它是最基础、最常用的外设之一,广泛应用于按键检测、LED控制、传感器通信等场…

echarts 之 datazoom Y轴缩放

如果想 y 轴也能够缩放&#xff0c;那么在 y 轴上也加上 dataZoom 组件const dataZoomY ref([{type: "slider",yAxisIndex: 0,startValue: 0,endValue: 9,filterMode: "empty",width: 10,height: "80%",showDataShadow: false,left: 5,},{type:…

(四)Python基础入门-核心数据结构

概览 列表操作&#xff08;增删改查/切片/推导式&#xff09;元组特性与不可变性字典操作&#xff08;键值对/嵌套字典&#xff09;集合运算&#xff08;交集/并集/差集&#xff09; Python的核心数据结构是编程的基石&#xff0c;本文将系统讲解列表、元组、字典和集合四大数…

FCN语义分割算法原理与实战

FCN语义分割算法原理与实战 本文若有舛误&#xff0c;尚祈诸君不吝斧正&#xff0c;感激不尽。 前提概要&#xff1a;所使用的材料来源 对应视频材料&#xff1a;FCN语义分割 虽然可能比较简单但是奠定了使用卷积神经网络做语义分割任务的基础。 语义分割&#xff1a;输入图片…

堆的理论知识

1 引入1.1 普通二叉树不适合用数组存储的原因普通二叉树的结构是 “不规则” 的 —— 节点的左右孩子可能缺失&#xff0c;且缺失位置无规律。 若用数组存储&#xff08;按 “层次遍历顺序” 分配索引&#xff0c;即根节点放索引 0&#xff0c;根的左孩子放 1、右孩子放 2&…

【python实用小脚本-161】Python Json转Xml:告别手敲标签——一行命令把配置秒变可导入的XML

Python Json转Xml&#xff1a;告别手敲标签——一行命令把配置秒变可导入的XML 关键词&#xff1a;json转xml、零依赖脚本、自动生成标签、小白友好、跨平台故事开场&#xff1a;周五下午&#xff0c;老板又甩来“配置翻译”任务 17:55&#xff0c;你正准备关机&#xff0c;老板…