ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

mkpp

区分的多項式の作成

構文

pp = mkpp(breaks,coefs)
pp = mkpp(breaks,coefs,d)

説明

pp = mkpp(breaks,coefs) は、節点と係数から区分的多項式 pp を作成します。

  • breaks は、長さ L+1 のベクトルで、重複する部分をもたない増加傾向にあり、最初と最後の間を L 分割します。

  • coefs は、Lk 列の行列です。各行 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)ここで mkpp は、各区間の多項式を (X-breaks(i)) だけ下方にシフトします。

pp = mkpp(breaks,coefs,d) は、区分的多項式 pp が、d ベクトル、すなわち、係数の各値が長さ d のベクトルになります。breaks は、長さ L+1 の増加ベクトルです。coefs は、d x L x k の配列で、coefs(r,i,:) は区分的多項式の r 番目の要素の i 番目の多項式部分の k 個の係数を含みます。

関数 ppval を使って、指定した点で区分的多項式を計算します。関数 unmkpp を使って、区分的多項式の詳細を抽出できます。

    メモ:   多項式の次数は、多項式を表す場合に使用する係数の数です。k 次の多項式は、次のようになります。

    c1xk1+c2xk2+...+ck1x+ck

    これは、k 個の係数をもち、いくつかの 0 の値をとることができ、最高の指数は k – 1 です。そのため、多項式の次数は、通常、その次数に 1 を加えたものになります。たとえば、3 次多項式は次数が 4 です。

すべて折りたたむ

最初のプロットは、2 次の多項式を示しています。

$$1-\left(\frac{x}{2}-1\right)^2=\frac{-x^2}{4}+x$$

区間 [-8,-4] にシフトします。2 番目のプロットは、その負の部分で、

$$\left(\frac{x}{2}-1\right)^2-1=\frac{x^2}{4}-x$$

区間 [-4.0] にシフトします。

最後のプロットは、区分的多項式の 4 つの区間の 2 つの 2 次式を変更して作成した区分的多項式を示します。また、その 1 階微分を示しています。これは、unmkpp を使って区分的多項式を分解した後、作成されます。

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-')
[breaks,coefs,l,k,d] = unmkpp(pp);
dpp = mkpp(breaks,repmat(k-1:-1:1,d*l,1).*coefs(:,1:k-1),d);
hold on, plot(xx,ppval(dpp,xx),'r-'), hold off

参考

| |

R2006a より前に導入

この情報は役に立ちましたか?