这是拉格朗日插值的代码 . 我正在调用一个名为 polyinterp
的函数来执行插值 .
我试图近似[-π,π]中的sin(x) . 如果我使用12个点进行插值,我得到的结果很好 . 然而,如果我尝试使用200点进行插值,我无法理解图形,因为绿线应该绘制sin(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)');
对于12点插值,我改变了这一行:
x=linspace(-pi,pi,12)
任何帮助将受到高度赞赏 . 谢谢
1 回答
您的问题可能是由有限的浮点精度引起的 . 我不知道究竟是什么
polyinterp
,但通常n个点定义了第(n-1)阶的多项式 . 在你的情况下,这是第199顺序 . 这意味着它有一个x ^ 199项,x的范围是-3到3.检查eps(3.^199)
,你会得到由浮点运算引起的巨大精度误差 .