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

◆ Fitlag()

Function Fitlag ( X As  Double,
N As  Long,
A() As  Double,
F() As  Double,
Optional Info As  Long,
Optional M As  Long = 5,
Optional Eps As  Double = 1.0e-8 
)

反復ラグランジュ補間

目的
本ルーチンルーチンはデータ表を使って反復ラグランジュ補間法により補間値を求める.
補間値を求める点に近いサンプル点を使用してラグランジュ補間を求めるが, 2点から始めて要求精度を満たすまで自動的に使用点数を増やして補間を繰り返す.
戻り値
Double
x における補間値.
引数
[in]X補間値を計算する横座標 x.
[in]N表のデータ数. (N > 0)
[in]A()配列 A(LA - 1) (LA >= N)
サンプル点. A()の要素は昇順であること.
[in]F()配列 F(LF - 1) (LF >= N)
サンプル点A()におけるデータ.
[out]Info(省略可)
= 0: 正常終了.
= -2: パラメータ N の誤り. (N <= 0)
= -5: パラメータ M の誤り. (M < 1 または M > 5)
= 1: X がサンプル点の範囲外にある(計算は続行する).
= 2: 収束しなかった(与えられた絶対誤差許容限界を満たすことができなかった).
[in]M(省略可)
x の両サイドにおいて補間に使われるサンプル点数の最大値. (1 <= M <= 5) (省略時 = 5)
[in]Eps(省略可)
絶対誤差許容限界. (Eps > 0) (省略時 = 1.0E-8)
Eps <= 0 であれば Eps = マシンイプシロン とみなす.
出典
森正武、「FORTRAN77数値計算プログラミング(増補版)」岩波書店 (1987)
使用例
次の自然対数表を補間して 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_Fitlag()
Const N As Long = 4
Dim X(N - 1) As Double, Y(N - 1) As Double, Xe As Double, Ye As Double, 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
'-- Compute ln(0.115) and ln(0.125)
Xe = 0.115
Ye = Fitlag(Xe, N, X(), Y(), Info, , 0.0001)
Debug.Print "ln(" + CStr(Xe) + ") = " + Str(Ye) + " (Info =" + Str(Info) + ")"
Xe = 0.125
Ye = Fitlag(Xe, N, X(), Y(), Info, , 0.0001)
Debug.Print "ln(" + CStr(Xe) + ") = " + Str(Ye) + " (Info =" + Str(Info) + ")"
End Sub
Function Fitlag(X As Double, N As Long, A() As Double, F() As Double, Optional Info As Long, Optional M As Long=5, Optional Eps As Double=1.0e-8) As Double
反復ラグランジュ補間
実行結果
ln(0.115) = -2.16285 (Info = 0)
ln(0.125) = -2.079475 (Info = 0)