依推适轮、算法原理给定一组点(x1,y1),(x2,y2),...,(xn,yn)构造一个次数不超过 n 的多项式L(x)满足L(xi)yi,i1,2,...,n函数曲线严格穿过了所有已知点。表达式的构造采用这样一种巧妙的形式基于已知点自变量构造分式使其在已知点处恒为1其他恒为0即L(x)n∑i0?????yi?n∏j0j≠ix?xjxi?xj?????其中∏nj0j≠ix?xjxi?xj称为拉格朗日基函数它在xi的值为1其他为0。这样函数刚好在xi处取得值yi。二、示例现基于三个点(1,2)、(2,3)、(3,5)构造拉格朗日插值函数并计算在 x2.5 处的函数值。根据已知点由拉格朗日插值算法构造函数为L(x)y0?(x?x1)(x?x2)(x0?x1)(x0?x2)y1?(x?x0)(x?x2)(x1?x0)(x1?x2)y2?(x?x0)(x?x1)(x2?x0)(x2?x1)2?(x?2)(x?3)(1?2)(1?3)3?(x?1)(x?3)(2?1)(2?3)5?(x?1)(x?2)(3?1)(3?2)当x2.5时计算得y3.875。三、Python实现拉格朗日插值算法示例基于三个点(1,2)、(2,3)、(3,5)构造拉格朗日插值函数并计算在 x2.5 处的函数值。def lagrange_interpolation(x_points, y_points, x):拉格朗日插值法三点版:param x_points: 已知点的x坐标列表长度为3:param y_points: 已知点的y坐标列表长度为3:param x: 需要插值的x值:return: 插值得到的y值# 解包三个已知点的x坐标x0, x1, x2 x_points# 解包三个已知点的y坐标y0, y1, y2 y_points# 计算三个拉格朗日基函数l0 ((x - x1) * (x - x2)) / ((x0 - x1) * (x0 - x2))l1 ((x - x0) * (x - x2)) / ((x1 - x0) * (x1 - x2))l2 ((x - x0) * (x - x1)) / ((x2 - x0) * (x2 - x1))# 计算插值结果y y0 * l0 y1 * l1 y2 * l2return y# 示例三个已知点 (1,2)、(2,3)、(3,5)x_points [1, 2, 3]y_points [2, 3, 5]# 计算x2.5处的插值结果interpolated_x 2.5interpolated_y lagrange_interpolation(x_points, y_points, interpolated_x)# 输出结果print(f已知点x{x_points}, y{y_points})print(f插值点 x{interpolated_x} 对应的y值为{interpolated_y:.4f})# 验证计算已知点的插值结果应该等于原y值print(\n验证已知点插值结果)for x in x_points:y lagrange_interpolation(x_points, y_points, x)print(fx{x} 插值结果y{y:.4f} (原y值{y_points[x_points.index(x)]}))结果图End.