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

拉格朗日插值

时间:2023-01-28 18:44:53浏览次数:50  
标签:拉格朗 插值 cdot int mod ri define

拉格朗日插值公式

任给定\(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)=y_i{\color{white}..}(i=1,2,…,n+1)\),这里

\[f(x)=\sum_{i=1}^{n}{y_i\cdot(\prod_{j\ne i}^{1\le j\le n}\frac{(x-x_j)}{(x_i-x_j)})} \]

叫做拉格朗日插值公式。

公式的几何解释是:存在唯一的次数不超过\(n\)的抛物线

\[{\color{white}..} y=a_0+a_1 \cdot x+a_2 \cdot x^2+…+a_n \cdot a^n {\color{white}..} \]

通过平面上的给出的\(n+1\)个点\(M_1(x_1,y_1),M_2(x_2,y_2),…,M_{n+1}(x_{n+1},y_{n+1})\)。

特别地,如对于自变数的两个值,给出了线性函数的\((n=1)\)对应值,这线性函数就被确定。从几何方面说,直线由其两点确定,即:

\[y=y_1 \cdot \frac{x-x_2}{x_1-x_2}+y_2\cdot\frac{x-x_1}{x_2-x_1} \]

code

给定这 \(n\) 个点,确定这个 \(n-1\) 次多项式,并求出 \(f(k) \mod 998244353\) 的值。
题目链接
题解

AC·code

#include<bits/stdc++.h>
#define il inline
#define cs const
#define ri register
#define int long long 
using namespace std;
namespace Q{
    il int rd(){
        ri int x=0,f=1;ri char c=getchar();
        while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
        while(c>='0'&&c<='9') x=x*10+(c^48),c=getchar();
        return x*f; 
    }
    il void wt(int x){
        if(x<0) x=-x,putchar('-');
        if(x>=10) wt(x/10);
        return putchar(x%10+48),void();
    }
}
cs int mod=998244353,N=2e3+5;
int n,k,x[N],y[N];
il int qpow(int a,int b){
    int as=1;
    while(b){
        if(b&1) as=as*a%mod;
        a=a*a%mod,b>>=1;
    }
    return as;
}
signed main(){
    n=Q::rd(),k=Q::rd();
    for(ri int i=1;i<=n;++i){
        x[i]=Q::rd(),y[i]=Q::rd();
    }
    int as=0;
    for(ri int i=1;i<=n;++i){
        int s=1;
        for(ri int j=1;j<=n;++j){
            if(i==j) continue;
            s=s*(k-x[j])%mod*qpow(x[i]-x[j],mod-2)%mod;
        }
        as=(as+s*y[i]%mod)%mod;
    }
    Q::wt((as%mod+mod)%mod);//!!!!!!!
    return 0;
}

标签:拉格朗,插值,cdot,int,mod,ri,define
From: https://www.cnblogs.com/windymoon/p/17071094.html

相关文章

  • 拉格朗日插值学习笔记
    拉格朗日插值首先一个定理: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[......
  • 数值分析·学习 | 拉格朗日插值法matlab实现
    ​目录前言一、拉格朗日(Lagrange)插值是什么?二、matlab实现代码1.线性插值:2.抛物线插值:3.拉格朗日(Lagrange)插值:总结:前言本篇内容为个人所学知识分享一、拉格朗......
  • 数值分析·学习 | 牛顿插值法matlab实现
     目录前言一、牛顿插值法是什么?1.均差下的牛顿插值2.为了给出​编辑的表达式,引入均差的概念3.差分形式的牛顿插值公式(牛顿前插公式)三、matlab实现代码1.生成牛顿均......