习题7.10(1)

1.代码实现

点击查看代码
import numpy as np
import pylab as plt

# 原始数据点
x0 = np.array([-2, -1.7, -1.4, -1.1,-0.8, -0.5, -0.2, 0.1, 0.4, 0.7, 1, 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4, 4.3, 4.6, 4.9])
y0 = np.array([0.1029, 0.1174, 0.1316, 0.1448, 0.1566, 0.1662, 0.1733, 0.1775, 0.1785, 0.1764, 0.1711, 0.1630, 0.1526, 0.1402,
               0.1266, 0.1122, 0.0977, 0.0835, 0.0702, 0.0588,0.0479, 0.0373, 0.0291, 0.0224])
# 添加新的数据点
x0 = np.append(x0, 5)
y0 = np.append(y0, 0.05)


# 拉格朗日插值法
def lagrange_interpolation(x, x_data, y_data):
    n = len(x_data)
    y_interp = np.zeros_like(x)

    for i in range(n):
        li = np.ones_like(x)
        for j in range(n):
            if j!= i:
                li *= (x - x_data[j]) / (x_data[i] - x_data[j])
        y_interp += y_data[i] * li

    return y_interp

# 绘制数据点和拟合曲线
plt.plot(x0, y0, 'ro')  # 红色圆点

xt = np.linspace(-2, 5, 100)
y_interp = lagrange_interpolation(xt, x0, y0)
plt.plot(xt, y_interp, '--b')  # 蓝色虚线

plt.show()

2.运行结果

posted on 2024-11-14 20:50  克卜勒星球  阅读(5)  评论(0编辑  收藏  举报

导航