【数值计算】数值常微分方程



2021年06月19日    Author:Guofei

文章归类: 0x55_数值计算    文章编号: 5503

版权声明:本文作者是郭飞。转载随意,但需要标明原文链接,并通知本人
原文链接:https://www.guofei.site/2021/06/19/numerical_ode.html


为什么?

  1. 很多情况下,不存在解析解
  2. 即使存在解析解,大多数不是显式解(显示解:用有限个初等函数表示出来)
  3. 即使存在显式解,未必能从显式解得出数值解。例如,方程 $u’=1-2tu,u(0)=0$,解是 $u(t)=e^{-t^2}\int_0^te^{\tau^2}d\tau$,这个解析解也难以算出数值解。

方法论

  1. 区域划分。把定义域划分为若干小区间
  2. 微分方程离散。用原来的微分方程构建离散点的递推公式或方程
  3. 初始和边界条件处理。2步骤的方程组不够,初始和边界条件也作为补充条件
  4. 离散系统的性态研究。
    • 是否可解。存在性、唯一性问题
    • 收敛性。收敛速度如何
    • 稳定性。
  5. 递推计算,或者解线性方程,得到数值解

误差来自

  1. 模型误差。把实际问题归结为模型时做的简化。
  2. 观测误差。模型需要的系数、值来源于测量,由于客观条件和仪器产生的误差。
  3. 截断误差。模型离散化时,舍弃了一些次要项,产生的误差
  4. 舍入误差。计算机计算时的精度产生的误差。

Eluer法

问题: \(\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种理解:

  1. 微分角度 $u’\approx \dfrac{u(t+h)-u(t)}{h}$
  2. 积分角度 $u(t+h)-u(t)=\int_t^{t+h}f(\tau,u(\tau))d\tau \approx hf(t,u(t))$
  3. 幂级数展开 $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.\)


您的支持将鼓励我继续创作!