Contenido principal

pchip

Polinomio de interpolación cúbica de Hermite por tramos (PCHIP)

Descripción

p = pchip(x,y,xq) devuelve un vector de valores interpolados p que corresponden a los puntos de consulta en xq. Los valores de p están determinados por la interpolación cúbica por tramos que conserva la forma de x e y.

ejemplo

pp = pchip(x,y) devuelve una estructura polinómica por tramos para su uso con ppval y la utilidad de spline unmkpp.

ejemplo

Ejemplos

contraer todo

Compare los resultados de la interpolación que han producido spline, pchip y makima para dos conjuntos de datos diferentes. Todas estas funciones realizan formas diferentes de interpolación cúbica de Hermite por tramos. Cada función difiere del resto en el modo en que calcula las pendientes de la interpolación, lo que resulta en diferentes comportamientos cuando los datos subyacentes contienen zonas planas u ondulaciones.

Compare los resultados de la interpolación en los datos de la muestra que conectan las zonas planas. Cree vectores de valores x, valores de función en esos puntos y, y puntos de consulta xq. Calcule las interpolaciones en los puntos de consulta utilizando spline, pchip y makima. Represente los valores de la función interpolada en los puntos de consulta para compararlos.

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. One or more of the lines displays its values using only markers These objects represent Sample Points, pchip, spline, makima.

En este caso, pchip y makima presentan un comportamiento similar porque evitan los sobreimpulsos y pueden conectar las zonas planas con precisión.

Realice una segunda comparación utilizando una función de muestra oscilatoria.

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. One or more of the lines displays its values using only markers These objects represent Sample Points, pchip, spline, makima.

Cuando la función subyacente es oscilatoria, spline y makima capturan el movimiento entre puntos mejor que pchip, que se aplana de forma pronunciada cerca de los extremos locales.

Cree vectores para los valores x y los valores de función y y, luego, utilice pchip para construir una estructura polinómica por tramos.

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

Utilice la estructura con ppval para evaluar la interpolación en varios puntos de consulta. Represente los resultados.

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. One or more of the lines displays its values using only markers

Argumentos de entrada

contraer todo

Puntos de muestra, especificados como vector. El vector x especifica los puntos en los que se dan los datos y. Los elementos de x deben ser únicos.

Tipos de datos: single | double

Valores de función en los puntos de muestra, especificados como un vector, matriz o arreglo numérico. x e y deben tener la misma longitud.

Cuando y es una matriz o un arreglo, los valores de la última dimensión, y(:,...,:,j), se toman como valores que coinciden con x. En este caso, la última dimensión de y debe tener la misma longitud que x.

Tipos de datos: single | double

Puntos de consulta, especificados como escalar, vector, matriz o arreglo. Los puntos especificados en xq son las coordenadas x de los valores de la función interpolada yq calculados por pchip.

Tipos de datos: single | double

Argumentos de salida

contraer todo

Valores interpolados en puntos de consulta, devueltos como escalar, vector, matriz o arreglo. El tamaño de p está relacionado con los tamaños de y y xq:

  • Cuando y es un vector, p tiene el mismo tamaño que xq.

  • Cuando y es un arreglo de tamaño Ny = size(y), se aplican las condiciones siguientes:

    • Cuando xq es un escalar o un vector, size(p) devuelve [Ny(1:end-1) length(xq)].

    • Cuando xq es un arreglo, size(p) devuelve [Ny(1:end-1) size(xq).

Polinomio por tramos, devuelto como una estructura. Utilice esta estructura con la función ppval para evaluar los polinomios de interpolación en uno o más puntos de consulta. Esta estructura contiene estos campos.

CampoDescripción
form

'pp' para polinomio por tramos

breaks

Vector de longitud L+1 con elementos estrictamente crecientes que representan el inicio y el final de cada uno de los intervalos L

coefs

Matriz de L por k con cada fila coefs(i,:) que contiene los coeficientes locales de un polinomio de orden k en el i-ésimo intervalo, [breaks(i),breaks(i+1)]

pieces

Número de tramos, L

order

Orden de los polinomios

dim

Dimensionalidad del destino

Dado que los coeficientes del polinomio de coefs son coeficientes locales para cada intervalo, deberá restar el punto final más bajo del intervalo de nudos correspondiente para utilizar los coeficientes en una ecuación polinómica convencional. En otras palabras, para los coeficientes [a,b,c,d] del intervalo [x1,x2], el polinomio correspondiente es

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

Más acerca de

contraer todo

Sugerencias

  • spline construye S(x) de casi la misma forma que pchip construye P(x). Sin embargo, spline elige las pendientes en xj de forma diferente, a saber, para hacer que S(x) sea incluso continua. Esta diferencia tiene varios efectos:

    • spline produce un resultado más suave, de modo que S(x) sea continua.

    • spline produce un resultado más preciso si los datos constan de valores de una función suavizada.

    • pchip no tiene sobreimpulsos y tiene menos oscilación si los datos no son suaves.

    • pchip es menos costosa de configurar.

    • Ambas son igual de costosas de evaluar.

Referencias

[1] Fritsch, F. N. and R. E. Carlson. "Monotone Piecewise Cubic Interpolation." SIAM Journal on Numerical Analysis. Vol. 17, 1980, pp.238–246.

[2] Kahaner, David, Cleve Moler, Stephen Nash. Numerical Methods and Software. Upper Saddle River, NJ: Prentice Hall, 1988.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a

Consulte también

| | |