核心概述
三对角求解面向主对角与相邻两条副对角非零的线性系统 Ax=b,提供按仓库约定的接口以在该特殊结构上高效求解,作为线性方程组家族的结构化特例。
原文引述
KACTL algorithms should be: useful, short, fast enough, well tested, and if relevant, readable and easy to modify. They should not be overly generic, since code is manually typed and that just adds overhead. ——摘自 kactl/README.md
展开阐述
-
定义与背景
- 三对角线性系统的系数矩阵仅主对角与上下各一条副对角为非零;该结构在数值算法中常见,适合单独实现以降低常数与存储。
- 本节点定位为 114-数值算法-线性方程求解 的结构化特例;在重复求解情境可与 115-数值算法-线性方程求解II 的“分解-复用”思路配合。
-
接口与输入输出语义(按仓库约定)
- 典型接口(据约定风格):
- solveTriDiag(a, b, c, d) → x
- a, b, c 为下/主/上对角系数序列(长度 n,a[0] 与 c[n-1] 可按实现约定忽略),d 为右端项,x 为解向量。
- solveTriDiag(a, b, c, d) → x
- 语义:
- 返回任一可行解;若遇到“主元为 0”等不可继续情形,按实现约定报告失败或退化处理。
- 典型接口(据约定风格):
-
核心流程与关键要点
- 前向阶段与回代阶段按结构顺序进行;由于仅与相邻元素相关,存取模式与数据局部性好。
- 数值与模域的差异:
- 实数域可结合“部分主元”思想以增强稳定性(参照 114-数值算法-线性方程求解 的主元讨论)。
- 模域下除法以乘逆元替代(参见 114-数值算法-线性方程求解、115-数值算法-线性方程求解II 的约定)。
-
复杂度与边界条件
- 线性时间与线性空间开销,满足 O(n) 级别(参见 114-数值算法-线性方程求解 中对“三对角系统”的指示“(O(n))”)。
- 边界:n=1 的退化情形;端点处的下/上对角按实现约定处理;当出现“不可逆步”时需按约定返回失败。
-
与相邻技术的取舍对比
- 对一般稠密矩阵,请使用 114-数值算法-线性方程求解;若需对同一矩阵多次求解,参考 115-数值算法-线性方程求解II 的预分解策略。
- 若目标是矩阵求逆或更一般操作,可参考 107-数值算法-矩阵求逆。