Thomas 算法是专用于三对角矩阵的方程组解法,是高斯消元法的特殊形式。前向消元消去下对角线得到上三角形,再用回代求解。一般高斯消元为 O(n³),而 Thomas 算法利用矩阵结构以 O(n) 求解。除样条插值外,热传导隐式解法(Crank–Nicolson)等 CAE 各处都会用到这一基础算法。
CAD 曲线曲面设计、有限元网格生成的边界曲线、实验数据内插、时间序列缺失值补全、机器人轨迹规划、光学非球面形状描述等需要光滑曲线的场合广泛使用。航空翼型(NACA 翼)的描述,以及汽车 A 级曲面(外观品质要求高的曲面)的检验也都基于样条。
自然三次样条"必经所有点",因此如果数据含有噪声,曲线会忠实地追随噪声而出现波动。希望平滑掉观测误差时,可以使用"光滑样条(smoothing spline)"——牺牲精确通过点的特性以追求光滑性,或使用最小二乘法拟合 B 样条。是否必须通过每个点取决于目的。
实际应用
CAD/CAM 曲线设计:三次样条是表达机械零件和汽车外形的最基本光滑曲线类。NURBS 和 B 样条作为现代 CAD 的主流曲线,都是三次样条理论的扩展,对自由曲面建模、干涉检查、五轴加工的刀具路径生成不可或缺。
实验数据的内插与可视化:从有限的传感器测点估算其间的值是样条的典型应用。风洞实验的翼面压力分布、CT 切片重建 3D 形状、温度剖面内插等,都是用样条填补观测之间的空隙。MATLAB 的 spline 函数、SciPy 的 CubicSpline、Excel 的光滑曲线拟合等都内置了样条。
最后是误以为三次样条具有"局部性"。在模拟器里把 y_3(中间点)大幅改变,变化不只局限在中间附近,而是会传播到两端区间。这是因为 Thomas 算法解的是全局方程组,一个点的改动会影响所有的 M_i。如果想把改动限制在局部(例如 CAD 里只移动一个控制点),就该使用具有"局部基函数"的 B 样条或贝塞尔曲线。样条插值和样条曲线编辑是两件不同的事情——区分这一点很重要。