ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

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) は、以下を満たします。

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

  • は、y を内挿します。つまり、 です。さらに 1 階微分 は連続です。 は、おそらく連続ではありません。つまり、 でジャンプする可能性があります。

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

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

詳細

すべて展開する

ヒント

関数 pchip を構築する方法とほぼ同じ方法で、関数 spline を構築します。しかし、関数 spline ごとに勾配を選択します。すなわち、 も連続になります。これは以下のような効果があります。

  • 関数 spline は、より平滑な結果を生成します。すなわち、 は連続です。

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

参考

| |

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