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°)的近似值,并进行误差分析。
实验目的:
- 熟悉Lagrange插值的基本思想。2. 掌握构造插值基函数以及Lagrange插值多项式的方法。3. 学习使用编程语言 (例如Matlab) 实现Lagrange插值并计算给定点处的近似值。4. 通过绘制被插函数与插值函数的曲线,直观地分析插值误差。
Lagrange插值法简介:
Lagrange插值法是一种常用的函数逼近方法,它使用拉格朗日插值多项式来逼近函数。其基本思想是:对于n+1个给定的数据点(x_0,y_0), (x_1,y_1), ..., (x_n,y_n),可以构造一个n次多项式L(x)使其满足L(x_i)=y_i (i=0,1,...,n)。
Lagrange插值多项式的基函数:
L_i(x) = Π_(j=0,j≠i)^n (x - x_j) / (x_i - x_j)
*Matlab代码实现:matlabfunction [x_vals, y_vals, p] = lagrange_interpolation(x_known, y_known, x_interp) % 确定插值点的个数 n = length(x_known); % 初始化插值多项式和插值点的纵坐标 p = zeros(size(x_interp)); y_interp = zeros(size(x_interp)); % 计算插值多项式的各项 for i = 1:length(x_interp) % 计算基函数的分子和分母 numer = ones(size(x_known)); denom = ones(size(x_known)); for j = 1:n 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_interp(i) = cosd(x_interp(i)); end % 返回插值点的横坐标、插值点的纵坐标和插值多项式 x_vals = x_interp; y_vals = y_interp;end
% 已知余弦值的横坐标x_known = [30, 45, 60, 90];% 已知余弦值的纵坐标y_known = [sqrt(3)/2, sqrt(2)/2, 1/2, 0];
% 插值点的横坐标x_interp = [-40, 47, 53, 79, 174];
% 使用Lagrange插值计算插值点的近似值[x_vals, y_vals, p] = lagrange_interpolation(x_known, y_known, x_interp);
% 绘制余弦函数曲线和插值多项式的曲线x_cos = 0:0.1:180;y_cos = cosd(x_cos);
figure;plot(x_cos, y_cos, 'b-', 'LineWidth', 2);hold on;plot(x_vals, y_vals, 'r--', 'LineWidth', 2);xlabel('x');ylabel('cos(x)');title('Comparison of Cosine Function and Lagrange Interpolation');legend('Cosine Function', 'Lagrange Interpolation');grid on;
% 计算插值误差errors = abs(cosd(x_interp) - p);disp('插值点的近似值:');disp(p);disp('插值误差:');disp(errors);
结果分析:
运行以上代码,可以得到插值点的近似值和插值误差,并绘制出余弦函数曲线和插值多项式的曲线。通过观察曲线的拟合程度,可以直观地分析插值误差的大小。
结论:
Lagrange插值法可以有效地逼近函数,并计算给定点处的近似值。但是需要注意的是,插值误差的大小与插值点的选择有关。
原文地址: https://www.cveoy.top/t/topic/5hu 著作权归作者所有。请勿转载和采集!