基于Lagrange插值的余弦函数逼近及误差分析

本文旨在利用Lagrange插值方法逼近余弦函数,并探讨其误差。

问题背景:

已知cos(30°)=√3/2,cos(45°)=√2/2,cos(60°)=1/2,cos(90°)=0。要求使用 Lagrange 插值计算 cos(-40°), cos(47°), cos(53°), cos(79°), cos(174°) 的近似值,并完成以下目标:

  1. 给出插值多项式。2. 绘制余弦函数曲线和插值多项式的曲线。3. 估计误差。

实验目的与要求:

  1. 熟悉Lagrange插值的基本思想。2. 能够构造插值基函数以及Lagrange插值多项式。3. 能够编制程序,实现Lagrange插值并计算给定点处的近似值。4. 绘制被插函数与插值函数的曲线,并分析误差。

Lagrange插值方法:

Lagrange插值多项式使用以下基函数进行构造:

L_i(x) = Π_(j=0,j≠i)^n (x - x_j) / (x_i - x_j)

其中,n是插值点的个数,x_i是第i个插值点的横坐标。

**Python代码实现:**pythonimport numpy as npimport matplotlib.pyplot as plt

def lagrange_interpolation(x_known, y_known, x_interp): # 确定插值点的个数 n = len(x_known)

# 初始化插值多项式和插值点的纵坐标和误差    p = np.zeros_like(x_interp)    y_vals = np.zeros_like(x_interp)    errors = np.zeros_like(x_interp)

# 计算插值多项式的各项    for i in range(len(x_interp)):        # 计算基函数的分子和分母        numer = np.ones_like(x_known)        denom = np.ones_like(x_known)

    for j in range(n):            if j != i:                numer *= (x_interp[i] - x_known[j])                denom *= (x_known[i] - x_known[j])

    # 计算插值多项式的第i项        p[i] = np.sum(y_known * numer / denom)

    # 计算插值点的纵坐标和误差        y_vals[i] = np.cos(np.deg2rad(x_interp[i]))        errors[i] = np.abs(y_vals[i] - p[i])

return p, y_vals, errors

已知余弦值的横坐标x_known = [30, 45, 60, 90]# 已知余弦值的纵坐标y_known = [np.sqrt(3)/2, np.sqrt(2)/2, 1/2, 0]

插值点的横坐标x_interp = [-40, 47, 53, 79, 174]

使用Lagrange插值计算插值点的近似值p, y_vals, errors = lagrange_interpolation(x_known, y_known, x_interp)

绘制余弦函数曲线和插值多项式的曲线x_cos = np.linspace(-180, 180, 1000)y_cos = np.cos(np.deg2rad(x_cos))

plt.plot(x_cos, y_cos, label='Cosine Function')plt.plot(x_interp, y_vals, 'ro', label='Interpolation Points')plt.plot(x_interp, p, 'g--', label='Interpolation Polynomial')plt.xlabel('x')plt.ylabel('cos(x)')plt.title('Comparison of Cosine Function and Lagrange Interpolation')plt.legend()plt.grid(True)plt.show()

显示插值多项式print('插值多项式:')print(p)

显示插值点的近似值和误差print('插值点的近似值:')print(y_vals)print('插值误差:')print(errors)

结果分析:

  • 程序输出插值多项式的系数,并绘制余弦函数曲线和插值多项式的曲线图。- 通过对比曲线图,可以直观地观察插值效果。- 程序还会计算每个插值点的近似值和误差,用于评估插值的精度。

结论:

Lagrange插值提供了一种简单直观的函数逼近方法,可以用于计算函数在未知点的近似值。然而,插值误差的大小受到插值节点选择和函数本身性质的影响。

基于Lagrange插值的余弦函数逼近及误差分析

原文地址: https://www.cveoy.top/t/topic/92n 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录