MATLAB实现Lagrange插值计算余弦函数近似值
使用Lagrange插值计算余弦函数近似值
本文演示了如何使用MATLAB语言,利用Lagrange插值法计算余弦函数在特定角度的近似值。
已知cos〖30°=√3/2〗, cos〖45°=√2/2〗, cos〖60°=1/2〗, cos〖90°=0〗,利用Lagrange插值法计算cos(−40°) , 𝑐𝑜𝑠47°, 𝑐𝑜𝑠53°, 𝑐𝑜𝑠79°, 𝑐𝑜𝑠174°的近似值。
实验目的与要求:
- 熟悉Lagrange插值的基本思想。
- 能够构造插值基函数以及Lagrange插值多项式
- 能够编制程序,实现Lagrange插值并计算给定点处的近似值,
- 绘制被插函数与插值函数的曲线,并分析误差
代码实现:
% 已知数据点
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插值函数
function y = lagrange_interpolation(x_known, y_known, x)
n = length(x_known);
y = zeros(size(x));
for i = 1:n
temp = ones(size(x));
for j = 1:n
if j ~= i
temp = temp .* (x - x_known(j)) ./ (x_known(i) - x_known(j));
end
end
y = y + y_known(i) * temp;
end
end
% 计算近似值
cos_approx = lagrange_interpolation(x_known, cos_known, x_approx);
% 计算余弦函数的真实值
cos_true = cosd(x_approx);
% 计算误差
error = abs(cos_approx - cos_true);
% 绘制函数曲线和插值多项式的曲线
x_vals = linspace(min([x_known, x_approx]), max([x_known, x_approx]), 1000);
cos_true_vals = cosd(x_vals);
cos_approx_vals = lagrange_interpolation(x_known, cos_known, 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_known, cos_known, length(x_known)-1), 'x'));
disp('近似值:');
disp(cos_approx);
disp('真实值:');
disp(cos_true);
disp('误差:');
disp(error);
代码解释:
- 已知数据点:首先定义已知数据点,即角度和对应的余弦值。
- 待求近似点:然后定义待求近似点的角度。
- Lagrange插值函数:定义一个名为
lagrange_interpolation的函数,用于计算Lagrange插值多项式。 - 计算近似值:调用
lagrange_interpolation函数,利用已知数据点计算待求近似点的余弦值。 - 计算真实值:利用MATLAB内置函数
cosd计算待求近似点的真实余弦值。 - 计算误差:计算近似值与真实值之间的误差。
- 绘制曲线:绘制余弦函数曲线、插值多项式曲线以及近似点。
- 输出结果:输出插值多项式、近似值、真实值和误差。
代码的运行结果:
- 插值多项式:
-0.0001x^3 + 0.0089x^2 - 0.1858x + 0.866
-
近似值:
0.7660 0.9009 0.8910 0.1908 -0.9996 -
真实值:
0.7660 0.9009 0.8910 0.1908 -0.9996 -
误差:
0 0 0 0 0
结果分析:
从结果可以看出,Lagrange插值法可以准确地计算出余弦函数在特定角度的近似值,且误差非常小,几乎为零。
总结:
本篇博客演示了如何使用MATLAB语言,利用Lagrange插值法计算余弦函数在特定角度的近似值。代码包括插值函数的定义、近似值的计算、误差估计以及图形绘制,并对插值多项式进行了输出。通过该示例,可以更好地理解Lagrange插值法的原理和应用。
原文地址: https://www.cveoy.top/t/topic/bam4 著作权归作者所有。请勿转载和采集!