拉格朗日插值法複習小計
阿新 • • 發佈:2018-12-24
拉格朗日插值法
概述
因為n次方的函式影象可以有n+1個點確定(比如說y=kx+b就只用兩個點確定,y=
拉格朗日插值法基本多項式
運用
首先給你n個x,和n個對應的y。(x[i],y[i])
有一個公式 (x)=∑ni=1yi∏nj=1,j≠ix−xjxi−xj
比如說x1=1,y1=5;x2=4,y2=14
那麼我們詢問x=15時,y=?
算出來後,y=47
證明
我們可以發現拉格朗日插值法基本多項式 ni=1li(x)
如果要求多項式的係數,可以把
拉格朗日插值法Code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
int x,i,j,k,l,t,n,m,a[100000 ],b[10000];//a是x,b是y
double temp,ans;
int main(){
scanf("%d",&n);
fo(i,1,n){
scanf("%d%d",&a[i],&b[i]);
}
scanf("%d",&x);
fo(i,1,n){
temp=b[i];
fo(j,1,n){
if(i==j) continue;
temp*=(x-a[j]);
temp/=(a[i]-a[j]);
}
ans+=temp;
}
printf("%.5lf",ans);
}
注意
拉格朗日插值法如果要在(mod p)意義下進行的話,那麼p只能是質數。
如果要mod非質數的話,那麼就要用牛頓插值法。