浅谈算法——拉格朗日插值
拉格朗日插值法:是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法(摘自某度百科)
首先我们需要知道,拉格朗日插值法有何用?
- 注:以下部分内容参考知乎:如何直观地理解拉格朗日插值法?
举例子永远是最好的方法
比如说,已知下面这几个点,我想找到一根穿过它们的曲线:
个点是肯定可以确定一个次函数的,因为待定系数法啊,然后我们假设函数为,然后我们就有
可是可以,但是扩展性不强……毕竟考场上没有可以解多元一次方程的机子……手动推通解的话……呵呵
拉格朗日也是这样想的,但是他觉得:我可以通过三根二次曲线相加得到这个函数,那么是怎样的三根曲线嘞?
第一根曲线,满足
然后第二、三根曲线类似
我们可以发现
- 可以保证,在处,取值为,其余两点取值为0
- 可以保证,在处,取值为,其余两点取值为0
- 可以保证,在处,取值为,其余两点取值为0
那么
可以一一穿过这三个点
当函数不是二次,而是多次的时候,这个方法同样成立
于是前人根据这个方法,总结出了拉格朗日插值法的一般式,即
(因为1~k+1写起来很丑,所以这里写的是0~k,本质相同)
我们可以发现,任意代入一个,都必然有,过程留给读者自己推导
这样我们就可以在的时间内求出
我们再来考虑一些特殊的情况,比如连续的情况
我们先把式子抄一遍
由于连续,所以我们可以把分子用前后缀积来表示
然后分母可以写成阶乘的形式,式子变成
那么我们就可以在的时间内算出的值了
至于一些应用,最常见的就是求的值,也就是求幂和,根据这里的式子可以得到
容易发现其为次多项式,于是我们可以使用拉格朗日插值法
其中的取值我们用线筛,对于每个素数我们暴力快速幂,这部分时间复杂度为
所以总时间复杂度为
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!