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 つの 2 次多項式の間で切り替わる 4 つの区間をもつ区分的多項式を作成し、プロットします。

最初の 2 つのサブプロットは、2 次多項式とその正負を逆転したものを、区間 [-8,-4] および [-4,0] にシフトして示しています。この多項式は以下のようになります。

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

3 番目のサブプロットは、これら 2 つの 2 次式を 4 つの区間で交互に切り替えて作成した区分的多項式を示しています。多項式が接する点を示すために縦線が追加されます。

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+1 のベクトルとして指定します。このベクトルには厳密に増加する要素があり、L 個の間隔のそれぞれについて開始と終了を表しています。

データ型: single | double

多項式係数。Lk 列の行列として指定します。i 番目の行 coefs(i,:) には、i 番目の区間 [breaks(i), breaks(i+1)] についての 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 とあわせて使用し、区分的多項式を 1 つ以上のクエリ点で評価します。これらの構造体には次のフィールドがあります。

フィールド説明
form

"区分的多項式" の場合 'pp'

breaks

長さ L+1 のベクトル。このベクトルには厳密に増加する要素があり、L 個の間隔のそれぞれについて開始と終了を表しています。

coefs

Lk 列の行列。各行 coefs(i,:) は、i 番目の区間 [breaks(i),breaks(i+1)] における k 次多項式の局所的な係数を含みます。

pieces

区分の数 (L)

order

多項式の次数

dim

ターゲットの次元

coefs の多項式係数は各区間の局所的な係数であるため、従来の多項方程式で係数を使用するには対応する節点区間の下限端点を減算しなければなりません。言い換えれば、区間 [x1,x2] の係数 [a,b,c,d] について、対応する多項式は次のようになります。

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

拡張機能

バージョン履歴

R2006a より前に導入

参考

| | |