ドキュメンテーション

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

pchip

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

構文

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

説明

yi = pchip(x,y,xi) は、ベクトル x と y の範囲内で区分的 3 次内挿を使用し、xi の要素に対応して計算された要素を含むベクトル yi を返します。ベクトル x は、データ y が与えられた時点を指定します。y が行列の場合、内挿は y の各列に対して行われ、yilength(xi)size(y,2) 列になります。

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

関数 pchip は、中間点で、内挿する関数 P(x) の値を求めます。P(x) は、以下を満たします。

  • 各サブ区間で、xkxxk+1, は、両端点で与えられた値とある勾配の 3 次エルミート内挿です。

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

  • xj の勾配は、 がデータの形状や単調さを保存するように選択されます。これは、データが単調な区間で、 になることを意味しています。すなわち、データが極値をもつ点で とします。

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

すべて折りたたむ

splinepchip の使用によるデータの内挿

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',4)

詳細

すべて折りたたむ

ヒント

関数 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.

参考

| |

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