数值分析之拉格朗日插值实现

#include 
// 定义最大数据点数
#define MAXN 100
double x[MAXN], y[MAXN];
double lagrange(int n, double p) {
    double result = 0;  // 初始化结果
    for (int i = 0; i < n; i++) {
        double term = y[i];
        for (int j = 0; j < n; j++) {
            if (j != i)
                term = term * (p - x[j]) / (x[i] - x[j]);
        }
        result += term;
    }
    return result;
}
int main() {
    int n;
    printf("请输入数据点的数量: ");
    scanf("%d", &n);
    printf("请输入每个数据点的x和y值:\n");
    for (int i = 0; i < n; i++) {
        printf("数据点%d: ", i+1);
        scanf("%lf %lf", &x[i], &y[i]);
    }
    double p;
    printf("请输入你想要插值的x值: ");
    scanf("%lf", &p);
    printf("插值结果为: %lf\n", lagrange(n, p));
    return 0;
}

点赞关注有好运

你可能感兴趣的:(数值分析,算法,c语言,经验分享,数据结构)