Lagrange插值法计算cos函数近似值及误差分析

本文将介绍如何使用Lagrange插值法计算cos函数在给定角度的近似值。我们将使用MATLAB编写代码,实现以下目标:

  1. 构造Lagrange插值基函数和插值多项式。
  2. 计算给定角度的cos函数近似值。
  3. 绘制余弦函数曲线和插值多项式的曲线。
  4. 分析插值误差。

MATLAB代码实现

% 已知数据点
x_known = [30, 45, 60, 90];
cos_known = [sqrt(3)/2, sqrt(2)/2, 1/2, 0];

% 待求近似点
x_approx = [-40, 47, 53, 79, 174];

% 生成Lagrange插值多项式
n = length(x_known);
L = zeros(n, length(x_approx));

for i = 1:n
    L(i,:) = prod((x_approx - x_known([1:i-1,i+1:end]))./(x_known(i) - x_known([1:i-1,i+1:end])));
end

cos_approx = sum(cos_known' .* L);

% 计算余弦函数的真实值
cos_true = cosd(x_approx);

% 计算误差
error = abs(cos_approx - cos_true);

% 绘制函数曲线和插值多项式的曲线
x_vals = linspace(-180, 180, 1000);
cos_true_vals = cosd(x_vals);
cos_approx_vals = polyval(polyfit(x_approx, cos_approx, n-1), x_vals);

figure;
plot(x_vals, cos_true_vals, 'b-', 'LineWidth', 1.5, 'DisplayName', 'Cosine Function');
hold on;
plot(x_vals, cos_approx_vals, 'r--', 'LineWidth', 1.5, 'DisplayName', 'Interpolation Polynomial');
scatter(x_approx, cos_approx, 100, 'ko', 'DisplayName', 'Approximation Points');
xlabel('Angle (degrees)');
ylabel('Cosine');
title('Cosine Function and Interpolation Polynomial');
legend('Location', 'best');
grid on;

% 输出结果
disp('插值多项式:');
disp(poly2str(polyfit(x_approx, cos_approx, n-1), 'x'));
disp('近似值:');
disp(cos_approx);
disp('真实值:');
disp(cos_true);
disp('误差:');
disp(error);

代码解释

  1. 首先,我们定义已知数据点的角度 x_known 和对应的cos函数值 cos_known
  2. 接着,定义需要计算近似值的点 x_approx
  3. 利用循环计算Lagrange插值基函数,并存储在矩阵 L 中。
  4. 根据Lagrange插值公式计算近似值 cos_approx
  5. 使用 cosd 函数计算真实值 cos_true
  6. 计算近似值与真实值之间的误差 error
  7. 利用 polyfit 函数拟合插值多项式,并使用 polyval 函数计算多项式在指定点的值,用于绘制曲线。
  8. 绘制余弦函数曲线、插值多项式曲线以及近似点。
  9. 输出插值多项式、近似值、真实值以及误差。

总结

通过以上代码,我们可以方便地使用Lagrange插值法计算cos函数在特定角度的近似值,并分析插值误差。该方法可以推广到其他函数的插值计算中。

Lagrange插值法计算cos函数近似值及误差分析(附MATLAB代码)

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

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