Lagrange插值法计算cos函数近似值及误差分析(附MATLAB代码)
Lagrange插值法计算cos函数近似值及误差分析
本文将介绍如何使用Lagrange插值法计算cos函数在给定角度的近似值。我们将使用MATLAB编写代码,实现以下目标:
- 构造Lagrange插值基函数和插值多项式。
- 计算给定角度的cos函数近似值。
- 绘制余弦函数曲线和插值多项式的曲线。
- 分析插值误差。
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);
代码解释
- 首先,我们定义已知数据点的角度
x_known和对应的cos函数值cos_known。 - 接着,定义需要计算近似值的点
x_approx。 - 利用循环计算Lagrange插值基函数,并存储在矩阵
L中。 - 根据Lagrange插值公式计算近似值
cos_approx。 - 使用
cosd函数计算真实值cos_true。 - 计算近似值与真实值之间的误差
error。 - 利用
polyfit函数拟合插值多项式,并使用polyval函数计算多项式在指定点的值,用于绘制曲线。 - 绘制余弦函数曲线、插值多项式曲线以及近似点。
- 输出插值多项式、近似值、真实值以及误差。
总结
通过以上代码,我们可以方便地使用Lagrange插值法计算cos函数在特定角度的近似值,并分析插值误差。该方法可以推广到其他函数的插值计算中。
原文地址: https://www.cveoy.top/t/topic/47d 著作权归作者所有。请勿转载和采集!