XからYを補間/補外

Video Image.png 関連する動画はこちら

内容

説明

補間は、既知の離散データから新しいデータポイントを計算し、作成する方法です。Xベクトルデータを与えると、この関数は入力曲線(XY範囲)を元にYベクトルデータを補間します。Originには、データ補間のために次の4つの手法が用意されています。線形3次スプライン3次B-スプラインAkimaスプライン

線形補間 は、最も単純で高速な補間法です。線形補間では、2つの隣接するデータポイントの算術平均が計算されます。この方法は、精度が低くても構わない場合に役立ちます。また、線形補間は、計算に時間がかからないので、大きなデータセットの場合にも役立ちます。

線形補間の一般形は、多項式補間です。多項式補間は、線形補間よりも多くの計算パワーが必要で、多項式の次数が高いとフィットデータの振れも広がります。これらのデメリットは、多項式フィットやスプライン補間を使って避けることができます。

3次スプライン法は3次多項式を使用し、区分法の要領でデータフィットを実行します。スプライン補間は線形補間よりもエラーが少なくなり、補間曲線も滑らかになります。

3次スプライン同様、3次B-スプライン補間もデータ範囲を区分けしてデータフィットしますが、これは3次ベジェスプラインを使って、データを近似します。 キュービックBスプラインは、幾何学の汎用的な正確なモデルとなります。

この関数を使用するには、

  1. データを入力した、新しいワークシートを作成します。
  2. 目的のデータを選択します。
  3. メニューから、解析数学:補間/補外(XからYを検索)を選択します。これは interp1 ダイアログボックスを開きます。

実際には、interp1 Xファンクションが呼び出されて計算を実行します。

Note:均一で等間隔な補間曲線を生成するには、補間/補外のメニューコマンドを使用します。

ダイアログオプション

再計算

分析結果の再計算を制御します。

  • なし
  • 自動
  • 手動

詳細は、以下をご覧下さい。分析結果の再計算

補間するX値

補間するベクターデータ

入力

補間するXY範囲

範囲制御についてはこちらを確認してください:入力データを指定する

メソッド

補間手法を指定します。

  • 線形
    線形補間が速い方法で、隣り合う2つのデータポイント間に直線を引き、データポイントの値を求めます。結果のポイントは、欠損値データに対してはあまり正確ではありません。
  • 3次スプライン
    この方法は入力データを指定した数に分割し、各セグメントに対して、3次多項式でフィットします。各3次関数に対して2階微分が0に等しくセットされます。これらの境界条件があっていると、関数全体はで構成できます。
  • 3次B-スプライン
    この方法も入力データを指定した数で分割し、各セグメントに対して、ベジェスプラインでフィットします。
  • Akimaスプライン
    この方法は複数の多項式から作成された区分関数を元にしています。akima補間は外れ値に対しても安定しています。
補外オプション

補間するX値 で指定されたデータ範囲の一部が、入力で指定されたX範囲の外側にあるとき、これらの結果Y値は外挿から計算されるため、この範囲部分は補外範囲としてみなされます。このオプションは、対応するY値をどのように補外するか指定するために使用します。

  • 補外
    最後の2点を使用してYを補外します。
  • 欠損値をセット
    補外範囲内のY値を欠損値としてセットします。
  • 最後の値を繰り返す
    補外範囲内のすべての値のX値から最も近い入力XのY値を使用します。
境界

境界条件は3次スプラインでのみ利用できます

  • 自然
    両端で2階微分が0
  • Not-A-Knot条件
    2階微分および2階微分の最後のポイントで3階微分が連続
スムージング因子

スムージング因子は3次B-スプラインでのみ利用できます

補間の結果

ベクトルの出力箇所

係数

スプラインまたはBスプライン法を使うときのスプライン係数

アルゴリズム

異なる対の数列データ (x_i\,y_i\, )が与えられています。ここでi= 0, 1, ... n-1\!です。次の方法で、y\!での補間したx\!を探します。

1.線形補間 (interp1q)

この場合、x<x_{0,}y=y_0+\frac{y_1-y_0}{x_1-x_0}\times (x-x_0)となります。

この場合、x>x_{n-1,}y=y_{n-1}+\frac{y_{n-1}-y_{n-2}}{x_{n-1}-x_{n-2}}\times (x-x_{n-1})となります。

この場合、x_i<x<x_{i+1,}y=y_i+\frac{(y_{i+1}-y_{i)}}{(x_{i+1}-x_{i)}}\times (x-x_i)となります。

2.3次スプライン (spline)

Originは、自然なキュービックスプラインを使って補間します。

y=Ay_i+By_{i+1}+Cy_i^{''}+Dy_{i+1}^{''}

ここで:

A\equiv \frac{x_{i+1}-x}{x_{i+1}-x_i},B\equiv 1-A,C\equiv \frac 16\left( A^3-A\right) \left( x_{i+1}-x_i\right) ^2,D\equiv \frac 16(B^3-B)(x_{i+1}-x_i)^2

そして、y_i^{''}が次から生成されます。

