求Lagrange插值函数的C++程序

来源:百度知道 编辑:UC知道 时间:2024/06/29 02:12:45
已知:
α 30° 40° 50° 60° 70° 80° 90°
m 2.73 2.14 1.75 1.49 1.28 1.13 1.00
n 0.49 0.57 0.64 0.72 0.80 0.89 1.00

用Lagrange插值函数求对于不同的α所对应的m、n的值,求此Lagrange插值函数的C++程序。 [参考答案,当α=62.51°时,m=1.43,n=0.73]

#include<iostream>
using namespace std;
const N=7;
double Lagrange(double x[N],double y[N],double xx) //Lagrange
{
int i,k;double lk,ln=0.0;
for(k=0;k<N;k++){lk=1.0;
for(i=0;i<N;i++)
if(i!=k)
lk*=(xx-x[i])/(x[k]-x[i]);
ln+=y[k]*lk;
}
return ln;
}
void main()
{
double a[N]={30,40,50,60,70,80,90,},m[N]={2.73,2.14,1.75,1.49,1.28,1.13,1.00},n[N]={0.49,0.57,0.64,0.72,0.80,0.89,1.00},aa=62.51;
cout<<"a="<<aa<<"\nm="<<Lagrange(a,m,aa)<<"\nn="<<Lagrange(a,n,aa)<<'\n';
}