import numpy as np
# 定义Lagrange插值函数
def lagrange_interpolation(x, y, xi):
n = len(x)
yi = 0.0
for i in range(n):
# 计算拉格朗日插值多项式的每一项
term = y[i]
for j in range(n):
if j != i:
term *= (xi - x[j]) / (x[i] - x[j])
yi = term
return yi
# 示例数据点
x = np.array([0.32, 0.34, 0.36])
y = np.array([0.314567, 0.333487, 0.352274])
# 要进行插值的点
xi = 0.3367
# 进行插值
yi = lagrange_interpolation(x, y, xi)
print("插值结果:", yi)
print("真实结果:", np.sin(xi))
输出:
代码语言:javascript复制
插值结果: 0.3303743620374999
真实结果: 0.330374191555628
4. C语言实现
代码语言:javascript复制
#include <stdio.h>
// 计算Lagrange插值多项式的值
double lagrange_interpolation(double x[], double y[], int n, double xi) {
double yi = 0.0;
for (int i = 0; i < n; i ) {
double term = y[i];
for (int j = 0; j < n; j ) {
if (j != i) {
term *= (xi - x[j]) / (x[i] - x[j]);
}
}
yi = term;
}
return yi;
}
int main() {
// 示例数据点
double x[] = {0.32, 0.34, 0.36};
double y[] = {0.314567, 0.333487, 0.352274};
// 要进行插值的点
double xi = 0.3367;
// 数据点的个数
int n = sizeof(x) / sizeof(x[0]);
// 进行插值
double yi = lagrange_interpolation(x, y, n, xi);
printf("插值结果:%fn", yi);
return 0;
}