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

拉格朗日插值

时间:2023-02-09 15:26:41浏览次数:35  
标签:dots 拉格朗 插值 ll ne Cy bmatrix quad

前言

关于范德蒙德矩阵的傻逼证明自行百度。

点值表达

一个次数界为 \(n\) 的多项式 \(A(x)\) 的点值表达是一个由 \(n\) 个点对组成的集合:

\[\{(x_0,y_0),(x_1,y_1),\dots,(x_{n-2}, y_{n-2}),(x_{n-1},y_{n-1})\} \]

其中 \(x_i\) 互不相同。

一个傻逼的性质, \(A(x) = B(x) + C(x)\) 时有:

\[A(x) = \{(x_0,By_0+Cy_0),(x_1,By_1+Cy_1),\dots,(x_{n-2},B y_{n-2}+C y_{n-2}),(x_{n-1},By_{n-1}+Cy_{n-1})\} \]

\(A(x) = B(x) \times C(x)\) 时有:

\[A(x) = \{(x_0,By_0\times Cy_0),(x_1,By_1\times Cy_1),\dots,(x_{n-2},By_{n-2}\times C y_{n-2}),(x_{n-1},By_{n-1}\times Cy_{n-1})\} \]

系数表达

一个次数界为 \(n\) 的多项式 \(A(x)\) 的系数表达是一个由 \(n\) 个系数组成的多项式:

\[a_0x^0 + a_1x^1 + a_2x^2 + \dots + a_{n-2}x^{n-2}+a_{n-1}x^{n-1} \]

系数表达与点值表达的关系

对于任意一个由 \(n\) 个点对组成的点值表达都有唯一一个次数界为 \(n\) 的多项式与其对应。

有 \(y_i = A(x_i)\)。

把其写成矩阵形式:
\( \begin{bmatrix} 1 \quad x_0 \quad x_0^2 \quad &\cdots \quad x_0^{n-1}\\1 \quad x_1 \quad x_1^2 \quad &\cdots \quad x_1^{n-1}\\\vdots\quad\vdots\quad\vdots\quad&\ddots\quad\vdots\\1 \quad x_{n-1} \quad x_{n-1}^2 \quad &\cdots \quad x_{n-1}^{n-1}\\\end{bmatrix}\) \(\begin{bmatrix}a_0\\a_1\\\vdots\\a_{n-1}\end{bmatrix}\) \(=\) \(\begin{bmatrix}y_0\\y_1\\\vdots\\y_{n-1}\end{bmatrix}\)
范德蒙德矩阵在 \(x_i\) 皆不同的情况下有逆矩阵,因此有点值表达,能够确定系数 \(a_i\)。

拉格朗日插值

有:

\[A(x) = \sum_{i = 0}^{n-1} y_i\prod_{j \ne i}\dfrac{x-x_j}{x_i-x_j} \]

\[A(x) = \{(x_0,y_0),(x_1,y_1),\dots,(x_{n-2}, y_{n-2}),(x_{n-1},y_{n-1})\} \]

构造 \(A_i(x)\) 多项式满足:

\[A(x) = \sum_{i = 1}^{n-1}A_i(x_i) \]

\[A_i(x) = \{(x_0,0),(x_1,0),\dots,(x_i,y_i),\dots,(x_{n-2},0),(x_{n-1},0)\} \]

\[A(x) = \sum_{i = 1}^{n-1}A_i(x_i) = \{(x_0,y_0),(x_1,y_1),\dots,(x_{n-2}, y_{n-2}),(x_{n-1},y_{n-1})\} \]

\[A_i(x) = y_i \prod_{j\ne i}\dfrac{x-x_j}{x_i-x_j} \]

当 \(x = x_i\) 时有 \(\prod_{j\ne i}\dfrac{x_i-x_j}{x_i-x_j} = 1\),所以 \(A_i(x_i) = y_i\)
当 \(x \ne x_i\) 且 \(x = x_j\) 时有 \(x-x_j = 0\) 有 \(\dfrac{x_i-x_j}{x_i-x_j} = 0\) ,所以 \(A_i(x_i) = 0\)
因为 \(j \ne i\) 所以分母不会为零。

