Main Content

pchip

조각별 3차 에르미트 보간 다항식(PCHIP)

설명

p = pchip(x,y,xq)xq의 쿼리 점에 대응하는 보간된 값으로 구성된 벡터 p를 반환합니다. p의 값은 xy형태 보존 조각별 3차 보간에 의해 결정됩니다.

예제

pp = pchip(x,y)ppval 및 스플라인 유틸리티 unmkpp와 함께 사용하기 위한 조각별 다항식 구조체를 반환합니다.

예제

예제

모두 축소

두 개의 다른 데이터 세트에 대해 spline, pchip, makima에서 생성된 보간 결과를 비교합니다. 이들 함수는 모두 다양한 형태의 조각별 3차 에르미트 보간을 수행합니다. 각각의 함수는 보간 함수의 기울기를 계산하는 방법이 다르므로, 기본 데이터에 평탄 영역이나 요동이 있을 때 다양한 동작이 나타납니다.

평탄 영역을 연결하는 샘플 데이터에 대한 보간 결과를 비교합니다. 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 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.

이 경우, pchipmakima는 오버슈트를 피하고 평탄 영역을 정확하게 연결할 수 있다는 점에서 비슷하게 동작합니다.

진동 샘플 함수를 사용하여 두 번째 비교를 수행합니다.

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.

기본 함수가 진동 함수인 경우 국소 극값 근처에서 과감하게 평탄화되는 pchip보다 splinemakima가 점 사이의 움직임을 포착하는 능력이 더 우수합니다

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

입력 인수

모두 축소

샘플 점으로, 벡터로 지정됩니다. 벡터 x는 데이터 y가 주어지는 점을 지정합니다. x의 요소는 유일해야 합니다.

데이터형: single | double

샘플 점에서의 함수 값으로, 숫자형 벡터, 행렬 또는 배열로 지정됩니다. xy와 길이가 동일해야 합니다.

y가 행렬이나 배열인 경우 마지막 차원의 값 y(:,...,:,j)x와 일치시킬 값으로 간주됩니다. 이 경우, y의 마지막 차원은 x와 길이가 동일해야 합니다.

데이터형: single | double

쿼리 점으로, 스칼라, 벡터, 행렬 또는 배열로 지정됩니다. xq에 지정된 점은 pchip이 계산하는 보간된 함수 값 yqx 좌표입니다.

데이터형: single | double

출력 인수

모두 축소

쿼리 점에서 보간된 값으로, 스칼라, 벡터, 행렬 또는 배열로 반환됩니다. p의 크기는 다음과 같이 yxq의 크기와 관련이 있습니다.

  • y가 벡터인 경우, pxq와 크기가 동일합니다.

  • 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 구간의 시작과 끝에 해당하는 순증가하는 요소가 포함된, 길이가 L+1인 벡터

coefs

각 행 coefs(i,:)i번째 구간 [breaks(i),breaks(i+1)]k차 다항식의 로컬 계수가 포함된 L×k 행렬

pieces

구간 조각의 개수, L

order

다항식의 차수

dim

대상의 차원

coefs의 다항식 계수는 각 구간의 로컬 계수이기 때문에, 이 계수를 일반적인 다항 방정식에서 사용하려면 대응하는 매듭 구간의 아래쪽 끝점을 빼야 합니다. 즉, 구간 [x1,x2]에서 계수 [a,b,c,d]에 대해, 대응하는 다항식은 다음과 같습니다.

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

세부 정보

모두 축소

형태 보존 조각별 3차 보간

pchip는 다음 속성을 갖는 조각별 3차 다항식 P(x)를 사용하여 보간합니다.

  • 각 하위 구간 xkxxk+1에서 다항식 P(x)는 보간 지점에서 지정된 도함수(기울기)를 갖는, 주어진 데이터 점들에 대한 3차 에르미트 보간 다항식입니다.

  • P(x)y를 보간합니다. 즉, P(xj)=yj이고 1계 도함수 dPdx가 연속입니다. 대부분의 경우 2계 도함수 d2Pdx2가 불연속이므로, xj에서 값이 비약할 수 있습니다.

  • 3차 보간 함수 P(x)는 형태를 보존합니다. xj에서 기울기는 P(x)가 데이터의 형태를 보존하고 단조성을 유지하는 방식으로 선택됩니다. 따라서, 데이터가 단조적인 구간에서 P(x)도 단조적이고, 데이터가 국소 극값을 가지는 지점에서 P(x)도 국소 극값을 가집니다.

참고

y가 행렬이면, P(x)y의 각 행에 대해 이러한 속성을 충족시킵니다.

  • splinepchipP(x)를 생성하는 방식과 거의 동일한 방식으로 S(x)를 생성합니다. 그러나, splinexj에서의 기울기를 이와 다르게, 즉 S(x)도 연속이 되도록 선택합니다. 이 차이는 여러 가지 영향을 미칩니다.

    • splineS(x)가 연속인, 더 매끄러운 결과를 생성합니다.

    • spline은 데이터가 매끄러운 함수의 값으로 구성된 경우 더 정확한 결과를 생성합니다.

    • pchip은 데이터가 매끄럽지 않은 경우, 오버슈트를 일으키지 않으며 진동을 줄입니다.

    • pchip은 더 적은 노력으로 설정할 수 있습니다.

    • 두 방법의 계산 비용은 같습니다.

참고 문헌

[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.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | |