# Lagrange插值法
import numpy as np
def lagrange_interpolation(x, y, x_new):
"""
Lagrange 线性插值
输入:
x - 已知的 x 坐标序列
y - 已知的 y 坐标序列
x_new - 需要计算插值的 x 坐标序列
输出:
y_new - 插值计算得到的 y 坐标序列
"""
n = len(x)
y_new = []
for xn in x_new:
# 计算每个插值点的 Lagrange 基函数
L = [np.prod((xn - x[j]) / (x[i] - x[j])) for i in range(n) for j in range(n) if i != j]
# 计算插值点的 y 坐标
y_n = sum([y[i] * L[i] for i in range(n)])
y_new.append(y_n)
return y_new
# 示例使用
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
x_new = [1.5, 2.7, 3.8, 4.2]
y_new = lagrange_interpolation(x, y, x_new)
print("插值后的 y 坐标序列:", y_new)