ドキュメンテーション

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

pchip

区分的 3 次エルミート内挿多項式 (PCHIP)

構文

yi = pchip(x,y,xi)
pp = pchip(x,y)

説明

yi = pchip(x,y,xi) は、ベクトル x と y の範囲内で区分的 3 次内挿を使用し、xi の要素に対応して計算された要素を含むベクトル yi を返します。ベクトル x は、データ y が与えられる時点を指定します。したがって、xy は同じ長さでなければなりません。y が行列または配列の場合、最後の次元の値 y(:,...,:,j)x に一致させる値として使用されます。この場合、y の最後の次元は x と同じ長さでなければなりません。yn 次元の場合、出力 yi のサイズは [size(y,1) size(y,2) ... size(y,n-1) length(xi)] です。たとえば、y が行列の場合、yi のサイズは [size(y,1) length(xi)] となります。

pp = pchip(x,y) は、ppval で使用するための区分的な多項式の構造体を返します。x は、行ベクトルでも列ベクトルでも構いません。y は、x と同じ長さの行ベクトルまたは列ベクトルあるいは length(x) 列の行列です。

関数 pchip は、以下の条件を満たす、中間点における基本的な内挿関数 P(x) の値を求めます。

  • 各サブ区間 xkxxk+1 で、 は、両端点で指定された値と特定の勾配に対する 3 次エルミート内挿です。

  • P(x) は y を内挿します。つまり、P(xj)=yj であり、1 次導関数 dPdx は連続です。2 次導関数 d2Pdx2 はおそらく連続ではなく、xj で不連続になる可能性があります。

  • xj での勾配は、 がデータの形状や単調性を保持するように選択されます。したがって、データが単調な区間では も単調になり、データが局所的な極値をもつ点では も局所的な極値をもちます。

    メモ:   y が行列の場合、 は y の各列で上記を満たします。

すべて折りたたむ

x = -3:3;
y = [-1 -1 -1 0 1 1 1];
t = -3:.01:3;
p = pchip(x,y,t);
s = spline(x,y,t);
plot(x,y,'o',t,p,'-',t,s,'-.')
legend('data','pchip','spline','Location','SouthEast')

詳細

すべて折りたたむ

ヒント

関数 pchip を構築する方法とほぼ同じ方法で、関数 splineS(x) を構築します。ただし、関数 splinexj で異なる勾配、つまり S(x) も連続になる勾配を選択します。これは以下のような効果があります。

  • 関数 spline は、より滑らかな結果を生成します。すなわち、S(x) は連続です。

  • 関数 spline は、データが平滑関数の値の場合、より正確になります。

  • 関数 pchip は、データが平滑でない場合、オーバーシュートが生じず、振動が少なくなります。

  • 関数 pchip は、セットアップが簡単です。

  • 2 つとも計算量が多くなります。

参照

[1] Fritsch, F. N. and R. E. Carlson, "Monotone Piecewise Cubic Interpolation," SIAM J. Numerical Analysis, Vol. 17, 1980, pp.238-246.

[2] Kahaner, David, Cleve Moler, Stephen Nash, Numerical Methods and Software, Prentice Hall, 1988.

参考

| |

R2006a より前に導入

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