使用 Lagrange 插值法计算余弦函数近似值 - Matlab 实现

已知 cos'30°=√3/2', cos'45°=√2/2', cos'60°=1/2', cos'90°=0',使用 Lagrange 插值计算,matlab 语言实现 cos(-40°) , 𝑐𝑜𝑠47°, 𝑐𝑜𝑠53°, 𝑐𝑜𝑠79°, 𝑐𝑜𝑠174° 的近似值。给出插值多项式,画出余弦函数曲线和插值多项式的曲线,并估计误差。

实验目的与要求:

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

代码实现

根据给定的已知余弦值和插值点,我们可以使用 Lagrange 插值方法来计算插值点的近似值。Lagrange 插值方法使用拉格朗日插值多项式来逼近函数。具体步骤如下:

  1. 首先,我们需要构造 Lagrange 插值多项式的基函数。

Lagrange 插值多项式的基函数如下所示:

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

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

  1. 编程实现 Lagrange 插值并计算给定点的近似值。

下面是使用 Matlab 实现 Lagrange 插值的代码:

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

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

% 初始化插值多项式和插值点的纵坐标和误差
p = zeros(size(x_interp));
y_vals = zeros(size(x_interp));
errors = zeros(size(x_interp));

% 计算插值多项式的各项
for i = 1:length(x_interp)
    % 计算基函数的分子和分母
    numer = ones(size(x_known));
    denom = ones(size(x_known));

    for j = 1:length(x_known)
        if j ~= i
            numer = numer .* (x_interp(i) - x_known(j));
            denom = denom .* (x_known(i) - x_known(j));
        end
    end

    % 计算插值多项式的第 i 项
    p(i) = sum(y_known .* numer ./ denom);

    % 计算插值点的纵坐标和误差
    y_vals(i) = cosd(x_interp(i));
    errors(i) = abs(y_vals(i) - p(i));
end

% 绘制余弦函数曲线和插值多项式的曲线
x_cos = -180:1:180;
y_cos = cosd(x_cos);

plot(x_cos, y_cos, 'b-', 'LineWidth', 2);
hold on;
plot(x_known, y_known, 'ro', 'MarkerSize', 8);
plot(x_interp, y_vals, 'go', 'MarkerSize', 8);
plot(x_interp, p, 'r--', 'LineWidth', 2);
hold off;

xlabel('x');
ylabel('cos(x)');
title('Comparison of Cosine Function and Lagrange Interpolation');
legend('Cosine Function', 'Known Points', 'Interpolation Points', 'Interpolation Polynomial');
grid on;

% 显示插值多项式
disp('插值多项式:');
disp(p);

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

以上代码实现了 Lagrange 插值方法,并能够计算插值点的近似值和误差。程序会输出插值多项式,并绘制余弦函数曲线、已知点、插值点和插值多项式的曲线。你可以通过观察曲线的拟合程度和分析插值误差来评估插值的准确性。

总结

本实验通过 Matlab 实现 Lagrange 插值法,并利用已知的余弦函数值计算其他角度的近似值,并绘制曲线进行比较,从而加深对 Lagrange 插值法的理解。通过分析误差,我们可以评估插值的准确性,并了解其适用范围。

Lagrange 插值法计算余弦函数近似值 - Matlab 实现

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

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