【学习网址:MOOC---郑州轻工业大学---数学建模与实验】数学建模专栏
- 【第1、2章】【概述、软件介绍】
- 【第3章】【数据处理方法】
- 【第4章】【规划模型】
- 【第5章】【图与网络模型】
- 【第6章】【微分方程模型】
- 【各个章节---作业题解析】
目 录
6.1 微分方程模型介绍
微分方程模型介绍
一、建立微分方程
二、微分方程的解法
二,微分方程的解法之解析方法
二,微分方程的解法之数值方法
Matlab软件计算数值解
6.2 微分方程模型的分析方法
微分方程的解法
非线性微分方程的线性化
数值分析方法
6.3 微分方程模型的数值模拟
考虑Lorenz模型
地中海鲨鱼问题
食饵—捕食系统的数学模型
6.4 传染病问题的建模和分析
模型1 已感染人数i(t)
模型2 SI模型
模型3 SIS模型
模型4 SIR模型
6.5 经济增长模型
道格拉斯(Douglas)生产函数
资金与劳动力的最佳分配(静态模型)
经济(生产率)增长的条件(动态模型)
Bernoulli方程
6.6 人口增长预测和控制模型
1、人口发展方程
2、连续型人口发展模型
3、模型求解
4、讨论
人口发展方程和生育率
人口指数---常用函数
微分方程在现代科学的每一个领域都有广泛的应用,比如力学、运动学、电学、经济学、生物学、自动控制、化学等等,都可以看到大量利用微分方程表示的事物变化规律,这也体现了微分方程的重要性。
在高等数学中我们对微分方程有一定的认识,比如怎样求解一些简单的微分方程,对于一些细心的同学,可能想到对于复杂的微分方程的求解是一个重要的问题,但是,可能忽略一个同样重要的问题,那就是如何建立微分方程。同样是方程,其建立的过程一定程度上和前一部分方程的建立有相似之处,但不同之处是微分方程的建立过程中一般会涉及到变化率的概念(往往和时间有关)。比如运动学中速度是位移对时间的变化率,加速度是速度的变化率,电学中电流是电量的变化率,人口学中人口增长率是人口数对时间的 变化率等等。
分离变量法:求解微分方程(涉及时间变化) 化学反应、打气运动、人口数量变化、传染病发展规律
常微分方程、偏微分方程 滞后现象
差分方程 离散化,例:时间->一个单位一个单位地变化、天、年... 相邻不同节点之间的迭代关系
下面用一些常见的问题说明微分方程建模的基本方法。
例子1:放射性物质的衰变。
物理学家发现,放射性物质衰变的速度和物质的量成正比。
例子2:人口(生物数量)增长问题。 鱼类、微生物、两种群之间的数量变化关系、人口数量(迁入、迁出)
通过观察发现,人口增长和现有人口数量成正比。
例子3:热传导问题。
牛顿定理表述热传导为:高温物体热量的散失速度和温度差成比例。
例子4:物体的运动问题。
物体运动可以用牛顿三大定律描述。
例子5:万有引力定理。
开普勒发现地球沿着以太阳为焦点的椭圆轨道运动,运动速度满足单位时间所扫过的面积相等。
例子6:传染病问题。
医学经验表明,传染病有几个关键要素,易感人群、带病人群,而传染往往通过两种人群的接触导致,不仅和易感人群和带病人群有关,还有他们 的接触有关。
例子7:战争问题。
交战双方的伤亡虽然比较复杂,但是大致遵循这样一些规律,比如武器的杀伤力、防御力,还有双方的人数对比等因素。
解析方法
对于一些比较简单的微分方程,可以通过一些数学技巧解出,比如高等数学上接触的一些方程:可分离变量的方程、齐次方程、一阶线性微分方程、一些特殊的二阶常系数微分方程等等。
数值方法
能得到解析解的微分方程毕竟只是少数,对于从实际问题中提取的大量微分方程,无法得到方程的解析解,数值方法可以说是实际问题中必不可少的手段。
常见微分方程模型
关于微分方程的解,就是满足方程的一个函数族(或者一条曲线族)。我们又称其为微分方程的通解。用得更加广泛的是满足特定条 件的解,我们称其为特解。比如
c1... 微分方程的初始值 var1:微分方程涉及的变量
没有初始条件,求出的解 一般是 通解(Dy)。 指定变量为x,求出的方程 自变量为x,否则为t。
对于大量的微分方程,只能得到其数值解,一般而言,得到的解是方程的一个特解的近似。求微分方程数值解的方法很多,比如:欧拉法、龙格—库塔法等。其基本思想就是通过已知点得到函数值,并用该函数值代替一个小区间上函数的导数,得到在该区间上的一条直线,并用该直线作为方程特解的近似。有兴趣的同学可以参考微分方程数值解方面的著作。
solver 求解器 常用: ode23(运算速度快)、ode45(精度高)最常用。 ode15s(针对 刚性问题) 'f' 或者 @f
范例
范例
实际问题简化 --> 微分方程
function f = weif(x,y) f = -y+x+1; [x,y]=ode23('weif', [0, 1], 1) plot(x, y, 'r'); hold on ezplot('x+exp(-x)',[0, 1])
% (1)编写M文件(文件名为 vdpol.m): function yp = vdpol(t,y); global a; yp = [y(2);a*(1-y(1)^2)*y(2)-y(1)]; % (2)编写程序如下:(vdj.m) global a; % 全局变量 a=1; [t,y]=ode23('vdpol',[0,20],[3,0]); y1=y(:,1); % 原方程的解 y2=y(:,2); plot(t,y1,t,y2,'--') % y1(t),y2(t) 曲线图 pause, plot(y1,y2),grid, % 相轨迹图,即y2(y1)曲线
% 1、 lorenz1.m function xdot = lorenz1(t,x) xdot=[-3*(x(1)-x(2)) -x(1)*x(3)+26.5*x(1)-x(2) -x(3)+x(2)*x(1)]; % 2、ltest.m x0=[0.0 1.0 0]'; [t,x]=ode45('lorenz1',[0,100],x0); % 更改变量区间[0,10] plot(t,x(:,1),'-',t,x(:,2),'*',t,x(:,3),'+') figure; plot3(x(:,1),x(:,2),x(:,3)),grid on
观察结果
1、该曲线包含两个“圆盘”,每一个都是由螺线形轨道构成。某些轨道几乎是垂直地离开圆盘中一个而进入另一个。
2、随着t的增加,x(t)先绕一个圆盘几圈,然后“跳”到另一个圆盘中。绕第二个圆盘几圈,又跳回原来的圆盘。并以这样的方式继续 下去,在每个圆盘上绕的圈数是随机的。
思考:该空间曲线与初始点x0的选择有关吗?
1)x0=[0 0.1 0.1]‘;[t0,tf]=[0,30];解向量y
2)x00=[0.01 0.11 0.11]‘;[t0,tf]=[0,30];解向量x y – x = (y1-x1,y2-x2,y3-x3)。
注:这是这两个向量必须是同维数, 并且所取的时间节点应该相同。解决的办法是将[t0,tf]直接定义为如下的形式,比如0:0.1:30。
想:战争为什么使鲨鱼数量增加?是什么原因?
因为战争使捕鱼量下降,食用鱼增加,显然鲨鱼也随之增加。
但为何鲨鱼的比例大幅增加呢?生物学家Ancona无法解释这个现象,于是求助于著名的意大利数学家V.Volterra,希望建立一个食饵—捕食系统的数学模型,定量地回答这个问题。
该模型反映了在没有人工捕获的自然环境中食饵与捕食者之间的制约关系,没有考虑食饵和捕食者自身的阻滞作用,是Volterra提出的最简单的模型。
给定一组具体数据,用matlab软件求解。
食饵 :;
捕食(鲨鱼):;
编制程序如下:
% 1、建立m-文件shier.m如下: function dx=shier(t,x) dx=zeros(2,1); dx(1)=x(1)*(1-0.1*x(2)); dx(2)=x(2)*(-0.5+0.02*x(1)); % 2、建立主程序shark.m如下: [t,x]=ode45('shier',[0 15],[25 2]); plot(t,x(:,1),'-',t,x(:,2),'*') figure; plot(x(:,1),x(:,2))
等式两边,同时除以△t,△t趋于0时 --> di/dt =
初始条件:0时刻,i(0) =
i随时间t的变化规律
di/dt:单位时间内,被感染者的变化率。
偏微分方程
F(0, t) = 0:在t时刻,年龄<0的人数(未出生的人数);F(, t) = 0:在t时刻,年龄<的人数(:人的最高年龄)
p(r, 0):人口小于r的人口密度; p(0, t) = f(t):在t时刻,未出生的人口密度为f(t)
在社会安定的局面下和不太长的时间内,死亡率大致与时间无关,近似假设μ (r, t)=μ (r),死亡率只与年龄有关。