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

不完全 函数定义为:

其互补形式

当 时,可以利用 的级数展开求不完全 函数:

当,可以用如下连分式求解不完全 函数:

求解 的级数形式:

Public Function gammaser(ByVal a As Double, ByVal x As Double) As Double Dim EPS, sum, del, ap, lng As Double EPS = getGDelta() Dim ITMAX, n As Long ITMAX = 1000 lng = lnGamma(a) If x < 0# Then gammaser = -1 Exit Function End If If x = 0# Then gammaser = 0# Exit Function End If If a <= getGDelta() Then gammaser = -1 Exit Function End If ap = a del = 1# / a sum = del For n = 0 To ITMAX - 1 ap = ap + 1 del = del * x / ap sum = sum + del If (Abs(del) < Abs(sum) * EPS) Then gammaser = sum * Exp(-x + a * Log(x) - lng) Exit Function End If Next gammaser = 1 / EPS End Function

求解 的连分式形式:

Public Function gammacf(ByVal a As Double, ByVal x As Double) As Double Dim ITMAX, i As Long Dim an, b, C, d, del, h, EPS, FPMIN, lng As Double ITMAX = 1000 EPS = getGDelta() FPMIN = 0.000000000001 lng = lnGamma(a) b = x + 1# - a C = 1# / FPMIN d = 1# / b h = d For i = 1 To ITMAX an = -i * (i - a) b = b + 2# d = an * d + b If (Abs(d) < FPMIN) Then d = FPMIN C = b + an / 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 End If Next If i > ITMAX Then gammacf = 1# / FPMIN Else gammacf = Exp(-x + a * Log(x) - lng) * h End If End Function

求解:

Public Function gammap(ByVal a As Double, ByVal x As Double) As Double If (x < 0# Or a <= getGDelta()) Then Err.Raise vbObjectError + 513, , "参数错误! " End If If (x < a + 1#) Then gammap = gammaser(a, x) Else gammap = 1# - gammacf(a, x) End If End Function

getGDelta:获取用户在ExcelSTat中配置的精度。

ExcelStat下载: Excel加载宏ExcelStat.xla

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

啥时候才到100粉?求关注。