十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
伽玛函数的定义(或叫第二类欧拉积分):
为藁城等地区用户提供了全套网页设计制作服务,及藁城网站建设行业解决方案。主营业务为网站设计制作、网站制作、藁城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
Γ(x)=积分:e^(-t)*t^(x-1)dt (e的负t次方乘以t的(x-1)次方),积分区间是0到正无穷,x>0
而可以把x延拓到复平面上,除了0和负整数的点.这里,利用Γ函数在x>0的区间上的性质Γ(x+1)=xΓ(x) ,可以定义:
Γ(z)=Γ(z+n+1)/z(z+1)(z+2)...(z+n)
在正整数的范围内,由于Γ(x+1)=xΓ(x) 关系,Γ(n+1)=n!
这样,因为z可以取非整数,我们就用伽玛函数延拓了阶乘的定义.定义x!=Γ(x+1),这里x可以取非整数.
方法如下:
/*This program can calculate the factorial of (int n).*/
#include stdio.h
int factorial(int n)
{
return (n == 1)?n:factorial(n-1)*n;//recursion.
}
int main(void)
{
int n,fac;
printf("Please input the value of n:");//initialize n.
scanf("%d",n);
fac = factorial(n)//variable fac is not necessary.
printf("The result is:%d\n",fac);
return 0;
}
相关内容:
阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 0.5!,0.65!,0.777!都是错误的。但是,有时候我们会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘。
简单的说就是整数阶乘的推广,它有一个积分的表达式:
Γ(x)=∫e^(-t)*t^(x-1)dt (积分的下限式0,上限式+∞)
算法源自《常用算法程序集》徐士良
#include "stdio.h"
double gam1(x)
double x;
{ int i;
double y,t,s,u;
static double a[11]={ 0.0000677106,-0.0003442342,
0.0015397681,-0.0024467480,0.0109736958,
-0.0002109075,0.0742379071,0.0815782188,
0.4118402518,0.4227843370,1.0};
if (x=0.0)
{ printf("err**x=0!\n"); return(-1.0);}
y=x;
if (y=1.0)
{ t=1.0/(y*(y+1.0)); y=y+2.0;}
else if (y=2.0)
{ t=1.0/y; y=y+1.0;}
else if (y=3.0) t=1.0;
else
{ t=1.0;
while (y3.0)
{ y=y-1.0; t=t*y;}
}
s=a[0]; u=y-2.0;
for (i=1; i=10; i++)
s=s*u+a[i];
s=s*t;
return(s);
}