函数:PluralGammaLower(s,x)
s:一个复数变量
x:一个复数变量
说明函数成功返回对应的向下的不完全伽马函数值
原理:
1、这里求解的是向下的不完全伽马函数,具体的参看
2、本代码求解的不完全伽马函数有如下形式的级数展开形式
2.1、很明显,我们可以设
A[2*n+1]=s+2*n+1+z*(n+1)/{s+2*n+2-(s+n+1)*z/A[2*n+3]},其中n=0,1,2,……
则我们求解的函数=z^s*e^(-z)/{s-sz/A[1]}
2.2、
一般地,当n趋近于∞时,A[2*n+1]≈A[2*n+3],在这里我们截取前n项,令x=A[2*n+1]=A[2*n+3],带入上面2.1式我们有如下的方程
C*x^2-(A*c+D+B)*x+A*D=0
其中
A=s+2*n+1
B=z*(n+1)
C=s+2*n+2
D=(s+n+1)*z
那么我们很容易得到两个x的解,一般地这里我们选取x离C近的解作为我们实际的解
2.3、令A[2*n+3]=x,然后回代入2.1式算出A[1],进而算得我们的不完全伽马函数
2.4、这里需要注意,上面的算法只能在s为非负整数时才能使用.
引用:
PluralMul:复数乘法
PluralSqrt:复数开方
PluralDiv:复数除法
PluralPow:复数求次方
PluralExp:复数求指数次方
例子:
a = i
c=PluralGammaLower(a,a)
c= -0.140125009678925 - 0.281466640628561i
源代码:
Public Function PluralGammaLower(ByVal s As Plural, ByVal x As Plural) As Plural
'不完全Gamma函数的级数展开求解方法
'参考http://en.wikipedia.org/wiki/Incomplete_gamma_function
Dim nz, sz, sn, ret, A, B, C, D, An As New Plural
Dim n As Integer = 100
A.Real = s.Real + n + n + 1
A.Imag = s.Imag
C.Real = A.Real + 1
C.Imag = A.Imag
nz.Real = A.Real - n
nz.Imag = A.Imag
D = PluralMul(nz, x)
B.Real = x.Real * (n + 1)
B.Imag = x.Imag * (n + 1)
nz = PluralMul(A, C)
sz.Real = nz.Real + D.Real + B.Real
sz.Imag = nz.Imag + D.Imag + B.Imag
sn = PluralMul(sz, sz)
ret = PluralMul(nz, D)
ret.Real += ret.Real
ret.Imag += ret.Imag
ret.Real += ret.Real
ret.Imag += ret.Imag
sn.Real -= ret.Real
sn.Imag -= ret.Imag
ret = PluralSqrt(sn)
A.Real = sz.Real + ret.Real
A.Imag = sz.Imag + ret.Imag
B.Real = sz.Real - ret.Real
B.Imag = sz.Imag - ret.Imag
C.Real += C.Real
C.Imag += C.Imag
sz = PluralDiv(A, C)
sn = PluralDiv(B, C)
A.Real = s.Real + n + n + 1
B.Real = (A.Real - sz.Real) ^ 2 + (A.Imag - sz.Imag) ^ 2
C.Real = (A.Real - sn.Real) ^ 2 + (A.Imag - sn.Imag) ^ 2
If B.Real <C.Real Then
An.Real = sz.Real
An.Imag = sz.Imag
Else
An.Real = sn.Real
An.Imag = sn.Imag
End If
B.Real = x.Real * n
B.Imag = x.Imag * n
n -= 1
A.Real = s.Real + n + n + 1
A.Imag = s.Imag
C.Real = A.Real + 1
C.Imag = A.Imag
D.Real = A.Real - n
D.Imag = A.Imag
While n >= 0
sn = PluralMul(D, x)
sz = PluralDiv(sn, An)
ret.Real = C.Real - sz.Real
ret.Imag = C.Imag - sz.Imag
nz = PluralDiv(B, ret)
An.Real = A.Real + nz.Real
An.Imag = A.Imag + nz.Imag
A.Real -= 2
B.Real -= x.Real
B.Imag -= x.Imag
C.Real -= 2
D.Real -= 1
n -= 1
End While
A = PluralMul(s, x)
B = PluralDiv(A, An)
C.Real = s.Real - B.Real
C.Imag = s.Imag - B.Imag
A = PluralPow(x, s)
B = PluralExp(x)
D = PluralMul(B, C)
ret = PluralDiv(A, D)
Return ret
End Function
matlab的上不完全gamma函数人为修正
在Matlab中,关于gammainc 函数(不完全Gamma函数):
1、For any a>=0, gammainc(x,a) approaches 1 as x approaches infinity. For small x and a, gammainc(x,a) is approximately equal to x^a, so gammainc(0,0) =
2、伽马函数是特殊函数的一种,有积分的定义式。n的伽马函数值就是n-1的阶乘值(当n为正整数时),而伽马函数对除奇异点外一切复数均有定义。
3、MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
4、MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
5、MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
6、MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
伽马函数的计算问题
1、基于matlab 的gamma校正1、 gamma校正的原理其原始图像产生了失真,失真程度有具体系统的gamma值决定,通过相应的软件对图像数据进行预补偿,再送入CRT显示。二、分析原图如下:I=imread(aaa.jpg)subplot(2,2,1)imshow(I)title(aaa)m,n,k=size(I)r=zeros(m,n,k,uint8)gama=0.8p=255/255(gama)p=(1/p)(1/gama)for i=1:mfor j=1:nfor l=1:kr(i,j,l)=floor(p*double(I(i,j,l)(1/gama)endend。
2、endsubplot(2,2,2)imshow(r)title(gama=0.8)gama=0.6p=255/255(gama)p=(1/p)(1/gama)for i=1:mfor j=1:nfor l=1:kr(i,j,l)=floor(p*double(I(i,j,l)(1/gama)endendendsubplot(2,2,3)imshow(r)title(gama=0.6)gama=0.4p=255/255(gama)p=(1/p)(1/gama)for i=1:mfor j=1:nfor l=1:kr(i,j,l)=floor(p*double(I(i,j,l)(1/gama)endendendsubplot(2,2,4)imshow(r)title(gama=0.4。
伽玛函数(Gamma函数),也叫欧拉第二积分,是阶乘函数在实数与复数上扩展的一类函数。该函数在分析学、概率论、偏微分方程和组合数学中有重要的应用。与之有密切联系的函数是贝塔函数,也叫第一类欧拉积分。可以用来快速计算同伽马函数形式相类似的积分。
伽玛函数(Gamma Function)作为阶乘的延拓,是定义在复数范围内的亚纯函数,通常写成
。
(1)在实数域上伽玛函数定义为:
(2)在复数域上伽玛函数定义为:
其中
,此定义可以用解析开拓原理拓展到整个复数域上,非正整数除外。
复平面上的Gamma 函数
(3)除了以上定义之外,伽马函数公式还有另外一个写法:
我们都知道
是一个常用积分结果,公式(3)可以用
来验证。
(4)伽马函数还可以定义为无穷乘积:
不完全Gamma函数
详见不完全伽马函数
1728年,哥德巴赫在考虑数列插值的问题,通俗的说就是把数列的通项公式定义从整数集合延拓到实数集合,例如数列1,4,9,16.....可以用通项公式n²自然的表达,即便 n 为实数的时候,这个通项公式也是良好定义的。直观的说也就是可以找到一条平滑的曲线y=x²通过所有的整数点(n,n²),从而可以把定义在整数集上的公式延拓到实数集合。一天哥德巴赫开始处理阶乘序列1,2,6,24,120,720,...,我们可以计算2!,3!,是否可以计算2.5!呢?我们把最初的一些(n,n!)的点画在坐标轴上,确实可以看到,容易画出一条通过这些点的平滑曲线。
但是哥德巴赫无法解决阶乘往实数集上延拓的这个问题,于是写信请教尼古拉斯·伯努利和他的弟弟丹尼尔·伯努利,由于欧拉当时和丹尼尔·伯努利在一块,他也因此得知了这个问题。而欧拉于1729 年完美地解决了这个问题,由此导致了伽玛 函数的诞生,当时欧拉只有22岁。
函数性质
编辑
1、通过分部积分的方法,可以推导出这个函数有如下的递归性质:
于是很容易证明,伽马函数可以当成是阶乘在实数集上的延拓,对于正整数n,具有如下性质:
2、与贝塔函数的关系:
3、在概率的研究中有一个重要的分布叫做伽玛分布:
其中
。
4、对
,有
这个公式称为余元公式。
由此可以推出以下重要的概率公式:
5、对于
,伽马函数是严格凹函数。
6、伽马函数是亚纯函数,在复平面上,除了零和负整数点以外,它全部解析,而伽马函数在
处的留数为
希望我能帮助你解疑释惑。
以上就是关于什么是不完全伽马分布函数全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!