Приближение функций. Сплайны.

% Интерполяция функции Рунге
% Введём функцию Рунге

f = inline('1./(1+25*x.^2)');

% Вычислим таблицу значений
x = linspace(-1, 1, 10);
y = f(x);

% Проинтерполируем функцию Рунге многочленами Лагранжа
p = polyfit(x, y, 10);
xx = linspace(-1, 1, 100);
yy = polyval(p, xx);
axes('NextPlot', 'Add');

% Покажем, что глобальная аппроксимация плохо работает для функции Рунге
plot(x, y);
plot(xx, yy, 'Color', 'r');

1.jpg (8261 bytes)

% С увеличением узлов сетки, ситуация только ухудщается

% Вычислим таблицу значений. 20 узлов сетки
x = linspace(-1, 1, 20);
y = f(x);

% Проинтерполируем функцию Рунге многочленами Лагранжа
p = polyfit(x, y, 20);
xx = linspace(-1, 1, 100);
yy = polyval(p, xx);
figure
axes('NextPlot', 'Add');

% Покажем, что глобальная аппроксимация плохо работает для функции Рунге
plot(x, y);
plot(xx, yy, 'Color', 'r');

1.jpg (8261 bytes)