拉格朗日插值法
技术背景
2024年诺贝尔物理学奖和化学奖的揭幕,正式宣告了科学界对AI时代的认可,人工智能正在全方位的改变人类社会各种场景的互作模式,而数据拟合以及误差与算力的控制,则是大多数人工智能工作者所关注的重点。与数据拟合的思想不同的是,传统的数值计算中人们更倾向于使用多项式进行精确的参数计算,这种方法叫做插值。当然,插值算法的精确是相对于边界条件而言的,随着点数的变化,不同的插值算法有不同的余项。现在在模型训练中,因为数据点本身就是有误差的,所以强行使用插值算法会导致过拟合的现象。只有在一些传统的对精度要求较高的计算场景中,保留了插值算法的应用。
线性插值
给定两个点:(x1,y1),(x2,y2)(x1,y1),(x2,y2),其插值出来的线性函数为:
稍微改写一下形式有:
可以得到f(x1)=y1,f(x2)=y2f(x1)=y1,f(x2)=y2。
二次插值
给定三个点:(x1,y1),(x2,y2),(x3,y3)(x1,y1),(x2,y2),(x3,y3),假设其插值函数为:f(x)=ax2+bx+cf(x)=ax2+bx+c,那么可以根据三个点联立方程组,写成矩阵形式就是:
所以求解系数a,b,c变成了一个矩阵求逆问题,可以手动做一个初等变换:
也就是说,最终的逆矩阵为:
可以验证:
有了逆矩阵,就可以计算参数数值a,b,c,那么这里我们直接写出函数形式:
拉格朗日插值法
观察前面线性插值和二次插值的函数规律,可以给出一个推广形式:
其中系数函数ci(x,x1,x2,...,xN)=∏i−1j=1x−xjxi−xj∏Nk=i+1x−xkxi−xk。可以给出N个数据点的N−1次插值函数解析式,这就是拉格朗日插值法,满足f(xi)=yi的约束条件。
牛顿插值法
如果把线性插值中的函数表达式再修改一下形式,变成:
类似的,二阶插值函数可以改成如下形式:
如果定义一个一阶差商为:
其含义为(xi,xi+1)区间内的平均变化率。有了一阶差商的定义,就可以递归的定义二阶差商:
以及m阶的差商:
则可以写出牛顿插值的函数形式为:
插值形式对比
拉格朗日插值算法和牛顿插值算法,插值的阶数是一致的,同样的点数插值出来的多项式也是唯一的,换句话说两个方法插值出来的函数其实是等价的。那么两个插值算法的优劣势在哪里?我们考虑这么一种情况,原本有N个数据点需要插值,此时如果再引入一个新的数据点,总点数变成了N+1。此时如果使用的是拉格朗日插值法,那么就需要我们把所有的系数全都再算一遍。而如果使用的是牛顿插值法,那么我们发现前面的N个系数是不需要发生变化的,我们只需要再计算一个新的系数即可,极大程度上的减少了点数更新所带来的参数计算量。但也并不是说拉格朗日插值没有用武之地,在现如今的张量计算时代,拉格朗日插值法的每一项系数都是同Shape的张量操作,反而是牛顿插值的递归形式在张量计算中会有一些麻烦。
总结概要
本文通过线性插值和二次插值的形式,介绍了拉格朗日插值算法以及牛顿插值算法的基本形式。两种插值算法的最终函数形式是一致的,但是在不同场景下的参数求解计算量是不一致的,需要根据自己的应用场景选择更加合适的插值算法。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/lg-interp.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
本文作者:Dechin的博客
本文链接:https://www.cnblogs.com/dechinphy/p/18464001/lg-interp
版权声明:本作品采用CC BY-NC-SA 4.0许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步