pchip

Кусочный кубический интерполяционный полином Эрмита (PCHIP)

Описание

пример

p = pchip(x,y,xq) возвращает вектор из интерполированных значений p соответствие точкам запроса в xq. Значения p определяются сохраняющей форму кусочной кубичной интерполяцией x и y.

пример

pp = pchip(x,y) возвращает структуру кусочного полинома для использования с ppval и утилита сплайна unmkpp.

Примеры

свернуть все

Сравните результаты интерполяции, приведенные splinepchip, и makima для двух различных наборов данных. Эти функции все выполняют различные формы кусочной кубической интерполяции Эрмита. Каждая функция отличается по тому, как она вычисляет наклоны interpolant, ведя к различным поведениям, когда базовые данные имеют плоские области или волнистости.

Сравните результаты интерполяции на выборочных данных, которые соединяют плоские области. Создайте векторы из x значения, значения функции в тех точках y, и точки запроса xq. Вычислите интерполяции в точках запроса с помощью splinepchip, и makima. Постройте интерполированные значения функции в точках запроса для сравнения.

x = -3:3; 
y = [-1 -1 -1 0 1 1 1]; 
xq1 = -3:.01:3;
p = pchip(x,y,xq1);
s = spline(x,y,xq1);
m = makima(x,y,xq1);
plot(x,y,'o',xq1,p,'-',xq1,s,'-.',xq1,m,'--')
legend('Sample Points','pchip','spline','makima','Location','SouthEast')

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent Sample Points, pchip, spline, makima.

В этом случае, pchip и makima имейте подобное поведение, в котором они избегают перерегулирований и могут точно соединить плоские области.

Выполните второе сравнение с помощью колебательной демонстрационной функции.

x = 0:15;
y = besselj(1,x);
xq2 = 0:0.01:15;
p = pchip(x,y,xq2);
s = spline(x,y,xq2);
m = makima(x,y,xq2);
plot(x,y,'o',xq2,p,'-',xq2,s,'-.',xq2,m,'--')
legend('Sample Points','pchip','spline','makima')

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent Sample Points, pchip, spline, makima.

Когда базовая функция является колебательной, spline и makima получите перемещение между точками лучше, чем pchip, который настойчиво сглаживается около локальных экстремальных значений.

Создайте векторы для x значения и значения функции y, и затем используйте pchip создать структуру кусочного полинома.

x = -5:5;
y = [1 1 1 1 0 0 1 2 2 2 2];
p = pchip(x,y);

Используйте структуру с ppval оценивать интерполяцию в нескольких точках запроса. Постройте график результатов.

xq = -5:0.2:5;
pp = ppval(p,xq);
plot(x,y,'o',xq,pp,'-.')
ylim([-0.2 2.2])

Figure contains an axes object. The axes object contains 2 objects of type line.

Входные параметры

свернуть все

Точки выборки в виде вектора. Векторный x задает точки в который данные y дан. Элементы x должно быть уникальным.

Типы данных: single | double

Значения функции в точках выборки в виде числового вектора, матрицы или массива. x и y должен иметь ту же длину.

Если y матрица или массив, затем значения в последней размерности, y(:,...,:,j), взяты в качестве значений, чтобы соответствовать с x. В этом случае, последняя размерность y должна быть та же длина как x.

Типы данных: single | double

Точки запроса в виде скаляра, вектора, матрицы или массива. Точки заданы в xq x - координирует для интерполированных значений функции yq вычисленный pchip.

Типы данных: single | double

Выходные аргументы

свернуть все

Интерполированные значения в точках запроса, возвращенных как скаляр, вектор, матрица или массив. Размер p связан с размерами y и xq:

  • Если y вектор, затем p имеет тот же размер как xq.

  • Если y массив размера Ny = size(y), затем эти условия применяются:

    • Если xq скаляр или вектор, затем size(p) возвращает [Ny(1:end-1) length(xq)].

    • Если xq массив, затем size(p) возвращает [Ny(1:end-1) size(xq).

Кусочный полином, возвращенный как структура. Используйте эту структуру с ppval функция, чтобы оценить интерполяционные многочлены в одной или нескольких точках запроса. Структура имеет эти поля.

Поле Описание
form

'pp' для кусочного полинома

breaks

Вектор из длины L+1 со строго увеличивающимися элементами, которые представляют начало и конец каждого of L интервалы

coefs

L- k матрица с каждой строкой coefs(i,:) содержа локальные коэффициенты порядка k полином на iинтервал th, [breaks(i),breaks(i+1)]

pieces

Количество частей, L

order

Порядок полиномов

dim

Размерность цели

Начиная с полиномиальных коэффициентов в coefs локальные коэффициенты для каждого интервала, необходимо вычесть более низкую конечную точку соответствующего интервала узла, чтобы использовать коэффициенты в обычном полиномиальном уравнении. Другими словами, для коэффициентов [a,b,c,d] на интервале [x1,x2], соответствующий полином

f(x)=a(xx1)3+b(xx1)2+c(xx1)+d.

Больше о

свернуть все

Сохраняющая форму кусочная кубичная интерполяция

pchip интерполирует использование кусочного кубического полинома P(x) с этими свойствами:

  • На каждом подынтервале xkxxk+1, полином P(x) кубический интерполяционный полином Эрмита для точек определенных данных с заданными производными (наклоны) в точках интерполяции.

  • P(x) интерполирует y, то есть, P(xj)=yj, и первая производная dPdx непрерывно. Вторая производная d2Pdx2 вероятно, не непрерывно так схватил xj возможны.

  • Кубический interpolant P(x) сохранение формы. Наклоны в xj выбраны таким способом который P(x) сохраняет форму данных и уважает монотонность. Поэтому на интервалах, где данные являются монотонными, так P(x), и в точках, где данные имеют локальное экстремальное значение, делает P(x).

Примечание

Если y является матрицей, P(x) удовлетворяет этим свойствам для каждой строки y.

Советы

  • spline построения S(x) почти тем же способом pchip построения P(x). Однако spline выбирает наклоны в xj по-другому, а именно, чтобы сделать даже S(x) непрерывный. Это различие оказывает несколько влияний:

    • spline приводит к более сглаженному результату, такому что S(x) непрерывно.

    • spline приводит к более точному результату, если данные состоят из значений сглаженной функции.

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

    • pchip является менее дорогим, чтобы настроить.

    • Эти два являются одинаково дорогими, чтобы оценить.

Ссылки

[1] Fritsch, F. N. и Р. Э. Карлсон. "Монотонная Кусочная Кубичная интерполяция". SIAM Journal согласно Числовому Анализу. Издание 17, 1980, pp.238-246.

[2] Kahaner, Дэвид, Клив Moler, Стивен Нэш. Численные методы и программное обеспечение. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1988.

Расширенные возможности

Смотрите также

| | |

Представлено до R2006a