seegongsik
我的单词本
工程数学

插值把离散点连成一条曲线

用穿过点的函数填补空白,拉格朗日基与龙格现象,切比雪夫节点与样条

我们手里拿到的总是稀疏的点:每秒测一次的温度、表里几个值、动画的几张关键帧。当你关心点与点之间发生了什么,插值就用一条穿过这些点的光滑函数来填补空白。泰勒用一点的导数信息模仿曲线,插值则用许多点的位置信息搭起曲线。N 个点唯一地确定一条 N-1 阶多项式。可一味加点反而有让曲线发疯的陷阱(龙格现象)。所以实战中要么聪明地布点,要么用分段低阶拼接的样条。插值是图形、动画、数据分析和数值积分的基础。

拖动这些点的高度。无论怎么移动,都跟来一条精确穿过全部五点的光滑曲线。这就是插值多项式。两点给一条直线(一阶),三点给一条抛物线(二阶),五点给一条四阶。N 个点唯一地确定一条 N-1 阶多项式,不多不少。连接这些点的曲线有无穷多,但加上"N-1 阶多项式"这个条件,答案就被钉死成唯一一条。这是插值的起点。

怎么把这条唯一的多项式写出来?拉格朗日的方法很优雅。给每个节点造一个基函数 Lᵢ,它是被设计成在自己节点为 1、在其他每个节点为 0 的多项式。按分段逐个查看。于是插值多项式不过是把这些基函数按高度 yᵢ 加权相加:P(x) = Σ yᵢ Lᵢ(x)。代入任一节点 xk,只有 Lk 为 1、其余为 0,所以 P(xk) = yk。精确穿过每个点是免费保证的,连方程组都不用解。

人们容易以为点越多越准。这是陷阱。用等距点去插值钟形的龙格函数。加点时中间变好,但两端的曲线却剧烈地上下摆动。到大约 15 阶时,端部的误差比函数值本身还大好几倍。这就是龙格现象。高阶多项式天生想在节点之间自由弯曲,点扎得越密,曲线在它们之间摆得越凶。教训很清楚:在插值里,一味提高阶数不是答案。

那答案是什么?令人意外的是,插值方法照旧,只改变把点放在哪里。从等距切换到切比雪夫分布,它把点更密地聚到两端。点数相同、同样的拉格朗日插值,端部的爆发却像变魔术般平息了。直觉是这样:多项式想在端部摆动,那就在端部多扎点,提前把这种摆动压住。这正是切比雪夫在望远镜镜面设计和函数逼近中成为黄金标准的原因。问题从来不是插值,而是点的布置。

很多时候你无法选择点的位置,只能照给定的用。那就彻底改变策略。不再用一条高阶多项式覆盖整条曲线,而是把每段只看相邻两点的低阶(三次)片段光滑地拼接起来。这就是三次样条。增加点数,金色多项式在两端振荡,而蓝色样条紧贴真值。因为每一段都不受远处点的影响(局部性),一处的摆动不会蔓延到整体。字体的曲线、车身设计(CAD)、动画路径,全都是样条。插值不止是连接点,更是选择如何连接。

实际应用插值就是用一条穿过所有点的函数,去填补稀疏点之间的空白。N 个点唯一地确定一条 N-1 阶多项式,用拉格朗日基(在自己节点为 1、其余为 0)能干净地写出。但用等距点一味提高阶数,就会落入端部爆发的龙格现象。有两个解法:把点聚向两端的切比雪夫分布,或把低阶片段光滑拼接的样条。泰勒用一点的导数来近似,插值则用许多点的位置来近似。两者都做着同一个梦:把复杂函数换成好处理的多项式。图形、CAD、数据分析,以及接下来要看的数值积分,都立在插值之上。
工程数学
如果有帮助,请支持我们