Линейная интерполяция Matlab

Не будем вдаваться в математические определения и термины, перейдём сразу к сути:

Алгоритм интерполяции определяется способом вычисления приближенных значений между точными. Наиболее простым и очевидным вариантом является построение прямой между двумя узловыми точками. Этот метод называется методом линейной интерполяции.

В Matlab такой способ реализован с помощью команды
interp1(x,y, xi, 'linear') или просто interp1(x,y, xi), где x и y массивы из табличных данных (координаты точек), xi — массив промежуточных точек, координаты которых требуется найти.



Интерполяционные полиномы

Есть разные интерполяционные полиномы — функции, определяющие как будут изменяться приближенные значения между узловыми точками:

· Канонический полином

· Полином Лагранжа

· Полином Ньютона

Разберём для самого часто встречающегося полинома реализацию в Matlab. Вот пример использования:

Проинтерполировать функцию sin x на отрезке [1, 9] с шагом 2 и построим графики sin x и полученного интерполяционного полинома.

Для начала необходимо создать функцию, по которой Matlab будет считать. Создайте файл с именем «lagrange» и скопируйте в него:

function yy=lagrange(x,y,xx)% вычисление интерполяционного полинома в форме Лагранжа% x - массив координат узлов% y - массив значений интерполируемой функции% xx - массив значений аргумента, для которых надо вычислить значения полинома% yy - массив значений полинома в точках xx % узнаем число узлов интерполяции (N=n+1)N=length(x);% создаем нулевой массив значений интерполяционного полиномаyy=zeros(size(xx));% в цикле считаем сумму по узлам for k=1:N % вычисляем произведения, т.е. функции Psi_k t=ones(size(xx)); for j=[1:k-1, k+1:N]   t=t.*(xx-x(j))/(x(k)-x(j)); end % накапливаем сумму yy = yy + y(k)*t; end

Теперь создайте ещё один файл и запишем в него само решение поставленной задачи:

% задание узлов интерполяцииx=1:2:9;y=sin(x);% задание точек, в которых требуется найти значения интерполяционного полиномаxx=linspace(1,9,1000);% нахождение значений интерполяционного полиномаyy=lagrange(x,y,xx);% построение графиковfigure('Color','w')% вывод графика sin(x)fplot(@sin,[1 9])hold on% вывод графика полиномаplot(xx,yy,'r')% вывод узлов интерполяцииplot(x,y,'bo')% размещение легендыlegend('sin\itx','{\itL_n (интерполяция)}','узлы',-1)

Ссылки на файлы — исходники сможете найти в конце статьи. Более подробную информацию о полиноме Лагранжа вы сможете найти на официальном сайте Matlab.

Интерполяция сплайнами

Ещё один часто встречающийся метод интерполяции. Происхождение термина “сплайны” связано с гибкой чертежной линейкой, которой пользовались для рисования гладких кривых, проходящих через заданные точки. Сплайн — это группа кубических многочленов, которые также называют кубическими сплайнами.

Вычисление сплайн интерполяции в Matlab осуществляется с помощью команды spline(x, y, xx), где х и у — массивы табличных данных, а хх — промежуточные значения по оси абцисс (Х). Вот небольшой пример:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: