pchip

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

Сравните результаты интерполяции по выборочным данным, которые соединяют плоские области. Создайте векторы x значения, значения функций в этих точках y, и точки запроса xq. Вычислите интерполяции в точках запроса с помощью spline, pchip, и 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. The axes 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. The axes 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. The axes 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 со строго увеличивающимися элементами, которые представляют начало и конец каждого из L интервалы

coefs

L-by- k матрица с каждой строкой coefs(i,:) содержит локальные коэффициенты порядка k полином на ith интервал , [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 возможны.

  • Кубическая интерполяция 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] Фрич, Ф. Н. и Р. Э. Карлсон. Монотонная кусочно-кубическая интерполяция. SIAM Journal по численному анализу. Том 17, 1980, pp.238-246.

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

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

.

См. также

| | |

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