咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

B(Beta)函数定义为:

与函数的关系为:

因此,其计算就直接调用函数。

不完全B(Beta)函数为:

其中

当 时,可采用连分式计算:

其中:

当 时,则利用对称关系计算:

连分式计算过程:

Public Function betacf(ByVal a As Double, ByVal b As Double, ByVal x As Double) As Double Dim ITMAX, m, m2 As Long ITMAX = 1000 Dim EPS, FPMIN, aa, C, d, del, h, qab, qam, qap As Double EPS = getGDelta() FPMIN = 0.000000000001 qab = a + b qap = a + 1# qam = a - 1# C = 1# d = 1# - qab * x / qap If (Abs(d) < FPMIN) Then d = FPMIN d = 1# / d h = d For m = 1 To ITMAX m2 = 2 * m aa = m * (b - m) * x / ((qam + m2) * (a + m2)) d = 1# + aa * d If (Abs(d) < FPMIN) Then d = FPMIN C = 1# + aa / C If (Abs(C) < FPMIN) Then C = FPMIN d = 1# / d h = h * d * C aa = -(a + m) * (qab + m) * x / ((a + m2) * (qap + m2)) d = 1# + aa * d If (Abs(d) < FPMIN) Then d = FPMIN C = 1# + aa / C If (Abs(C) < FPMIN) Then C = FPMIN d = 1# / d del = d * C h = h * del If (Abs(del - 1#) <= EPS) Then Exit For Next If (m > ITMAX) Then betacf = -1 Else betacf = h End If End Function

不完全B函数计算:

Public Function bata(ByVal a As Double, ByVal b As Double, ByVal x As Double) As Double Dim bt As Double If (x < 0#) Or (x > 1#) Then Err.Raise vbObjectError + 513, , "参数错误! " End If If (x = 0#) Or (x = 1#) Then bt = 0# Else bt = Exp(lnGamma(a + b) - lnGamma(a) - lnGamma(b) + a * Log(x) + b * Log(1# - x)) End If If (x < (a + 1#) / (a + b + 2#)) Then bata = bt * betacf(a, b, x) / a Else bata = 1# - bt * betacf(b, a, 1# - x) / b End If End Function


ExcelStat下载: Excel加载宏ExcelStat.xla

关注、转载、点赞、收藏!!!