https://github.com/gustavdelius/NumericalAnalysis2024/blob/74346bc0aa2135002f67432223a11aa4718e7a80/nmODE.qmd#L4
本章主要介绍了常微分方程(ODE) 的数值解法,重点讨论了如何通过数值方法近似求解初始值问题(IVP)和边界值问题(BVP)。由于许多微分方程无法通过解析方法求解,数值方法成为了解决这些问题的关键工具。以下是本章的主要内容总结:
-
常微分方程简介:
- 常微分方程是描述函数及其导数之间关系的方程。通常,微分方程的解不唯一,需要通过初始条件或边界条件来确定唯一解。
- 初始值问题(IVP)和边界值问题(BVP)是两类常见的微分方程问题,分别通过初始条件和边界条件来确定解。
-
数值解法的基本思想:
- 数值解法的目标是通过离散化时间域,逐步逼近微分方程的解。常见的数值解法包括欧拉法、中点法和龙格-库塔法等。
- 数值解法的核心思想是通过近似导数,逐步推进解的计算。
-
欧拉法(Euler’s Method):
- 欧拉法是最简单的数值解法,通过当前点的斜率来近似下一个点的解。其公式为:
xn+1=xn+hf(tn,xn) x_{n+1} = x_n + h f(t_n, x_n) xn+1=xn+hf(tn,xn)
其中,( h ) 是时间步长,( f(t_n, x_n) ) 是微分方程的右端函数。 - 欧拉法的误差阶数为 ( \mathcal{O}(h) ),适用于简单的微分方程,但在高曲率区域误差较大。
- 欧拉法是最简单的数值解法,通过当前点的斜率来近似下一个点的解。其公式为:
-
中点法(Midpoint Method):
- 中点法通过在当前点进行半步推进,计算中点处的斜率,然后使用该斜率进行全步推进。其公式为:
xn+1=xn+hf(tn+h2,xn+h2f(tn,xn)) x_{n+1} = x_n + h f\left(t_n + \frac{h}{2}, x_n + \frac{h}{2} f(t_n, x_n)\right) xn+1=xn+hf(tn+2h,xn+2hf(tn,xn)) - 中点法的误差阶数为 ( \mathcal{O}(h^2) ),比欧拉法更精确,适用于中等复杂度的微分方程。
- 中点法通过在当前点进行半步推进,计算中点处的斜率,然后使用该斜率进行全步推进。其公式为:
-
龙格-库塔法(Runge-Kutta Method):
- 龙格-库塔法是一种高阶数值解法,通过多个斜率的加权平均来近似解。最常用的是四阶龙格-库塔法(RK4),其公式为:
xn+1=xn+h6(k1+2k2+2k3+k4) x_{n+1} = x_n + \frac{h}{6} (k_1 + 2k_2 + 2k_3 + k_4) xn+1=xn+6h(k1+2k2+2k3+k4)
其中,( k_1, k_2, k_3, k_4 ) 是通过不同点的斜率计算得到的。 - RK4 的误差阶数为 ( \mathcal{O}(h^4) ),适用于高精度要求的复杂微分方程。
- 龙格-库塔法是一种高阶数值解法,通过多个斜率的加权平均来近似解。最常用的是四阶龙格-库塔法(RK4),其公式为:
-
后向欧拉法(Backward Euler Method):
- 后向欧拉法是一种隐式方法,通过使用未来点的斜率来近似解。其公式为:
xn+1=xn+hf(tn+1,xn+1) x_{n+1} = x_n + h f(t_{n+1}, x_{n+1}) xn+1=xn+hf(tn+1,xn+1) - 后向欧拉法的误差阶数为 ( \mathcal{O}(h) ),但由于其隐式特性,通常比显式欧拉法更稳定,适用于刚性微分方程。
- 后向欧拉法是一种隐式方法,通过使用未来点的斜率来近似解。其公式为:
-
应用与实例:
- 本章通过多个实例展示了如何使用这些数值方法求解不同类型的微分方程,包括弹簧-质量系统、捕食者-猎物模型(Lotka-Volterra 模型)、SIR 模型(流行病传播模型)等。
- 还讨论了如何通过数值方法解决边界值问题,并介绍了如何使用 Python 实现这些数值方法。
-
误差分析与收敛性:
- 本章通过误差分析比较了不同数值方法的精度和收敛性。通过绘制误差随步长变化的对数图,可以直观地看出不同方法的误差阶数。
- 欧拉法的误差随步长线性增长,中点法的误差随步长平方增长,而 RK4 的误差随步长的四次方增长。
-
扩展与应用:
- 本章还介绍了一些扩展应用,如多维度微分方程的求解、微分方程系统的求解、以及如何使用 Python 的
scipy.integrate.odeint函数来求解微分方程。
- 本章还介绍了一些扩展应用,如多维度微分方程的求解、微分方程系统的求解、以及如何使用 Python 的
总结
本章系统地介绍了常微分方程的数值解法,从最简单的欧拉法到高精度的龙格-库塔法,逐步展示了如何通过数值方法逼近微分方程的解。通过多个实例和误差分析,读者可以理解不同方法的优缺点,并学会如何在实际问题中选择合适的数值解法。
5470

被折叠的 条评论
为什么被折叠?



