首页 > 其他分享 >拉格朗日插值

拉格朗日插值

时间:2025-01-09 20:10:35浏览次数:1  
标签:拉格朗 limits 插值 dfrac sum ne times prod

拉格朗日插值

首先,我们知道给出 \(n+1\) 个点 \((x_i,y_i)\) 可以唯一确定一个 \(n\) 次多项式。

问题:给出 \(n+1\) 个点,求出这个 \(n\) 次多项式在 \(k\) 处的取值,即 \(f(k)\)。

首先,我们可以列出 \((n+1)\) 个方程解出这个多项式的系数,但是这样是 \(O(n^3)\) 的。有没有更给力的?

实际上,我们有拉格朗日插值,可以在 \(O(n^2)\) 的复杂度内解决这个问题。

构造多项式:

\[g(x)=\sum\limits_{i=0}^n y_i \prod\limits_{j\ne i}\dfrac{k-x_i}{x_i-x_j} \]

我们说明这个多项式其实就是 \(f(x)\)。

首先,\(g(x)\) 显然是一个 \(n\) 次多项式,我们只需说明 \(g(x)\) 与 \(f(x)\) 在 \(n\) 个位置处取值相同即可。

\[\forall x_k,i\ne k,k,\prod \limits_{j\ne i}\dfrac{x_k-x_i}{x_i-x_j}=(\prod \limits_{j\ne i \land j\ne k}\dfrac{x_k-x_i}{x_i-x_j})\times \dfrac{x_k-x_k}{x_k-x_j}=0 \]

\[\forall x_k,i= k,\prod \limits_{j\ne i}\dfrac{x_k-x_i}{x_i-x_j}=\prod \limits_{j\ne i}\dfrac{x_k-x_i}{x_k-x_j}=1 \]

因此

\[\begin{aligned} g(x_k)&=\sum\limits_{i=0}^n y_i \prod\limits_{j\ne i}\dfrac{k-x_i}{x_i-x_j} \\&= \sum\limits_{i=0}^{k-1} y_i\times 0 + \sum\limits_{i=k+1}^{n} y_i\times 0 +y_k\times 1 \\&=y_k\end{aligned} \]

\(g(x)\) 与 \(f(x)\) 在 \(x_0,x_1\cdots x_n\) 处取值相等,因此,\(g(x)=f(x)\)。

这样,我们就可以在 \(O(n)\) 的时间复杂度内求出 \(f(k)\) 的值了。

注意:在写的时候不要求 \(n^2\) 次逆元,而是处理出来分母后再总共求 \(n\) 次,这样求逆元的总复杂度就是 \(O(n\log mod)\),不会成为瓶颈。

在 \(x\) 取值连续的时候,复杂度还可以优化。我们不妨设 \(x_i=i\),因为若 \(x_i\ne i\),由于满足取值连续,我们也可将图像整体平移。

\(g(x)=\sum\limits_{i=0}^n y_i \prod\limits_{j\ne i}\dfrac{k-x_i}{x_i-x_j}\)。

我们定义:

\[fac_i=\prod\limits_{j=1}^i j\\ pre_i=\prod\limits_{j=0}^i k-j\\suf_i=\prod\limits_{j=i}^n k-j \]

那么,我们可以将 \(g(x)\) 改写为:

\[\begin{aligned} g(x)&=\sum\limits_{i=0}^n y_i \prod\limits_{j\ne i}\dfrac{k-i}{i-j}\\ &= \sum\limits_{i=0}^n y_i \dfrac{pre_{i-1}\times suf_{i+1}}{fac_{i-1}\times fac_{n-i}\times(-1)^{n-i}} \end{aligned} \]

预处理 \(fac,pre,suf\) 即可 \(O(n)\) 计算。

标签:拉格朗,limits,插值,dfrac,sum,ne,times,prod
From: https://www.cnblogs.com/liulianll/p/18662832

相关文章

  • 反距离空间插值
    参考这里进行 【数字孪生】Fluent模型仿真结果在Unity当中展示_unityfluent-CSDN博客 借助gpt学习法完成了一个空间插值 仿真找不到了,看之前的ppt里的,将就一下(假设这是我们的仿真)主要是通过ansys仿真,输出仿真的数据,但是这个数据量太大了(十万行)。处理之后保存为exce......
  • 香农插值(sinc插值)实现
    sinc插值(香农插值whittaker-shannoninterpolationformula)实现-知乎简介sinc插值算法,又叫香农插值算法(whittaker-shannoninterpolationformula),是一种用于从离散实信号构造时间连续带限函数的方法.是信号处理中一种非常常见、常用、好用的插值补间算法,广泛并非常......
  • 基于N-HiTS神经层次插值模型的时间序列预测——cross validation交叉验证与ray tune超
    论文链接:https://arxiv.org/pdf/2201.12886v3N-......
  • 数据结构复习 (顺序查找,对半查找,斐波那契查找,插值查找,分块查找)
    查找(检索):定义:从给定的数据中找到对应的K1,顺序查找:O(n)的从前向后的遍历2,对半查找,要求有序从中间开始查找,每次检查中间的是否正确,不正确就根据性质去左边or右边找2.1对半插入排序在找位置的时候是logn去找,但是最后需要换位置排序之后仍然是O()N^2)对同一序列分别......
  • 拉格朗日插值
    如果答案能表示为一个\(K\)次多项式的形式可以考虑插值求解,\(O(k^2)\)。比如求\(\sum_{i=1}^ni^k\),可以表示为一个\(k+1\)次多项式\(f(n)\),事实上次数开高是没影响的(插值出来系数为0)但是不能插低。一个人的数论毒瘤。\[f_k(n)=\sum_{i=1}^{n}[gcd(i,n)=1]i^k\]\[=\sum_......
  • 空间曲线的线性参数插值
    空间曲线的线性参数插值​在断层曲面拟合的过程中,发现当解释的空间数据点过于稀疏的化,其断层面拟合的效果较差,我们采用空间曲线线性插值加密的算法,增加插值控制点的数量,改善插值的效果。1.1问题描述即算法描述已知空间三维离散折线\(l=(p_1,p_2,...,p_i,...,p_n)\)......
  • Cesium初级开发教程之二十八:线性插值
    教程示例网站:https://thomaz529.github.io 一、效果图二、代码Cesium提供了线性插值的方法Cesium.Math.lerp,不仅仅可以为经纬度进行插值,也可以对颜色,等高线等进行插值计算。constlength=100;conststartLon=100constendLon=120constlat=34......
  • 【模板】拉格朗日插值
    我们没有必要一定要将点值表示转化为系数表示,因为点值表示也可以进行单点求值,而且若点值连续,则还可以线性求值,与转化为系数表示之后没有区别。只需要求值的场合,完全可以只存连续的点值,然后线性的加法、减法、乘法、单点求值,甚至前缀和(线性)、函数复合(平方)。反而更优前途了。我们现......
  • 数值计算方法(1) 插值方法
    +++date='2024-12-21T10:12:41+08:00'draft=truetitle='数值计算方法(1)插值方法'+++初次发布于我的个人文档之前有一期简单介绍了一下拉格朗日插值和数值积分微分方法,我感觉有点太简单了。所以这次打算开个系列,好好唠一唠。什么是插值在小学阶段,有一种题目叫找规......
  • x264 亚像素插值及其内存结构
    参考:https://blog.csdn.net/leixiaohua1020/article/details/459362671.亚像素插值原理先简单介绍一下亚像素插值是如何进行的,基本来自这篇博客https://blog.csdn.net/leixiaohua1020/article/details/45936267h264中像素可以分为整像素、半像素、1/4像素,其中半像素和1/4像......