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

[浅谈] 拉格朗日插值

时间:2023-06-07 16:12:49浏览次数:47  
标签:拉格朗 浅谈 插值 int read mod neq

Introduce

给定 \(n\) 个点,那么可以确定一个不超过 \(n-1\) 项的多项式函数值。我们可以使用高斯消元,但是 \(O(n^3)\) 的时间复杂度和精度误差难以接受。

Principle

我们考虑构造函数 \(fi\) ,满足其在 \(x=x_i\) 时函数值为 \(1\) ,在 \(x=x_j(j\neq i,j\in[1,n])\) 是 \(0\),这很好构造: $fi(x)=\prod_{j\neq i}\frac{x-x_j}{x_i-x_j} $ 。

然后再构造 \(f(x)=\sum_{i=1}^{n}y_ifi(x)\) ,那么这个函数就经过这 \(n\) 个点。

\(f(x)=\sum_{i=1}^{n}y_i\prod_{j\neq i}\frac{x-x_j}{x_i-x_j}\)

\(\text{P4781 【模板】拉格朗日插值}\)

给定 \(n\) 点确定多项式,求 \(f(k)\) ,直接代入上面的公式。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e3+110,mod=998244353;
int read(){
	int x=0,f=1;char c=getchar();
	while(c>'9' || c<'0'){if(c=='-')f=-1;c=getchar();}
	while(c>='0' && c<='9'){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
	return x*f;
}
int n,k,x[N],y[N],ans;
int ksm(int x,int y){
	int sum=1;
	while(y){
		if(y&1)sum=(sum*x)%mod;
		y>>=1;
		x=(x*x)%mod;
	}
	return sum%mod;
}
signed main(){
	n=read(),k=read();
	for(int i=1;i<=n;i++)x[i]=read(),y[i]=read();
	for(int i=1;i<=n;i++){
		int tmp=y[i];
		for(int j=1;j<=n;j++)if(j!=i)tmp=tmp%mod*(k-x[j])%mod*ksm(x[i]-x[j],mod-2)%mod;
		ans=(ans+tmp)%mod;
	}
	printf("%lld\n",(ans+mod)%mod);
	return 0;
}

标签:拉格朗,浅谈,插值,int,read,mod,neq
From: https://www.cnblogs.com/FJOI/p/17463568.html

相关文章

  • 浅谈二次剩余与Cipolla算法
    Preface数论菜鸡来补一手知识黑洞,二次剩余以前OI时期还真一点没了解过,所以先写个板题先(虽然当初想着反正到时候有数学巨佬队友带我飞,但多学一点总是好的)二次剩余又俗称模意义下开根,用于求解\(x^2\equivn\pmodp\)这样的方程但注意一般情况下我们只讨论当\(p\)为奇素数时的情......
  • 【动态规划】【拉格朗日插值优化dp】集训队互测2012 calc
    【动态规划】【拉格朗日插值优化dp】集训队互测2012calc题目描述一个序列\(a_1,a_2,\dots,a_n\)是合法的,当且仅当:\(a_1,a_2,\dots,a_n\)都是\([1,k]\)中的整数。\(a_1,a_2,\dots,a_n\)互不相等。一个序列的值定义为它里面所有数的乘积,即\(a_1\timesa_2\times\dots......
  • 浅谈 ByteHouse Projection 优化实践
    预聚合是OLAP系统中常用的一种优化手段,在通过在加载数据时就进行部分聚合计算,生成聚合后的中间表或视图,从而在查询时直接使用这些预先计算好的聚合结果,提高查询性能,实现这种预聚合方法大多都使用物化视图来实现。Clickhouse社区实现的Projection功能类似于物化视图,原始的概念......
  • 浅谈mysql索引类型(normal、unique、full textl) 的区别和使用场景
    mysql索引类型mysql索引类型normal,unique,fulltext的区别是什么?normal:表示普通索引unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为uniquefulltextl:表示全文搜索的索引。FULLTEXT用于搜索很长一篇文章的时候,效果最好。用在......
  • 2022-2023 春学期 矩阵与数值分析 C6 插值函数的应用
    2022-2023春学期矩阵与数值分析C6插值函数的应用原文C6插值函数的应用6.1插值型求积公式数值型求积公式用于解决难以找到原函数的积分问题问题描述:设\(f(x)\)是定义在\([a,b]\)上的可积函数,考虑带权积分\[I(f)=\int^b_a\rho(x)f(x)dx\]其中权函数\(\rho(x)\)......
  • 浅谈java异常[Exception]
    评:一.异常的定义在《java编程思想》中这样定义异常:阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常。绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败。之所以java要提出异常处理机制,就是要......
  • 拉格朗日插值
    \(n+1\)个点可以唯一确定一个最高为\(n\)次的多项式。\(f(k)=\sum_{i=0}^{n}y_i\prod_{i\neqj}\frac{k-x[j]}{x[i]-x[j]}\)例题:https://www.luogu.com.cn/problem/P4781给定多项式上的\(n\)个点,求出\(f(x)\)。......
  • Vue插值语法,文本指令,事件指令v-on,属性指令v-bind
    Vue插值语法:总结:插值语法使用{{}}传入变量,相当于形参  script中data中传入变量值,相当于实参,vue将data的值传给{{}}中html中:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scr......
  • 浅谈僵尸网络利器:Fast-flux技术——只是一些特定的apt组织才使用,倒是很少在恶意软件的
    DynamicResolution: FastFluxDNSOthersub-techniquesofDynamicResolution(3)AdversariesmayuseFastFluxDNStohideacommandandcontrolchannelbehindanarrayofrapidlychangingIPaddresseslinkedtoasingledomainresolution.Thistechniqueus......
  • 【kafka】浅谈kafka常考特性
    Kafka前几天聊完绩效的时候问了下今年还有没有涨薪,组长的原话是"很难。。。我尽量帮大家争取。。。",我刚听完脑海的第一念头:"此处涨薪难,自有不难处!"。冷静分析一波,今年整体大环境不行,还是苟着拿波年终吧,先不准备跳了,跟大家浅浅分享一下之前准备的kafka相关知识点,等看机会的时候可......