layout | title | categories | tags | keywords | description | order |
---|---|---|---|---|---|---|
post |
【数值计算】数值常微分方程 |
0x55_数值计算 |
5503 |
为什么?
- 很多情况下,不存在解析解
- 即使存在解析解,大多数不是显式解(显示解:用有限个初等函数表示出来)
- 即使存在显式解,未必能从显式解得出数值解。例如,方程
$u'=1-2tu,u(0)=0$ ,解是$u(t)=e^{-t^2}\int_0^te^{\tau^2}d\tau$ ,这个解析解也难以算出数值解。
方法论
- 区域划分。把定义域划分为若干小区间
- 微分方程离散。用原来的微分方程构建离散点的递推公式或方程
- 初始和边界条件处理。2步骤的方程组不够,初始和边界条件也作为补充条件
- 离散系统的性态研究。
- 是否可解。存在性、唯一性问题
- 收敛性。收敛速度如何
- 稳定性。
- 递推计算,或者解线性方程,得到数值解
误差来自
- 模型误差。把实际问题归结为模型时做的简化。
- 观测误差。模型需要的系数、值来源于测量,由于客观条件和仪器产生的误差。
- 截断误差。模型离散化时,舍弃了一些次要项,产生的误差
- 舍入误差。计算机计算时的精度产生的误差。
问题: $$\left {\begin{array}{ll} u'=f(t,u), & t_0<t\leq T \ u(t_0) = a \end{array}\right.$$
Euler 法 是一种 递推法 ,递推公式: $$\left {\begin{array}{ll} u_{m+1} = u_m + hf(t_m, u_m) \ u_0 = u(t_0) = a \end{array}\right.$$
3种理解:
- 微分角度
$u'\approx \dfrac{u(t+h)-u(t)}{h}$ - 积分角度
$u(t+h)-u(t)=\int_t^{t+h}f(\tau,u(\tau))d\tau \approx hf(t,u(t))$ - 幂级数展开
$u(t+h) = u(t) +hu'(t)+ \dfrac{h^2}{2!}u''(t)+...$
改进的 Euler 法, $$\left {\begin{array}{ll} u_{m+1} = u_m + h/2[f(t_m, u_m) + f(t_{m+1}, u_{m+1})] & m=0,1,...,N-1\ u_0 = u(t_0) = a \end{array}\right.$$