所以

\[A(x) = \sum_{i = 1}^{n-1}A_i(x_i)= \sum_{i = 0}^{n-1} y_i\prod_{j \ne i}\dfrac{x-x_j}{x_i-x_j} \]

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll p = 998244353;
ll ksm(ll x, ll y){
    ll cur = 1; x = (x + p) % p;
    while(y){
        if(y&1) cur = (cur*x)%p;
        x = (x*x)%p, y >>= 1;
    }
    return cur;
}
const int N = 5e4;
ll n, k, x_i[N], y_i[N], i, j, t;
int main(){
    scanf("%lld %lld", &n, &k);
    for(i = 1; i <= n; i ++)
        scanf("%lld %lld", &x_i[i], &y_i[i]);
    ll ans = 0;
    for(i = 1; i <= n; i ++){
        t = y_i[i];
        for(j = 1; j <= n; j ++) if(i != j){
            t = (1ll * t * ((k - x_i[j] + p)%p) % p * 1ll * ksm(x_i[i] - x_i[j], p-2) % p) % p;
        }
        ans = (ans + t) % p;
    }
    printf("%lld\n", ans);
    return 0;
}

标签:dots,拉格朗,插值,ll,ne,Cy,bmatrix,quad
From: https://www.cnblogs.com/dadidididi/p/17105155.html

相关文章

  • 混合应用字符串插值、字符串格式方法生成动态查询语句
    Strings=String.Format("select*fromPrice_ItemDeptswhereFeeDeptID={0}{1}{2}",$"'{deptID}'",string.IsNullOrEmpty(categoryID)?""......
  • 拉格朗日插值
    拉格朗日插值公式任给定\(F\)中\(2n+2\)个数\(x_1,x_2,…,x_{n+1},y_1,y_2,…,y_{n+1},\)其中\(x_1,x_2,…x_{n+1}\)互不相同,则存在唯一的次数不超过n的多项式\(f(x)\),满足\(f(x_i)=......
  • 拉格朗日插值学习笔记
    拉格朗日插值首先一个定理:n个点(横坐标不同)唯一确定一个最高n-1次的多项式。拉格朗日插值法用于在\(O(n^2)\)的时间复杂度内解决以下问题给定\(n\)个点\((x_i,y_......
  • vuejs从入门到精通——Vue语法——插值绑定
    Vue语法——插值绑定插值绑定是Vue中最常见的、最基本的语法。绑定的内容主要有文本插值和HTML插值两种。一、文本插值文本插值用双大括号{{}}将要绑定的变量、值......
  • 拉格朗日插值
    本文作者为JustinRochester。目录地址上一篇下一篇......
  • 在不使用cv2等库的情况下利用numpy实现双线性插值缩放图像
    起因我看到了一个别人的作业,他们老师让不使用cv2等图像处理库缩放图像算法介绍如果你仔细看过一些库里缩放图像的方法参数会发现有很多可选项,其中一般默认是使用双线性......
  • 多项式插值
    一个\(n-1\)次多项式,可以用\(n\)个点\((x_i,y_i)\)表示。知道了某个多项式上\(n\)个点的点值,可以用拉格朗日插值公式还原出多项式,或者求给定\(x\)的函数值。朴......
  • 拉格朗日插值法
    概述拉格朗日插值法(下简称拉插)是一种多项式单点求值的算法。对于任意的\(K\)次多项式,我们可以利用其已知的\(K+1\)个或更多的点唯一确定该多项式的形式,且拥有比......
  • vue的基础安装和插值语法和v-bind;v-on;v-if和v-show的区别
    vue渐进式概念渐进式:逐渐增强,可以在项目中使用vue的一部分功能,也可以使用vue全家桶来管理vue项目vue的mvvm的框架模型M:model数据模型(ajax获取到的数据)V:view视图(页面)VM......
  • 拉格朗日插值
    连续的取点,时间复杂度\(O(n)\)模板#include<iostream>#include<cstdio>usingnamespacestd;constintN=60,MOD=998244353;intn,k,fac[N],inv[N],pows[......