拉格朗日插值图

时间:2015-02-01 23:08:56

标签: matlab graphics graph interpolation polynomial-math

这是拉格朗日插值的代码。我正在调用一个名为polyinterp的函数来执行插值。

我试图在[ - ππ]中逼近罪( x )。 如果我使用12个点进行插值,我得到的结果很好。 然而,如果我尝试使用200点进行插值,我无法理解图形,因为绿线应该绘制罪( x ),蓝色圆圈表示使用的点。

x=linspace(-pi,pi,200)
target=sin(x);
figure('name', 'Polynomial Interpolation 200 points'); 
u=-pi:0.01:pi
output_2 = polyinterp(u,x,target);
plot(x,target,'o',u,output_2,'-')
axis([-pi,pi, -1,1]);
xlabel('x (radians)');    %  label the x-axis
ylabel('sine function');  %  label the y-axis
title('sin(x)');

enter image description here

对于12点插值,我改变了这一行:

x=linspace(-pi,pi,12)

enter image description here

任何帮助都将受到高度赞赏。感谢

1 个答案:

答案 0 :(得分:1)

您的问题可能是由于浮点精度有限造成的。我不知道究竟polyinterp究竟是什么,但通常n个点定义了第(n-1)阶多项式。在你的情况下它是第199顺序。这意味着它有一个x ^ 199项,x的范围是-3到3.检查eps(3.^199),你会得到由浮点运算引起的巨大精度误差。