如何创建均匀间隔和不均匀间隔的网格

时间:2018-02-17 10:57:00

标签: matlab

我正在尝试为test_Lagrange_interpolation()创建一个函数。

我需要绘制(1)构建在网格(2)上的拉格朗日插值,其中N = 8个节点,并在x处进行评估。 和 另一个图拉格朗日插值(1)建立在网格(3)上,其中N = 8个节点并在x处进行评估。

因此,换句话说,为了使空间网格均匀,我们可以使用linspace(-1,1,9) 对于不稳定的空间网格我们可以使用什么?

Thankx

1 个答案:

答案 0 :(得分:1)

首先,我们有Lagrange polynomials类型

enter image description here

  • 偶数网格插值意味着我们生成偶数x进行插值。
  • 不均匀的网格插值表示x是不均匀的向量。

那么,不均匀插值有什么好处?这是由于偶数插值的一些不足:Runge's phenomenon这是一个区间边缘振荡的问题,当在一组等间距插值点上使用高次多项式时发生这种问题

换句话说,请看下图。左边是具有偶数网格的LaGrange多项式,右边的网格是不均匀的(Chebyshev polynomials),我们可以认为在这种情况下,正确的网格(不均匀网格)的性能更好。

enter image description here

代码:

clc; clear;
syms X
subplot(1,2,1)
ezplot('1/(1+25*x^2)',[-3 3])
Y=0;
xx=-3:0.5:3;
yy=1./(1+25*xx.^2);
for ii=1:length(xx)
  tmp=1;
  for jj=1:length(xx)
    if (jj == ii)
        continue;
    end
    tmp=tmp*(X-xx(jj))/(xx(ii)-xx(jj));
  end
  Y=Y+tmp*yy(ii);
end
hold on
ezplot(Y,[-3 3])
axis([-3 3 0 1.2])
title('even grid')

subplot(1,2,2)
ezplot('1/(1+25*x^2)',[-3 3])
Y2=0;
xx=-cos((0:12)/12*pi)*3;
yy=1./(1+25*xx.^2);
for ii=1:length(xx)
  tmp=1;
  for jj=1:length(xx)
    if (jj == ii)
        continue;
    end
    tmp=tmp*(X-xx(jj))/(xx(ii)-xx(jj));
  end
  Y2=Y2+tmp*yy(ii);
end
hold on
ezplot(Y2,[-3 3])
axis([-3 3 0 1.2])
title('uneven grid')

希望它有所帮助!