\frac{x_i-x_{i-1}}6y_{i-1}+\frac{x_{i+1}-x_{i-1}}3y_i+\frac{x_{i+1}-x_i}6y_{i+1}=\frac{y_{i+1}-y_i}{x_{i+1}-x_i}-\frac{y_i-y_{i-1}}{x_i-x_{i-1}}

境界点において、y_o^{''}y_{n-1}^{''}を0にセットします。

3.3次Bスプライン (bspline)

x<x_0\!  または x>x_{n-1}\! に対して線形補間を実行します。

この場合、x_0<x<x_{n-1},y=\sum_{i=1}^{n-4} c_iN_i(x)となります。

ここで、N(x)\! は、結節点 x_i\,, x_i+1\,, ..., x_i+4\,, で定義される規格化したキュービックBスプラインを表し、 c_i\, は、対応する関数の係数を表します。

この結節点の合計数n\!x_1\,, ..., x_n\, は、関数によって自動的に選ばれます。結節点 x_5\,, ..., x_n-4\, は、内部の結節点です。これらは近似区間 [x_1\,, x_m\,] をn-7\!個のサブ区間に分けます。係数 c_1\,, c_2\,, ..., c_n-4\, は、次の制約最小化問題の解として決められます。

最小化

\eta =\sum_{i=5}^{n-4}\delta _i^2\,

制約の主要因

\theta =\sum_{r=1}^m\varepsilon _r^2\leq S\,

ここで、\delta _i\, は内部結節点 x_i\,におけるy\!の3階微分で不連続な飛び越えを表し、 \varepsilon _r\, は、重み付けされた残差 w_r (y_r-y(x_r))\,、Sはユーザが指定した非負の数です。

\eta\, は、y\!の滑らかさ(の欠落)の計測値と見ることができ、フィットの近さは、 \theta\,を通して測定されます。滑らかさの係数、パラメータS\!によって、ユーザは(通常、競合している)2つのプロパティ間のバランスを制御します。S\!が大きすぎる場合、スプラインは滑らかすぎ、信号は失われます(アンダーフィット)。S\! が小さすぎる場合、スプラインは多くのノイズを検出します(オーバーフィット)。極端な場合、関数は、S\!がゼロにセットされている場合、補間スプライン(\theta\,=0)を返し、S\!が大きい場合、重み付けした最小二乗3次多項式(\eta\,=0)を返します。これら2つの極値の間のS\!値を試すことは、妥協できる結果となります。

4.Akima スプライン

Akima補間方法は複数の多項式(最大で3次式まで)から作成された区分関数を元にしています。この区分関数はあるXY座標で示された区間の間、順に適用されます。特定の位置での入力データプロットの傾きは4つの隣り合う点とその点そのもののXY座標で推計されます。特定の2つの点の傾きと座標から。3項式が計算され、2つの点の間の曲線が計算されます。そして補間はこのような多項式の組み合わせによって続けられます。多項式の終点を計算する時に追加の推定が行われます。

まず、指定の位置の曲線t が計算されます。特定のポイント(ポイント3)では、5つのデータポイント1,2,3,4,5があり、m_{1}, m_{2}, m_{3}, m_{4}はそれぞれ\bar{12}, \bar{23}, \bar{34}, \bar{45} の線分の傾きで、m_i=(y_{i+1}-y_i)/(x_{i+1}-x_i)が成り立ちます。曲線の傾きt は、条件によって以下の数式が成り立ち、それで決定されます。

m_{1}\neq m_{2} または m_{3}\neq m_{4}の場合、

t = \left ( \left | m_{4} - m_{3} \right |m_{2} + \left | m_{2} - m_{1} \right |m_{3} \right  )/\left ( \left | m_{4} - m_{3} \right | + \left | m_{2} - m_{1} \right |\right  )

m_{1} = m_{2} または m_{3} = m_{4}の場合、

 t = \frac{(x_4-x_3)m_2 + (x_3-x_2)m_3}{x_4-x_2}

2つの終点に対する傾きは各曲線の最後に推定されます。そして推定するには、その傾きを隣にある3点を使用して2次曲線で補間します。つまり、1つ目の傾きは最初の3点から2次曲線で補間し、その補間曲線の微分を取ると最初の点の傾きを計算できます。

そして2つの隣り合ったデータポイント\left ( x_i, y_i \right )\left ( x_{i+1}, y_{i+1} \right )の間にある区間[x_i, x_{i+1}]に対する多項式は次の条件んで決定します。

y|_{x=x_i} = y_i
y'|_{x=x_i}=t_i
y|_{x=x_{i+1}} = y_{i+1}
y'|_{x=x_{i+1}}=t_{i+1}

ここで、t_it_{i+1} はこれら2点の傾きです。

参考文献

1.Michelle Schatzman.Numerical Analysis:A Mathematical Introduction, Chapters 4 and 6.Clarendon Press, Oxford (2002).

2.William H. Press, etc. Numerical Recipes in C++.2nd Edition.Cambridge University Press (2002).

3.Nag C Library Function Document, nag_1d_spline_fit (e02bec).

4.Hiroshi Akima, Journal of the Association for Computing Machinery, Vol. 17, No. 4, (1970)