方程模型
微分方程建模
微分方程建模将实际问题的数学描述转化为微分方程的求解问题。
方法步骤
- 建系
- 找基本规律
- 列方程和定解条件。
列方程的常见方法
- 按规律直接列方程
- 微元分析法与任意区域上取积分法
- 模拟近似法
微分方程建模用例
传染病模型
SIS/SIR
经济增长模型
Douglas生产函数
资金与劳动力的最佳分配
经济生产率增长的条件
正规战和游击战
药物在体内的分布与排除
- 快速静脉注射
- 恒速静脉滴注
- 口服或肌肉注射
香烟过滤嘴的作用
人口的预测和控制
Malthus模型
阻滞增长模型Logisticm模型
烟雾的扩散和消失
万有引力:发射卫星为什么使用三级火箭
稳定性模型(稳定状态模型)
动态过程的变化规律一般要用微分方程建立的动态模型来描述。
建模的target:不在于求解动态过程的瞬时的性态,而是研究某种意义下稳定状态的特征,即时间充分长以后动态过程的变化趋势。
即分析这种稳定与不稳定的规律,而是利用微分方程稳定性理论进行研究。
稳定性的相关理论。
#todo
再生资源的管理和开发(捕鱼业)
资源增长模型
Logistic模型:种群在自然环境中生存时,数量的演变遵循Logistic规律
资源开发模型
Scheafer模型
经济效益模型
Volterra模型(弱肉强食)
种群的相互竞争/相互依存/…
常微分方程的解法
完成微分方程的建立后,需要求出方程的解来说明实际现象。
而高数中,只有线性常系数微分方程且自由项是某些特殊类型的函数,才可以得到解。
故使用数值解法,解决微分方程的解相关问题。
微分方程的解,就是求解一个满足次微分方程的函数。
微分方程的离散化
$$
\begin{cases}\frac{dy}{dx}=f(x,y)&&a\le x \le b\y(a)=y_0\end{cases}
$$
假定函数连续且关于y满足Lipschitz条件。
故微分方程的解必定存在且唯一。
离散化方法
- 差商近似导数
- 数值积分方法
- Taylor多项式近似(不仅可以得到求数值解的公式,且可以估计截断误差)
Euler方法
改进的Euler方法
补充Matlab的工具箱中Euler方法的功能函数。
对于简单的一阶方程的初值问题
$$
\begin{cases}y’=f(x,y)\y(x_0)=y_0\end{cases}
$$
改进的Euler公式,编写改进的Euler方法函数eulerpro.m
改进的Euler公式为:
$$
\begin{cases}y_p=y_n+hf(x_n,y_n)\y_q=y_n+hf(x_n+h,y_p)\y_{n+1}=\frac{1}{2}(y_p+y_q)\end{cases}
$$
Runge-Kutta方法(RK方法)
线性多步法
一阶微分方程组与高阶微分方程的数值解法
初值问题的MATLAB求解和符号解。
7.1Matlab数值解
非刚性常微分方程的解法
Matlab提供了几个解 非刚性常微分方程的功能函数,如ode45,ode23,ode113.
Ode23,ode45,ode113的使用
[t,y]=solver('F',tspan,y0)
这里solver为ode45,ode23,ode113,输入参数 F 是用M文件定义的微分方程 y‘= f (x, y)右端的函数。tspan=[t0,tfinal]是求解区间(自变量x的值),y0是初值列向量。
刚性常微分方程解法
Matlab的工具箱提供了几个解刚性常微分方程的功能函数,如ode15s,ode23s, ode23t,ode23tb,这些函数的使用同上述非刚性微分方程的功能函数。
高阶微分方程$y^(n)=f(t,y,y’,…,y^(n-1))$的解法
例子:考虑初值问题
$$
y’’’-2y’’-y’y=0\
y(0)=0 y’(0)=1 y’’(0)=-1
$$
要现将初值问题改写成$Y’=F(t,Y),Y(0)=Y_0$,其中$Y_0$是初值。
例子:求解van der Pol
方程
先编写待解决的function,再套用matlab的模型。
常微分方程的解析解
Matlab提供了强大的求解常微分方程的符号运算dsolve
符号D表示对变量的求导,Dy表示对y的一阶导数,当需要求变量的n阶导数时,用Dn表示,D4y表示对变量y求4阶导数。
- 常微分方程的通解
- 常微分方程的初边值问题
- 求解常微分方程组
- 求解线性常微分方程组
- 一阶齐次线性微分方程组。
【Attention!】注意区分边值问题和初值问题的区别!
初值问题可以看成运动轨迹的起点,边值问题可以看成运动轨迹的边界。
边值问题的matlab解法
#todo
代码待跑。