gamma函数c语言实现 gammainv函数

C语言中阶乘用什么符号表示啊?

/*This program can calculate the factorial of (int n).*/

创新互联公司从2013年开始,先为福安等服务建站,福安等地企业,进行企业商务咨询服务。为福安企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

#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 的阶乘。

参考资料来源:百度百科-阶乘

如何用C语言用伽马函数求值

简单的说就是整数阶乘的推广,它有一个积分的表达式:

Γ(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);

}

伽玛函数

伽玛函数的定义(或叫第二类欧拉积分):

Γ(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可以取非整数.

我要拟合Gamma分布函数,但是程序老是提醒错误,运行不出结果,请高手指点。

你的程序里面出现的两处 (a-1)! 是问题所在。Matlab里不用!代表阶乘。阶乘有专门的函数:

y=factorial(N),要求N为非负整数

所以你把源程序改成:

function nonlinefit

clc;clear;

t=[1.25 1.75 2.25 2.75 3.25];

y=[18.51 17.35 13.29 9.42 5.66];

beta=nlinfit(t,y,@myfunc,[1 1])

a=beta(1)

m=beta(2)

tt=0:0.1:3.25

yy=m^a*tt^(a-1)*exp(-m*tt)/factorial((a-1))!

%gamma(a)=(a-1)!

plot(t,y,'o',tt,yy)

function y1=myfunc(const,t)

a=const(1);

m=const(2);

y1=m^a*t^(a-1)*exp(-m*t)/factorial((a-1));

就行啦

c语言 求1!+2!+3!+...+n!的值.n由键盘输入

n的值不能超过13,否则会因为数据溢出而导致结果错误。

#include stdio.h

int main()

{

long i,n,m,sum=0

scanf("%d",n);

for(i=m=1;i=n;i++);

{

m*=i;

sum+=m;

}

printf("%d\n",sum);

return 0;

}

例如:

#include stdio.h

/* 通过递归计算一个数的回阶乘 */

int factorial(int num)

{

if (num==1)

return 1;

else

return (num * factorial(num - 1));

}

int main()

{

int i,n;

long sum = 1;

scanf("%d",n);

for (i = 2;i = n;++i)

sum += factorial(i);

printf("%ld\n",sum);

return 0;

}

扩展资料:

由于正整数的阶乘是一种连乘运算,而0与任何实数相乘的结果都是0。所以用正整数阶乘的定义是无法推广或推导出0!=1的。即在连乘意义下无法解释“0!=1”。

通常我们所说的阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 0.5!,0.65!,0.777!都是错误的。但是,有时候会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘。

参考资料来源:百度百科-阶乘

当前文章:gamma函数c语言实现 gammainv函数
网页链接:https://www.cdcxhl.com/article28/hpoicp.html

成都网站建设公司_创新互联,为您提供标签优化响应式网站网站维护网页设计公司微信小程序用户体验

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计