Rem StehfestCoefficients returns coefficients in Stehfest inversion formula Function StehfestCoefficients(Nterms As Integer) As Variant Dim i As Integer, j As Integer, k As Integer, nh As Integer, sn As Integer, nn As Integer nh = Nterms / 2 'Must be even Nterms = 2 * nh ReDim Coeffs(0 To Nterms) As Double, g(0 To Nterms) As Double, h(0 To nh) As Double g(0) = 1 For i = 1 To Nterms g(i) = g(i - 1) * i Next i h(1) = 2# / g(nh - 1) For i = 2 To nh h(i) = Exp(nh * Log(i)) * g(2 * i) / (g(nh - i) * g(i) * g(i - 1)) Next i If nh Mod 2 = 0 Then sn = 1 Else sn = -1 For i = 1 To Nterms Coeffs(i) = 0 If i < nh Then nn = i Else nn = nh j = Int( (i + 1) / 2) For k = j To nn Coeffs(i) = Coeffs(i) + h(k) / (g(i - k) * g(2 * k - i)) Next k sn = -sn Coeffs(i) = Coeffs(i) * sn Next i StehfestCoefficients = Coeffs End Function
filt06(time As Double, atstp As Variant, btstp As Variant, nts As Integer) となっております。関数計算に必要なパラメータ・セットはatstpとbtstpでセル範囲を指定します。作例では有理関数の分母分子のsの8次式までの係数です。Ntsはオイラーの収束加速をもちない項数を入力します。20-40ぐらいでしょうか?。オイラーの収束加速は10項で固定してありますが、下記の係数のプログラムを組み込むことで大きくすることは可能です。
Public function eulercoeff(p as double, eff as double) as double