本文共 626 字,大约阅读时间需要 2 分钟。
//拉格朗日插值#include#include const int maxn = 5; ///double x[maxn] = { 0.4, 0.55, 0.65, 0.8, 0.9};double y[maxn] = { 0.4175, 0.57815, 0.69657, 0.88811, 1.02652};double Lagrange(double x[maxn], double y[maxn], double X){ int i, k; double L, P = 0.0; for(k = 0; k < maxn; k++){ //计算P(x) L = 1.0; for(i = 0; i < maxn; i++) if(i != k) L *= ((X - x[i]) / (x[k] - x[i])); //用L计算基函数的值 P += (y[k] * L); } return P;}int main(){ double X; while(scanf("%lf", &X) != EOF) printf("P(%f) = %f\n", X, Lagrange(x, y, X)); return 0;}
实验结果