exponenta event banner

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около-k матрица с каждой строкой coefs(i,:) содержащий локальные коэффициенты порядка k многочлен на iтый интервал, [breaks(i),breaks(i+1)]

pieces

Количество штук, L

order

Порядок многочленов

dim

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

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

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

Подробнее

свернуть все

Фасонно-сохраняющая кусочно-кубическая интерполяция

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

  • На каждом субинтервале xk≤x≤xk+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 по численному анализу. Том 17, 1980, стр. 238-246.

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

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

.

См. также

| | |

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