【摘要】伽玛函数(Gamma),也叫欧拉第二积分,是阶乘函数在实数与复数上扩展的一类函数。该函数在分析学、概率论、偏微分方程和组合数学中有重要的应用。与之有密切联系的函数是贝塔函数,也叫第一类欧拉积分,可以用来快速计算同伽马函数形式相类似的积分。
在SPC的Xbar-R控制图计算中什么时候会用到伽玛函数呢?
答案是在求C4常量的时候,比如样本总数为20,子组大小为4
此时求C4常量计算公式为:SQRT(2*/@temp) * dbo.Fun_SPC_Gamma((@temp + 1) /2.0) / dbo.Fun_SPC_Gamma(@temp/2.0)
其中@temp等于样本总数/子组大小-1
SQRT为求根函数
如上样本总数为20,子组大小为4,求得的C4常量值为:0.995842194055334
代码如下:
function [Fun_SPC_Gamma](@x float) returns float begin if @x <= 0 return 1 declare @gamma float set @gamma = 0.577215664901532860606512090 if @x <0.001 return 1.0 / (@x * (1.0 + @gamma * @x)); if @x < 12 begin declare @y float set @y =@x declare @n int set @n = 0 declare @arg_was_less_than_one bit if @y < 1.0 set @arg_was_less_than_one = 1 else set @arg_was_less_than_one = 0 if @arg_was_less_than_one = 1 set @y = @y + 1 else begin set @n= cast(Floor(@y) as int) - 1 set @y =@y - @n end declare @tbP table ( id int, const float ) insert into @tbP values(1,-1.71618513886549492533811E+0) insert into @tbP values(2,2.47656508055759199108314E+1) insert into @tbP values(3,-3.79804256470945635097577E+2) insert into @tbP values(4,6.29331155312818442661052E+2) insert into @tbP values(5,8.66966202790413211295064E+2) insert into @tbP values(6,-3.14512729688483675254357E+4) insert into @tbP values(7,-3.61444134186911729807069E+4) insert into @tbP values(8,6.64561438202405440627855E+4) declare @tbQ table ( id int, const float ) insert into @tbQ values(1,-3.08402300119738975254353E+1) insert into @tbQ values(2,3.15350626979604161529144E+2) insert into @tbQ values(3,-1.01515636749021914166146E+3) insert into @tbQ values(4,-3.10777167157231109440444E+3) insert into @tbQ values(5,2.25381184209801510330112E+4) insert into @tbQ values(6,4.75584627752788110767815E+3) insert into @tbQ values(7,-1.34659959864969306392456E+5) insert into @tbQ values(8,-1.15132259675553483497211E+5) declare @num float declare @den float set @num = 0 set @den = 1 declare @i int declare @z float set @z = @y - 1 set @i = 1 while @i <=8 begin declare @p float declare @q float select @p = const from @tbP t where id = @i select @q = const from @tbQ t where id = @i set @num = (@num + @p) * @z set @den = @den * @z + @q set @i = @i + 1 end declare @result float set @result = @num/@den + 1.0 if @arg_was_less_than_one = 1 begin set @result = @result/(@y - 1) end else begin declare @j int set @j = 0 while @j< @n begin set @result = @result * @y set @y =@y + 1 set @j = @j + 1 end end return @result end if @x > 171.624 return 1 return Exp(dbo.Fun_SPC_LogGamma(@x)) end
(深圳市凯特勒科技有限公司版权所有,转载请说明出处 https://www.yunspc.com)