mkpp
조각별 다항식 만들기
설명
예제
여러 차수의 다항식으로 조각별 다항식 만들기
구간 [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')
반복되는 부분을 갖는 조각별 다항식 만들기
두 2차 다항식을 교대로 나타내는 4개의 간격을 갖는 조각별 다항식을 만들고 플로팅합니다.
처음 두 서브플롯은 2차 다항식과 그에 음수를 취한 다항식을 구간 [-8,-4]와 [-4,0]에 표시합니다. 다항식은 다음과 같습니다.
세 번째 서브플롯은 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
입력 인수
breaks
— 절점
벡터
절점으로, 각 L
구간의 시작과 끝에 해당하는 순증가하는 요소가 포함된, 길이가 L+1
인 벡터로 지정됩니다.
데이터형: single
| double
coefs
— 다항식 계수
행렬
다항식 계수로, 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
를 지정하여 조각별 다항식이 크기가 d
인 계수 값을 가지도록 합니다.
데이터형: single
| double
출력 인수
pp
— 조각별 다항식
구조체
조각별 다항식으로, 구조체로 반환됩니다. 이 구조체를 ppval
함수와 함께 사용하여 한 개 이상의 쿼리 점에서 조각별 다항식의 값을 계산합니다. 이 구조체는 다음 필드를 가집니다.
필드 | 설명 |
---|---|
form | 조각별 다항식의 경우 |
breaks | 각 |
coefs | 각 행 |
pieces | 구간 조각의 개수, |
order | 다항식의 차수 |
dim | 대상의 차원 |
coefs
의 다항식 계수는 각 구간의 로컬 계수이기 때문에, 이 계수를 일반적인 다항 방정식에서 사용하려면 대응하는 매듭 구간의 아래쪽 끝점을 빼야 합니다. 즉, 구간 [x1,x2]
에서 계수 [a,b,c,d]
에 대해, 대응하는 다항식은 다음과 같습니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
출력 구조체
pp
는 MATLAB®의pp
구조체와 다릅니다. MATLAB에서ppval
은 코드 생성기에서pp
구조체를 사용할 수 없습니다. 코드 생성 시ppval
은 MATLAB에서 생성된pp
구조체를 사용할 수 없습니다.unmkpp
는 코드 생성 시 MATLABpp
구조체를 사용할 수 있습니다.코드 생성기에서 생성한
pp
구조체에서 MATLABpp
구조체를 생성하려면 다음을 수행하십시오.코드 생성 시
unmkpp
를 사용하여 조각별 다항식 세부 정보를 MATLAB에 반환합니다.MATLAB에서
mkpp
를 사용하여pp
구조체를 생성합니다.
d
를 제공하지 않은 경우coefs
는 2차원이어야 하고 고정된 개수의 열을 가져야 합니다. 이 경우 열 개수가 차수입니다.조각별 상수 다항식을 정의하려면
coefs
가 열 벡터이거나d
에 적어도 2개의 요소가 있어야 합니다.d
를 제공하고d
가1
인 경우d
는 상수여야 합니다. 그렇지 않으면,ppval
에 대한 입력값이 스칼라 값이 아닌 경우ppval
의 출력값 형태는 MATLAB의ppval
과 다를 수 있습니다.d
를 제공할 경우 고정 길이를 가져야 합니다. 다음 명령문 집합 중 하나가 참이어야 합니다.m = length(d)
이고npieces = length(breaks) - 1
이라고 가정하겠습니다.size(coefs,j) = d(j) size(coefs,m+1) = npieces size(coefs,m+2) = order
j
= 1,2,...,m. 차원m+2
는 고정 길이여야 합니다.m = length(d)
이고npieces = length(breaks) - 1
이라고 가정하겠습니다.두 번째 차원은 고정 길이여야 합니다.size(coefs,1) = prod(d)*npieces size(coefs,2) = order
d
를 제공하지 않은 경우 다음 명령문은 true여야 합니다.m = length(d)
이고npieces = length(breaks) - 1
이라고 가정하겠습니다.두 번째 차원은 고정 길이여야 합니다.size(coefs,1) = prod(d)*npieces size(coefs,2) = order
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)