Runge现象
随着插值节点个数增加,反而不能更好地逼近被插值函数的现象。
以函数 y = 1 x 2 + 1 y=\dfrac{1}{x^2+1} y=x2+11 为例,
- for
n
=
2
:
1
:
20
n= 2:1:20
n=2:1:20
取节点x0 = linspace(-5,5,n+1);
使用Lagrange插值法进行函数逼近
%% Lagrange
clc;clear all;format long;
x = linspace(-5,5,100);
% 使用函数句柄的方式表示函数
Runge = @(x)1./(x.^2+1);
y = Runge(x);
% 计算误差前的准备
x2 = linspace(-5,5,1001);
y2 = Runge(x2);
delta = zeros(1,19);
% 绘制 f(x)图像和 插值函数图像
figure(1);
for n = 2:1:20
% 随着 n 的 变化,样本点也在发生变化
x1 = linspace(-5,5,n+1);
y1 = Runge(x1);
Ln = Lag_interp(x1,y1,x);
subplot(4,5,n-1)
plot(x,Ln,'b');
hold on
plot(x,y,'r');
hold off
% 计算误差
delta(n-1) = max(abs(y2 - Lag_interp(x1,y1,x2)));
end
% 观察误差
n = 2:1:20;
subplot(4,5,20)
plot(n,delta,'g');
得到如下图像,蓝色表示
L
n
(
x
)
L_n(x)
Ln(x),红色表示原函数.
随着插值节点个数的变化而变化.
误差变化图如下
随着插值节点个数的增加,误差没有下降,却嘎嘎增长!
可以看到一味地追求高次插值是行不通的,收敛性和稳定性都不一定能保证。:)