VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "ベルヌーイ" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Const BC = 100 Private B(BC, 1) As Double Private Sub Class_Initialize() Dim t(BC) As Double B(0, 0) = 1: B(1, 0) = -0.5: q# = 1: t(1) = 1 B(0, 1) = B(0, 0): B(1, 1) = B(1, 0): fn# = 1 For k% = 2 To BC: fn# = fn# * k% For i% = 1 To k% - 1: t(i% - 1) = i% * t(i%): Next i% t(k% - 1) = 0 For i% = k% To 2 Step -1: t(i%) = t(i%) + t(i% - 2): Next i% If (k% Mod 2) = 0 Then q# = q# * 4: b1# = k% * t(0): b2# = q# * (q# - 1) B(k%, 0) = ((k% Mod 4) - 1) * b1# / b2# B(k%, 1) = B(k%, 0) / fn# End If Next k% End Sub 'ベルヌーイ数 Public Function Bn(n As Integer) As Double Bn = B(n, 0) End Function 'ベルヌーイ数/n! Public Function BnFact(n As Integer) As Double BnFact = B(n, 1) End Function 'ベルヌーイ多項式 Public Function Bnx(x As Double, n As Integer) As Double s# = 0 For k% = 0 To n s# = s# + WorksheetFunction.Combin(n, k%) * Me.Bn(n - k%) * x ^ k% Next k% Bnx = s# End Function