伽马函数递推公式推导,汤家凤伽马函数
前些日子,要制作项目的一个算法,需要使用贝塞尔函数(半整数阶,复数域),网上的代码一般都要收费。 干脆,我自己做了一个。 其中包含了伽马函数值的求法。 以下是我的想法和实现。 可以免费使用。
第一步:首先介绍伽马函数。
(1)实数域函数的定义:
(2)复域上的函数定义如下。
上述两个定义可以在百度百科上查到。
第二步:介绍设计理念
本实现的设计思路如下。
当时,使用以下极限对伽马函数进行了评价。
当时,伽马函数采用了递推。
当时、
当时,伽马函数采用了递推。
步骤3 :实现伽马函数。
# include cmath//gamma函数(求解bezier函数的辅助函数,任意阶)/x变量值(//setAbsRelaErr相对误差绝对值doublegamma(constdoublex,const double setabsetabss //递归确定伽马函数值if(x1.0 ) return(x-1 )伽马(x-1,setAbsRelaErr ); }elseif(x0.0 ) returngamma ) x1,setAbsRelaErr )/x; }double res=0.0; 双步骤=1.0; 双检查=0.0; int i=1; while(ABS((check-temp )/temp ) setAbsRelaErr ) ) {check=temp; TEMP*=I/(x-1I; I; }RES=temp*pow(I,x - 1 ); 返回结果; (步骤4 :验证
提示: cmath提供了双精度gamma (双精度)函数,可以直接求出gamma函数的值。 (我也试了一下才知道,啊,知识面太窄了。 )