數學建模算法-day[14]

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)=N0?eλ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=e?2x+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+2x2ex??2xex

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)=e?tcost,試求下面微分方程的解。
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=?321??10?1?1?12??

求得的解為
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)=?34?e3t?21?e2t+61?32?e3t?21?e2t+65?32?e3t+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)??=?123?012?0?21???x1?(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)=x?e2+1e?3?ex+e2+1e(3e+1)?e?x?3,g(x)=e2+1e?3?ex?e2+13e2+e?e?x+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,1?i?mmax?Reλi??1?i?mmin?Reλ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=1?i?mmax?Reλi?∣/1?i?mmin?Reλ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;老板…