简介:针对《科学与工程计算》熊春光版课程的期末复习笔记,面向北理工自动化等理工科专业学生,聚焦微分方程数值解法的核心考点。内容系统梳理初值问题与边值问题、有限差分法的等距划分与差商选取、内部截断误差分析,以及基函数法中Lagrange插值与三次样条插值的适用场景与Runge现象等易混淆知识点,帮助快速搭建数值方法知识框架。笔记以单个PDF文件提供,约20.04MB,排版紧凑,适合打印或导入平板标注复习。目前已有2767人学习下载,按章节梳理关键公式、推导过程与算法要点,既能用于期末冲刺,也适合日常预习时对照理解,是自动化及相关专业备考《科学与工程计算》的实用资料。
1. 期末复习笔记从哪读起:一张通向差分格式的知识地图
如果只用一个词概括《科学与工程计算》期末复习的体验,那就是「梯度」——从两点边值问题的定解条件一路爬到抛物方程三种古典差分格式的稳定性判定,每层都有新的概念要消化。这份期末复习笔记的核心线索其实只有一条:把微分方程换成代数方程。做法是先搞清楚定解条件(初值问题看时间初始条件,边值问题看空间边界条件),再用有限差分或基函数把导数近似掉,最后讨论这个近似过程会不会翻车——也就是相容性、收敛性与稳定性。适合系统学这门课的人快速搭框架,也适合考前一周查漏补缺的人对着重点清单逐条确认,特别是自动化方向的同学:这门课的数值思路后面理解控制系统离散化时会反复用到。
2. 两点边值问题:定解条件与有限差分离散的完整链条
2.1 定解条件三件套:初始条件、边界条件与适定性
复习这一章时最需要区分的概念是初值问题和边值问题。初值问题携带的是与时间有关的初始条件,比如 t=0 时刻的状态 u(x,0);边值问题携带的是与空间有关的边界条件,比如定解区间两个端点上的取值。二阶常微分方程做数值解时,因为方程本身是二阶的,必须在定解区间两端各给一个边界条件,否则离散后得到的代数方程组少方程、解不出来。
定解条件的组合方式决定了数值方法的类型。一个常见的误区是把初值问题的「一个初始条件」直接搬到边值问题上,结果列方程时发现边界信息不够。复习笔记里强调的适定性概念也很关键:适定问题要求解存在、唯一,并且对初值有连续依赖——用大白话说,初值稍微变一点,解不能剧烈抖动。这个定义在后面的 Lax 等价定理里还会以「线性适定初值问题」的形式再次出现。
边界条件本身还有更细的分类:第一类边界给函数值,第二类给导数值,第三类是两者的线性组合。离散时第二类和第三类要额外处理,不能直接照搬第一类的端点赋值,否则会在边界点引入虚假的方程。这是后面讨论非正则内点时的重要伏笔。
2.2 有限差分法:从差商近似到三对角方程组的推导
有限差分法首先要做网格剖分。把区间 [a,b] 等距划分成 N 段,节点记为 x_i,步长为 h=(b-a)/N,目标是求出每个节点上的近似值 y_i。核心操作是用差商代替导数,最常用的是中心差商:
y'(x_i) ≈ (y_{i+1} - y_{i-1}) / (2h) y''(x_i) ≈ (y_{i+1} - 2y_i + y_{i-1}) / h²中心差商的优势在于对称性,截断误差是 O(h²),比向前差商和向后差商的 O(h) 高一阶。将这两个近似代回二阶常微分方程 y'' + p(x)y' + q(x)y = f(x),在内部节点 x_i 处得到:
(y_{i+1} - 2y_i + y_{i-1})/h² + p_i (y_{i+1} - y_{i-1})/(2h) + q_i y_i = f_i整理后得到关于 y_{i-1}、y_i、y_{i+1} 的线性关系式。这里有两个容易出错的地方:第一,p_i、q_i、f_i 都是在节点 x_i 处取值的,如果 p(x) 是常数可以直接带,如果是函数就要逐点计算;第二,所有系数要乘以 h² 或 2h 统一分母,否则矩阵写出来不整洁。
把全体内部节点方程联立,再代入两端边界条件,就得到一个三对角线性方程组 A y = b,其中 A 的主对角元来自 y_i 的系数,副对角元来自 y_{i-1} 和 y_{i+1} 的系数。边界条件的作用是补上第一个方程和最后一个方程中缺失的端点信息。复习时建议亲手把 N=5 的小例子展开写一遍,比盯着公式看记忆深刻得多。
2.3 基函数法:多项式插值、B样条与Runge现象的取舍
有限差分法的思路是「直接近似导数」,基函数法的思路则是「先把解近似成一组已知函数的线性组合」,再确定组合系数。设近似解为 y_N(x) = Σ a_k φ_k(x),其中 φ_k 是基函数,a_k 是待定系数。选取不同的基函数,得到的离散格式完全不同,这是两种技术路线的分水岭。
多项式插值型基函数取 φ_k(x) = x^k,即 N 次 Lagrange 插值。优点是形式简单,但高次多项式会出现 Runge 现象——插值多项式在区间两端剧烈振荡,等距节点下次数越高振荡越严重。实际计算中很少直接使用高次全局多项式,这个反直觉的失败案例是复习时值得标记的重点。
B 样条插值型则用分段多项式作为基函数,常选三次 B 样条,因为它天然满足二阶连续可导,正好匹配二阶常微分方程的解空间要求。三次 B 样条基函数有几个关键性质:每个基函数只在其支撑区间(三个相邻子区间)上非零,图形是对称的,不同节点的基函数可以通过平移得到,最大值为 1。这意味着不管是组装矩阵还是处理边界条件,都只需要考虑相邻基函数之间的耦合,矩阵的稀疏性远优于全局多项式。
2.4 配置法与最小二乘法:残差降到零与残差积分最小
基函数法确定系数的路径不止一条。配置法要求选择有限个配置点,令残差在这些点上恰好为零。这里最容易漏掉的是配置点个数的判断逻辑:若近似解有 M 个未知系数且边界条件已经提供 r 个方程,那么只需要 M-r 个配置点。笔记里给出的示例很有代表性——取 y = a_0 + a_1 x + a_2 x²,边界条件消掉 a_0 和 a_2 后只剩一个未知数 a_1,区间中点一个配置点就够。如果换成三次 B 样条基函数,未知数数量大幅增加,配置点数量也水涨船高,计算量差距很大。
最小二乘法不再追究「某些点上残差为零」,而是让残差在整体意义上最小,即极小化 E = ∫ r²(x) dx。对系数求偏导并令其为零,得到正规方程 Σ b_ij a_j = β_i,其中 b_ij 是基函数乘积的积分,β_i 是右端项与基函数乘积的积分。配置法只保证有限点精确,最小二乘法则在 L² 范数下做整体最优逼近,代价是需要计算积分。复习时可以把「配置法点满足、最小二乘整体最优」作为一句话总结记下来,做题时先判断题目要求的是点条件还是积分条件。
配置法和最小二乘法之间的联系值得多看一眼:当配置点数量趋近于无穷时,配置法在极限意义下接近最小二乘法的效果。考试一般不考这个结论,但理解它有助于回答「为什么不直接用配置法解决所有问题」这种概念题。B 样条基函数做配置时还有一个细节:三次样条在边界附近需要引入虚拟节点,边界条件用来消除虚拟未知量 a_0 和 a_{N+1},这一步消元在组装矩阵时非常容易漏。
3. 三种古典差分格式:显式、隐式与Richardson格式的推导与对比
3.1 最简显式格式:向前差商的时间离散与计算流程
抛物方程的核心模型是一维非齐次热传导方程 u_t = a u_xx + f(x,t)。最简显式格式的做法是:时间方向用一阶向前差商,空间方向用二阶中心差商。在节点 (x_j, t_k) 处展开:
(u_j^{k+1} - u_j^k) / τ = a (u_{j+1}^k - 2u_j^k + u_{j-1}^k) / h² + f_j^k令网格比 r = aτ/h²,整理后得到递推式:
u_j^{k+1} = r u_{j-1}^k + (1 - 2r) u_j^k + r u_{j+1}^k + τ f_j^k这个格式叫「显式」,因为第 k+1 层每个点的值可以由第 k 层三个相邻点的值直接算出,不需要解方程组。实际计算时按时间层逐层推进:先由初值条件给出第 0 层的全部 u_j^0,然后对 j=1,2,…,N-1 依次套用递推式,最后用边界条件修正端点。每推进一步的计算量是 O(N),编程实现非常友好。
用 Taylor 展开推导时,局部截断误差的主项为 (τ/2) u_tt + (h²/12) u_xxxx,即该格式关于时间是一阶精度、关于空间是二阶精度。这是「最简单」的代价:时间方向精度偏低。如果步长 τ 取得不够小,整体误差会被时间方向的一阶项主导。程序实现时特别注意 r 的值——它直接决定格式是否稳定,这一点在 3.4 节会详细讨论。一个实用的检查方法是:如果发现数值解随层数推进出现正负交替的振荡,第一反应就是检查 r 是否超过稳定阈值,而不是怀疑代码写错。
3.2 最简隐式格式:向后差分的无条件稳定特性
最简隐式格式的时间方向改用一阶向后差商,空间方向仍用二阶中心差商:
(u_j^{k+1} - u_j^k) / τ = a (u_{j+1}^{k+1} - 2u_j^{k+1} + u_{j-1}^{k+1}) / h² + f_j^{k+1}整理后左侧含三个未知量:
-r u_{j-1}^{k+1} + (1 + 2r) u_j^{k+1} - r u_{j+1}^{k+1} = u_j^k + τ f_j^{k+1}这里的未知量在第 k+1 层,因此每个时间步都需要解一个三对角方程组。虽然单步计算量比显式格式大,但换来的是令人安心的稳定性:无论网格比 r 取多大,隐式格式都不会因为步长选择不当而发散。它和显式格式一样,局部截断误差是 O(τ + h²),时间方向仍是一阶精度,但这并不妨碍它在实际工程中成为更常用的选择——稳定性优先级远高于理论精度阶数。
初学时常有的疑问是「既然隐式格式每一步都要解方程组,为什么还要用它」。答案在于:显式格式的稳定条件 r ≤ 1/2 对 h 和 τ 的约束非常苛刻,空间步长 h 减半时,时间步长 τ 必须减小到原来的 1/4 才能维持稳定,总计算量会急剧膨胀。隐式格式没有这个限制,可以用更大的时间步长推进,总体计算效率反而更高。复习时建议把「显式受限于稳定性、隐式受限于单步成本」这条权衡记在笔记的显著位置。
3.3 Richardson格式:三层格式的精度提升与稳定性陷阱
为了同时提升时间和空间精度,可以考虑在时间方向使用中心差商——这就是 Richardson 格式的动机:
(u_j^{k+1} - u_j^{k-1}) / (2τ) = a (u_{j+1}^k - 2u_j^k + u_{j-1}^k) / h² + f_j^k整理得:
u_j^{k+1} = u_j^{k-1} + 2r (u_{j-1}^k - 2u_j^k + u_{j+1}^k) + 2τ f_j^k它的局部截断误差是 O(τ² + h²),精度指标上比前两个格式都漂亮。但这里有个著名的陷阱——Richardson 格式恒不稳定。它的稳定性分析需要特殊处理:因为格式涉及 u^{k+1}、u^k、u^{k-1} 三个时间层,属于三层格式,不能直接套用两层格式的传播因子判定法。
处理方法是通过补充恒等式 u_j^k = u_j^k 把三层格式改写成等价的两层格式组:
u_j^{k+1} = u_j^{k-1} + 2r (u_{j-1}^k - 2u_j^k + u_{j+1}^k) + 2τ f_j^k u_j^k = u_j^k令向量 V^{k} = (u^k, u^{k-1})ᵀ,就可以写成矩阵形式的增长方程 V^{k+1} = G V^k。分析传播矩阵 G 的特征值时发现其特征值模的最大值不小于 1,不满足 Von Neumann 条件。这个例子在考试中很有代表性:它告诉学生精度阶数高并不自动带来稳定,任何格式在投入使用前都必须经过稳定性检验。
3.4 三种格式的对比表:精度、稳定性与适用场景
考试前把三种古典格式放在同一张表里对照,是最高效的复习动作。复习时可以亲手填写下表,再对照笔记检查。
| 格式 | 时间差商 | 空间差商 | 截断误差 | 稳定条件 | 单步计算 |
|---|---|---|---|---|---|
| 最简显式 | 一阶向前 | 二阶中心 | O(τ + h²) | r ≤ 1/2 | 直接递推 |
| 最简隐式 | 一阶向后 | 二阶中心 | O(τ + h²) | 无条件稳定 | 解三对角方程组 |
| Richardson | 二阶中心 | 二阶中心 | O(τ² + h²) | 恒不稳定 | 直接递推(三层) |
显式格式的稳定条件 r ≤ 1/2 是最常考的记忆点。它的几何含义是:在一个时间步内,热量的数值传播不能越过一个空间网格——这是一个很直观的物理约束。隐式格式的「无条件稳定」只针对这个具体格式,不能外推到所有隐式格式。Richardson 格式几乎不在实际计算中使用,但它作为「高精度但失效」的反面案例,经常出现在概念题中。复习到这一层时会发现:格式的优劣是精度、稳定性、计算量三个维度权衡的结果,不存在一个在所有指标上都最优的万能格式。
4. 稳定性与收敛性的判定体系:从Lax等价定理到Fourier分析
4.1 相容性、收敛性与适定性的关系
相容性讨论的是差分方程与微分方程之间的关系:当步长 h 和 τ 都趋近于零时,差分格式的局部截断误差 R 是否也趋于零。收敛性讨论的是差分方程的解是否逼近微分方程的真解。「相容」是「收敛」的必要不充分条件,单靠截断误差趋于零并不能保证数值解收敛——还需要稳定性作为桥梁。
Lax 等价定理把这个三角关系说得很清楚:对于一个适定的线性初值问题,如果差分格式是相容的,那么收敛性与稳定性互为充要条件。翻译成复习语言就是:验证收敛性只需要做两步——证明相容性,然后证明稳定性。两者都成立,收敛性自动成立。这里有两个容易被忽略的前提条件:第一,问题必须是适定的线性初值问题,非线性问题没有这样简洁的结论;第二,定理讨论的是初值问题,边值问题需要另行处理。
实际做题时遇到的典型问题是「只验证了相容性就声称收敛」。比如某格式截断误差是 O(τ + h²),题目问它是否收敛,正确回答是还要检查稳定性。显式格式在 r > 1/2 时虽然相容,但数值解照样发散。这就是相容但不收敛的真实案例,也是考试中区分「背概念」和「理解概念」的经典考点。
4.2 Fourier分析方法:从传播因子到Von Neumann条件
判稳的实用工具是 Fourier 分析方法,也叫 Von Neumann 方法。核心思想是:把数值解写成 Fourier 级数展开的形式,代入差分格式后研究单个谐波分量的振幅变化。对最简显式格式,令 u_j^k = v^k e^{iωjh},代入后得到:
v^{k+1} e^{iωjh} = v^k e^{iωjh} [1 - 2r(1 - cos ωh)]定义增长因子(传播因子):
G(ω) = 1 - 2r(1 - cos ωh) = 1 - 4r sin²(ωh/2)Von Neumann 条件要求对任意 ω 都有 |G(ω)| ≤ 1。因为 sin²(ωh/2) 的最大值为 1,于是得到:
|1 - 4r| ≤ 1 ⇔ 0 ≤ r ≤ 1/2这就是显式格式稳定条件的完整来历。考试中如果只记得 r ≤ 1/2 而忘了推导过程,遇到变体题目就容易翻车——比如方程换成 u_t = a u_xx 但 a 不是常数,网格比 r 的定义要相应修改,判断也必须重新做。
隐式格式的增长因子推导类似,结果为:
G(ω) = 1 / (1 + 2r(1 - cos ωh)) = 1 / (1 + 4r sin²(ωh/2))分母恒大于等于 1,所以 |G(ω)| ≤ 1 对所有 r 都成立。Richardson 格式则通过传播矩阵特征值判定,特征方程解出的特征值模最大值大于 1,直接违反 Von Neumann 条件。复习时可以写一段 Python 代码辅助验证增长因子的表达式,下面是一个简单示例:
import numpy as np def von_neumann_check(r, omega_h): """计算传播因子并判断是否满足Von Neumann条件""" G = 1 - 4 * r * np.sin(omega_h / 2) ** 2 return G, abs(G) <= 1 # 取网格比 r=0.4(稳定)和 r=0.6(不稳定)对比 for r in [0.4, 0.6]: omega_h = np.pi # 取最容易失稳的频率 G, ok = von_neumann_check(r, omega_h) print(f"r={r}, G={G:.3f}, |G|={abs(G):.3f}, stable={ok}")这里 omega_h 取 π 是因为 sin²(π/2)=1 对应最坏情况。实际使用时还可以对 omega_h 在 [0, 2π] 内密集采样,画出 |G| 随 omega_h 的变化曲线,直观看到显式格式在 r > 1/2 时哪些频率分量会被放大。
4.3 稳定性的物理直觉与计算实践
Fourier 分析做完之后还要建立一点物理直觉。显式格式稳定条件 r ≤ 1/2 的物理解释是:数值格式中信息传播速度不能超过物理热传导的真实速度,否则数值解会在网格间产生虚假振荡。这个解释在答简答题时非常加分,它说明你不是在背公式,而是理解公式背后的约束。
实际操作中,稳定性出问题时的现象很有辨识度:数值解出现空间上的锯齿状振荡,振幅随时间层数指数增长,正负交替越来越剧烈。隐式格式的解则是光滑的衰减,即使 r 取得很大也只是精度变差(时间方向的一阶截断误差变大),不会出现振荡发散。这个现象对比是考试实验题的热门题材。复习时可以把三种格式分别跑一遍小算例,亲眼看一次稳定与不稳定的差别,比任何文字记忆都牢固。
5. 易漏点与易错点:复习中最容易翻车的五个细节
5.1 定解条件的类型判断:初值问题与边值问题混为一谈
易漏点:题目给出二阶常微分方程,只给一个端点的函数值和导数值,就直接套用两端边界条件的格式去求解。为什么漏:初值问题的提法是「一个初始时刻的状态和速度」,边值问题的提法是「两个端点的状态」,两类问题的定解条件数量和信息位置完全不同。怎么补:拿到题目先看条件的落点——条件集中在同一个时间点属于初值问题,分散在空间区间两端属于边值问题;二阶方程无论哪类都需要两个独立条件。做题时把「个数 + 位置」写在题目旁边,形成条件反射。
5.2 网格比 r 与稳定条件的对应关系记串
易漏点:把最简显式格式的稳定条件记成 r ≤ 1。为什么漏:推导过程中只算了 |G(ω)| ≤ 1 的上界,忽略了 1 - 4r sin²(ωh/2) 还可能小于 -1 的那一侧;当 r > 1/2 时增长因子会小于 -1,绝对值超过 1,这正是振荡失稳的来源。怎么补:重新走一遍推导,记住两个端点——G 的最大值是 1(恒成立),最小值是 1-4r,要求 |1-4r| ≤ 1。默写时写出 |G| ≤ 1 ⇔ 0 ≤ r ≤ 1/2 的完整推导,而不是只写结论。
5.3 Richardson格式的三层转两层过程被跳过
易漏点:直接对三层格式套用 Von Neumann 条件,得不到正确的结论就草率判定「稳定」。为什么漏:两层格式的传播因子分析基于 u^{k+1} 只依赖 u^k 的假设,三层格式中 u^{k+1} 同时依赖 u^k 和 u^{k-1},必须引入辅助变量才能转化为标准形式。怎么补:记住三层转两层的标准做法——补上恒等式 u_j^k = u_j^k,组成向量 (u^{k+1}, u^k)ᵀ = G (u^k, u^{k-1})ᵀ,然后分析 2×2 传播矩阵的特征值谱半径。考试中遇到三层格式,第一步先写「转化为两层格式组」,这个动作就能拿分。
5.4 配置法与最小二乘法的未知数计数错误
易漏点:配置法选取配置点数量时,没有先扣除边界条件已经提供的方程数。为什么漏:例题中 y = a_0 + a_1 x + a_2 x² 有三个未知数,很多人直接选三个配置点,计算出冗余方程组;实际上两个边界条件已经固定了 a_0 和 a_2,只剩 a_1 需要确定,一个配置点就够。怎么补:按「未知数总数 - 边界条件数 = 配置点数」的公式操作,先把边界条件代入近似解表达式,明确剩下几个自由系数,再决定配置点个数。同理,最小二乘法中的未知数个数决定了正规方程组的规模,多算了会导致积分计算量无谓膨胀。
5.5 截断误差阶数的判断只看空间不看时间
易漏点:写最简显式格式的截断误差时只写 O(h²),漏掉 O(τ)。为什么漏:很多学生对中心差商是 O(h²) 印象太深,默认整个格式都是二阶精度,忽略了时间方向用的向前差商只有一阶精度。怎么补:每次推导格式后都分别写下时间方向和空间方向的截断误差阶数,再合并成整体表达式。显式和隐式都是 O(τ + h²),Richardson 是 O(τ² + h²),但后者不稳定。如果题目问「如何让显式格式达到二阶时间精度」,思路是换 Richardson 或者 predictor-corrector 类方法,但要额外处理稳定性。
6. 复习清单:三轮过完这份笔记的查漏补缺方法
考前两三天按三轮走一遍,比从头到尾重读教材有效得多。第一轮用知识地图自查概念:能否不看笔记说出定解条件三件套分别管什么、三种古典差分格式的离散思想各自是什么、Lax 等价定理的适用前提有哪些?这轮的目的不是背公式,而是把知识骨架搭起来。第二轮动手推导:在草稿纸上独立完成最简显式格式的差商推导、增长因子计算、稳定条件求解这三步,再对照笔记修正细节。同一个流程对隐式格式做一遍,对 Richardson 格式重点练三层转两层的矩阵组装。做完这两轮,大多数概念型选择题和简单计算题已经稳了。
第三轮是查漏补缺的关键——用一张 A4 纸把这张表默写出来:
显式格式:u_j^{k+1} = r u_{j-1}^k + (1-2r) u_j^k + r u_{j+1}^k,稳定条件 r ≤ 1/2 隐式格式:-r u_{j-1}^{k+1} + (1+2r) u_j^{k+1} - r u_{j+1}^{k+1} = u_j^k,无条件稳定 Richardson:u_j^{k+1} = u_j^{k-1} + 2r(u_{j-1}^k - 2u_j^k + u_{j+1}^k),恒不稳定 Lax定理:适定线性初值问题 + 相容 ⇔ 收敛与稳定等价默写时注意每一行都要能补充一句「为什么」——为什么是 r ≤ 1/2 而不是 r ≤ 1,为什么隐式格式不需要讨论步长限制,为什么 Richardson 精度最高却没人用。卡片上的每个公式都要能用手推导出来,而不是只认得符号。如果某个格式的推导卡住了,回到第 3 章对应小节重读一遍,然后合上笔记再推一次。这个动作比重复看十遍笔记都管用。
我做这套复习动作时有一个习惯:每看完一个模块,就在笔记边缘写下一个「如果考试要我现场推这个,我会从哪里入手」的提示词。比如看到显式格式就写「Taylor 展开到二阶,注意增长因子下界」,看到配置法就写「先消边界再数配置点」。考场上看到题目能快速定位到对应的提示词,比临时回忆整章内容节省大量时间。这份笔记覆盖的正是这门课最容易出题的几个模块——两点边值问题的定解条件与离散方法、三种古典差分格式、稳定性判定体系,把这几块吃透,期末复习的核心任务就完成了一大半。希望这份梳理能帮你在复习时少走弯路,把精力花在最值得花的地方。
本文还有配套的精品资源,点击获取