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

浅谈拉格朗日插值法

时间:2023-04-25 19:11:21浏览次数:61  
标签:拉格朗 函数 re 插值法 插值 mod 浅谈

浅谈拉格朗日插值法

好像FFT要用到,所以就学习一手
版题

什么是插值

在离散数据的基础上补插连续的函数,使得这条连续函数经过所有离散数据点,这个过程就叫插值。

其意义在于:
插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。

理解一下:
就是把一个足球踢出去,假设球始终在一个平面上飞行,它的轨迹就可以抽象为 \(f(x)\) (假设这个函数至于时间有关)

现在你有一些照片,所以你可以得到某几个时间点球的位置,想要还原出这个函数 \(f(x)\) 的轨迹。但是你的照片数量是有限的,而函数的点是连续的所以插值的结果 \(g(x)\) 可能有无穷多种

插值有许多方法,包括:三角函数插值;线性插值法;牛顿插值法;拉格朗日插值法 …… 但是蒟蒻只会拉格朗日插值法

拉格朗日插值法

这个方法很简单,相当于硬性拼凑。
举个例子,现在平面上有三个点分别是\((x_1 , y_1),(x_2 , y_2),(x_3 , y_3)(x_1 < x_2 < x_3)\),我们用这三个插值。
我们需要构造 \(n\) (这里是3)个函数。第 \(i\) 个函数满足:
\( \left\{\begin{matrix}{aligned} 0 , x = x_j (j != i) \\ 1 , x = x_i \\ others , I \ don't \ care \end{matrix}\right. \)

这是第一个:

第二个:

第三个

然后我们发现 \(f(x) = y_1f_1(x) + y_2f_2(x) + \cdots + y_nf_n(x)\)

对于我们构造出来的第一 \(1\) 条曲线显然满足性质:

\[f_1 = \dfrac{(x - x_2)(x - x_3)}{(x_1 - x_2)(x_1 - x_3)} \]

进一步推广:

\[f_i(x) = \prod_{j \neq i} ^ {n}\dfrac{x - x^j}{x_i - x_j} \]

然后就有了:

\[f(x) = \sum_{i = 1}^{n}y_i*f_i(x) \]

code

#include <bits/stdc++.h>
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
#define LL long long
using namespace std;
const LL mod = 998244353;
LL n , k;
struct RE {
    LL x , y;
}re[2005];
LL read () {
    LL val = 0 , fu = 1;
    char  ch = getchar ();
    while (ch < '0' || ch > '9') {
        if (ch == '-') fu = -1;
        ch = getchar ();
    }
    while (ch >= '0' && ch <= '9') {
        val = val * 10 + (ch - '0');
        ch = getchar ();
    }
    return val * fu;
}
LL ksm (LL x , LL y) {
    LL ans = 1;
    while(y) {
        if(y&1) ans = ans * x %mod;
        x = x * x % mod;
        y >>= 1;
    }
    return ans;
}
int main () {
    LL ans = 0 , ans1;
    n = read () , k = read ();
    fu (i , 1 , n) {
        re[i].x = read () , re[i].y = read ();
    }
    fu (i , 1 , n) {
        ans1 = re[i].y;
        fu (j , 1 , n)
            if (i ^ j)
                ans1 = 1ll * (ans1 * (k - re[j].x) % mod) * ksm (re[i].x - re[j].x , mod - 2) % mod;
        ans = (ans + ans1+mod) % mod;
    }
    printf ("%lld" , ans);
    return 0;
}

标签:拉格朗,函数,re,插值法,插值,mod,浅谈
From: https://www.cnblogs.com/2020fengziyang/p/17353579.html

相关文章

  • 浅谈1688商品详情的应用场景
    场景分析1688商品详情接口是一种用于访问阿里巴巴旗下的批发市场平台(1688.com)上的商品信息的API接口。通过该接口,可以获取商品的详细信息,包括商品名称、规格、价格、描述、图片等。这些信息对于买家和卖家来说都非常重要,可以帮助他们更好地了解商品,做出更明智的购买决策。以下是168......
  • 拉格朗日插值学习笔记
    这个算法的用途是,给出\(n\)个点,第\(i\)个点为\((x_i,y_i)\),它可以找出一个\(n-1\)次的多项式\(f(x)\),以便求出\(x\)值为其他情况。当然也是可以用来整活的,可以构造一些奇奇怪怪的多项式坑人。首先这个多项式存在是显然的,然后我们求它的方式是一个构造。我们考虑跟中国剩余......
  • 浅谈秦九韶算法
    浅谈秦九韶算法好像FFT要用到,所以就学习一下听说还是高中必修三的内容?目录浅谈秦九韶算法秦九韶算法的应用:code秦九韶算法的应用:当我们知道\(x\)的值时,求下列式子的值:\[f(x)=a_0+a_1x+a_2x^2+a_3x^3+\cdots+a_{n-1}x^{n-1}+a_nx^n\]一开始看到这个式子......
  • 浅谈电力监控在地铁运维中的应用
     摘要:随着我国工业化进程的不断推进,我国监控系统也实现了长足的发展。以往传统的地铁监控模式已经无法满足当前需求,将电力监控系统和地铁综合监控系统已经进行资源整合,有效实现了地铁信息的共享与互动,综合提高了地铁自动化监控水平,保证了地铁运行的可靠与安全。  关键词:电力监......
  • 浅谈新能源电动汽车有序充电的对策
    摘要:随着我国能源战略发展以及低碳行动的实施,电动汽车已逐步广泛应用,而电动汽车的应用非常符合当今社会对环保意识的要求,以及有效节省化石燃料的消耗。由于其无污染排放的优点以及政府部门的关注,电动汽车将成为以后出行的重要交通工具。由于大批的电车作为负荷随机接到电网中进行充......
  • 浅谈两种前端截图方式:Canvas截图 vs SVG截图
    背景如今很多网站都引入截图功能,可用于问题反馈、内容分享等实用需求,而前端截图也不知不觉成为了首选。今天为大家推荐两种前端截图方式,虽然有些局限,但是也能应付大部分项目需求。Canvas截图:html2canvasSVG截图:rasterizehtml原理首先来谈下两种前端截图方式的原理,虽然实现方式不......
  • 浅谈日出日落的计算方法以及替代工具 - 日出日落 API
    引言如果你想知道精确的日落日出时间,又或者你想设计一个日出日落时间查询的应用,又或者你只是好奇点进来了,还是可以过来围观一下涨涨知识,今天想跟大家聊一聊的是日出日落的计算方法以及替代工具-日出日落API。日出日落API是一种可以获取指定城市或地点每日日出时间和日落时......
  • 浅谈dataclass和namedtuple
    之前有简单讲了下命名元组,现在联系数据类再做比较下目前发现,因为数据类和普通的类没什么差异,只是提供了简写__init__的语法糖,而且增加了类型注解,可以随意修改属性值而命名元组无法修改,除非返回一个新的实例[email protected]()5clas......
  • CDGA|浅谈“以治促用,以用促治”的数据治理战略
    数据治理夯实企业数字化转型基础。采取“以治促用,以用促治”的数据治理战略,可以充分释放了企业核心运行要素的活力。“以治促用”是指通过建立在数据治理链路及用户多维评估系统的基础上,对数据资产重新进行价值识别,推进高价值数据资产应用和中低价值资产的优化,从而提高数据资产的可......
  • 浅谈全局平衡二叉树
    首先,这个是GBT,不是GPT。其次,那个是ChatGPT,不是ChatGBT。原理我们先考虑一个经典的问题:单点修树上最大权独立集问题,也就是LuoguP4719【模板】"动态DP"&动态树分治。使用树剖维护矩阵可以做到\(O(n\log^2n)\)的复杂度,可以通过\(10^5\)的数据。那我们能不能把这个问题优化......