Полиномиальная интерполяция

Одномерная интерполяция

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

1 6 8

 

т.е. из данных предыдущего примера мы восстановили исходную передаточную функцию.

В случае кратных корней процедура несколько усложняется, но остается разрешимой.

 

 

Интерполяция является процессом вычисления (оценки) промежуточных значений функций, которые находятся между известными или заданными точками. Она имеет важное приме-нение в таких областях как теория сигналов, обработка изображений и других. MATLAB обеспечивает ряд интерполяционных методик, которые позволяют находить компромисс ме-жду точностью представления интерполируемых данных и скоростью вычислений и исполь-зуемой памятью.

 

 

Обзор функций интерполяции
Функции Описание
griddata Двумерная интерполяция на неравномерной сетке.
griddata3 Трехмерная интерполяция на неравномерной сетке.
griddatan Многомерная интерполяция (n >= 3).
interp1 Одномерная табличная интерполяция.
interp2 Двухмерная табличная интерполяция.
interp3 Трехмерная табличная интерполяция.
interpft Одномерная интерполяция с использованием быстрого преобразования Фурье.
interpn Многомерная табличная интерполяция.
pchip Кубическая интерполяция при помощи полинома Эрмита.
spline Интерполяция кубическим сплайном.

Двумя основными типами одномерной интерполяции в MATLAB-е являются полиномиаль-ная интерполяция и интерполяция на основе быстрого преобразования Фурье.

 

Функция interp1 осуществляет одномерную интерполяцию – важную операцию в области анализа данных и аппроксимации кривых. Эта функция использует полиномиальные методы, аппроксимируя имеющийся массив данных полиномиальными функциями и вычисляя соот-ветствующие функции на заданных (желаемых) точках. В наиболее общей форме эта функ-ция имеет вид

yi = interp1(x, y, xi, method)

где y есть вектор, содержащий значения функции; x – вектор такой же длины, содержащий те точки (значения аргумента), в которых заданы значения y; векторxi содержит те точки, в ко-торых мы хотим найти значения вектора yпутем интерполяции; method – дополнительная строка, задающая метод интерполяции. Имеются следующие возможности для выбора мето-да:

Ступенчатая интерполяция (method = 'nearest'). Этот метод приравнивает значение функ-ции в интерполируемой точке к ее значению в ближайшей существующей точке имеющихся данных.

Линейная интерполяция (method = 'linear'). Этот метод аппроксимирует функцию между любыми двумя существующими соседними значениями как линейную функцию, и возвр-ащает соответствующее значение для точки в xi(метод используется по умолчанию).

Интерполяция кубическими сплайнами (method= 'spline'). Этот метод аппроксимирует ин-терполируемую функцию между любыми двумя соседними значениями при помощи куби-ческих функций, и использует сплайны для осуществления интерполяции.

Кубическая интерполяция (method = 'pchip' или 'cubic'). Эти методы идентичны. Они ис-пользуют кусочную кубическую Эрмитову аппроксимацию и сохраняют монотонность и форму данных.

Если какой-либо из элементов вектора xi находится вне интервала, заданного вектором x, то выбранный метод интерполяции используется также и для экстраполяции. Как альтернатива,

функция yi = interp1(x, y, xi, method, extrapval)заменяет экстраполированные значения теми, которые заданы вектором extrapval. Для последнего часто используется нечисловое значение NaN.

Все методы работают на неравномерной сетке значений вектора x .

Рассмотрение скорости, требуемой памяти и гладкости методов.При выборе метода ин-терполяции всегда нужно помнить, что некоторые из них требуют большего объема памяти или выполняются быстрее, чем другие. Однако, вам может потребоваться использование лю-бого из этих методов, чтобы достичь нужной степени точности интерполяции (гладкости результатов). При этом нужно исходить из следующих критериев.

Метод ступенчатой аппроксимации является самым быстрым, однако он дает наихудшие результаты с точки зрения гладкости.

Линейная интерполяция использует больше памяти чем ступенчатая и требует несколько большего времени исполнения. В отличие от ступенчатой аппроксимации, результирующая функция является непрерывной, но ее наклон меняется в значениях исходной сетки (исход-ных данных).

Кубическая интерполяция сплайнами требует наибольшего времени исполнения, хотя тре-бует меньших объемов памяти чем кубическая интерполяция. Она дает самый гладкий ре-зультат из всех других методов, однако вы можете получить неожиданные результаты, если входные данные распределены неравномерно и некоторые точки слишком близки.

Кубическая интерполяция требует большей памяти и времени исполнения чем ступенчатая или линейная. Однако в данном случае как интерполируемые данные, так и их производные являются непрерывными.

Относительные качественные характеристики всех перечисленных методов сохраняются и в случае двух- или многомерной интерполяции.