Main Content

mkpp

조각별 다항식 만들기

설명

예제

pp = mkpp(breaks,coefs)는 절점과 계수로부터 조각별 다항식 pp를 생성합니다. ppval을 사용하여 특정 지점에서 조각별 다항식을 계산하거나 unmkpp를 사용하여 조각별 다항식에 대한 세부 정보를 추출합니다.

pp = mkpp(breaks,coefs,d)는 계수의 각 값이 길이가 d인 벡터가 되도록, 조각별 다항식을 벡터 값으로 지정합니다.

예제

모두 축소

구간 [0,4]에 3차 다항식이 있고, 구간 [4,10]에 2차 다항식이 있고, 구간 [10,15]에 4차 다항식이 있는 조각별 다항식을 만듭니다.

breaks = [0 4 10 15];
coefs = [0 1 -1 1 1; 0 0 1 -2 53; -1 6 1 4 77];
pp = mkpp(breaks,coefs)
pp = struct with fields:
      form: 'pp'
    breaks: [0 4 10 15]
     coefs: [3x5 double]
    pieces: 3
     order: 5
       dim: 1

구간 [0,15]에 있는 많은 점에서 조각별 다항식을 계산하고 결과를 플로팅합니다. 다항식이 만나는 절점에서 수직 파선을 플로팅합니다.

xq = 0:0.01:15;
plot(xq,ppval(pp,xq))
line([4 4],ylim,'LineStyle','--','Color','k')
line([10 10],ylim,'LineStyle','--','Color','k')

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

두 2차 다항식을 교대로 나타내는 4개의 간격을 갖는 조각별 다항식을 만들고 플로팅합니다.

처음 두 서브플롯은 2차 다항식과 그에 음수를 취한 다항식을 구간 [-8,-4]와 [-4,0]에 표시합니다. 다항식은 다음과 같습니다.

1-(x2-1)2=-x24+x.

세 번째 서브플롯은 4개 구간에 이러한 두 2차 조각별 다항식을 교대로 나타내어 생성한 하나의 조각별 다항식을 보여줍니다. 다항식이 만나는 지점을 표시하는 세로선이 추가됩니다.

subplot(2,2,1)
cc = [-1/4 1 0]; 
pp1 = mkpp([-8 -4],cc);
xx1 = -8:0.1:-4; 
plot(xx1,ppval(pp1,xx1),'k-')

subplot(2,2,2)
pp2 = mkpp([-4 0],-cc);
xx2 = -4:0.1:0; 
plot(xx2,ppval(pp2,xx2),'k-')

subplot(2,1,2)
pp = mkpp([-8 -4 0 4 8],[cc;-cc;cc;-cc]);
xx = -8:0.1:8;
plot(xx,ppval(pp,xx),'k-')
hold on
line([-4 -4],ylim,'LineStyle','--')
line([0 0],ylim,'LineStyle','--')
line([4 4],ylim,'LineStyle','--')
hold off

Figure contains 3 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type line. Axes object 3 contains 4 objects of type line.

입력 인수

모두 축소

절점으로, 각 L 구간의 시작과 끝에 해당하는 순증가하는 요소가 포함된, 길이가 L+1인 벡터로 지정됩니다.

데이터형: single | double

다항식 계수로, i번째 행 coefs(i,:)에 i번째 구간 [breaks(i), breaks(i+1)]k차 다항식의 로컬 계수가 포함된 L×k 행렬로 지정됩니다. 즉, 다항식은 coefs(i,1)*(X-breaks(i))^(k-1) + coefs(i,2)*(X-breaks(i))^(k-2) + ... + coefs(i,k-1)*(X-breaks(i)) + coefs(i,k)입니다.

데이터형: single | double

차원으로, 스칼라 또는 정수 벡터로 지정됩니다. d를 지정하여 조각별 다항식이 크기가 d인 계수 값을 가지도록 합니다.

데이터형: single | double

출력 인수

모두 축소

조각별 다항식으로, 구조체로 반환됩니다. 이 구조체를 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.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | |