XLPack 6.1
Excel VBA 数値計算ライブラリ・リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ Pchse()

Sub Pchse ( N As  Long,
X() As  Double,
F() As  Double,
D() As  Double,
Info As  Long,
Optional Idxfd As  Long = 0,
Optional Incfd As  Long = 1 
)

区分3次スプライン補間 ("not a knot"境界条件)

目的
本ルーチンは, 区分的エルミート補間式による3次スプライン補間のために, 既定の境界条件("not a knot"境界条件)を用いて与えられたデータの微分係数値を計算する.

得られた係数を使った3次スプライン補間関数値はPchfeまたはPchfdにより求めることができる.
引数
[in]Nデータ点数. (N >= 2)
[in]X()配列 X(LX - 1) (LX >= N)
独立変数値. X()の要素は昇順でなければならない.
[in]F()配列 F(LF - 1) (LF >= Incfd*(N - 1) + 1)
補間される従属変数値. F(Idxfd + I*Incfd)がX(I)に対応する値である (I = 0〜N-1).
[out]D()配列 D(LD - 1) (LD >= Incfd*(N - 1) + 1)
各データ点における微分係数値. これらの値により, 要求された境界条件による3次スプライン補間式が決定される. X(I)に対応する値はD(Idxfd + I*Incfd)に格納される (I = 0〜N-1). D()のその他の場所は変更されない.
[out]Info= 0: 正常終了.
= -1: パラメータ N の誤り. (N < 2)
= -2: パラメータ X() の誤り. (X()が昇順でないなど)
= -3: パラメータ F() の誤り.
= -4: パラメータ D() の誤り.
= -7: パラメータ Incfd の誤り. (Incfd < 1)
[in]Idxfd(省略可)
F()およびD()の先頭データのインデックス値. (省略時 = 0)
[in]Incfd(省略可)
F()およびD()の要素間隔. このパラメータは主として2次元アプリケーションのために提供される. (incfd >= 1) (省略時 = 1)
出典
SLATEC (PCHIP) (PCHSPのドライバールーチン)
使用例
次の自然対数表を3次スプライン補間して, ln(0.115) および ln(0.125) を求める.
  x       ln(x)
------ ---------
 0.10   -2.3026
 0.11   -2.2073
 0.12   -2.1203
 0.13   -2.0402
------ ---------
Sub Ex_Pchse()
Const N = 4, Ne = 2
Dim X(N - 1) As Double, Y(N - 1) As Double, D(N - 1) As Double
Dim Xe(Ne - 1) As Double, Ye(Ne - 1) As Double
Dim Info As Long
'-- Data
X(0) = 0.1: Y(0) = -2.3026
X(1) = 0.11: Y(1) = -2.2073
X(2) = 0.12: Y(2) = -2.1203
X(3) = 0.13: Y(3) = -2.0402
'-- Spline interpolation
Call Pchse(N, X(), Y(), D(), Info)
If Info <> 0 Then
Debug.Print "Error in Pchse: Info =", Info
Exit Sub
End If
'-- Compute interpolated values
Xe(0) = 0.115: Xe(1) = 0.125
Call Pchfe(N, X(), Y(), D(), Ne, Xe(), Ye(), Info)
Debug.Print "ln(" + CStr(Xe(0)) + ") =", Ye(0)
Debug.Print "ln(" + CStr(Xe(1)) + ") =", Ye(1)
Debug.Print "Info =", Info
End Sub
実行結果
ln(0.115) = -2.16285
ln(0.125) = -2.079475
Info = 0