在Mathematica中,Gamma[a, z]
指的是上部不完整的Gamma函数,而在Matlab中,gammainc(z, a)
指的是正则化的下部不完全Gamma函数。我想知道如何使用Matlab获得Mathematica结果?在这个link中,解释了使用Mathematica获得相同Matlab结果的方法,但我找不到通过Matlab获得一个的策略。
答案 0 :(得分:1)
您有几种选择。除了@MarkMcClure提供的版本
y = (1-gammainc(z,a)).*gamma(a)
您还可以使用其他参数直接获得上层正则化伽马函数:
y = gammainc(z,a,'upper').*gamma(a)
请注意,参数的顺序与Mathematica函数的顺序相反。
以上是严格的数字函数,但Mathematica的Gamma
符号进行评估。您可以在符号工具箱中使用Matlab的igamma
。请注意,此函数不是正则化的,并且使用与Mathematica函数相同的参数顺序 - 它与您找到的直接等价物接近(但数值评估显然较慢):
syms a z;
y = igamma(a,z)
在旧版本的Matlab中,此功能可能无法直接使用。但是,您仍然可以通过以下方式访问MuPAD version:
y = feval(symengine,'igamma',a,z)
或类似
y = evalin(symengine,['igamma(' char(a) ',' char(z) ')'])
答案 1 :(得分:0)
根据维基百科,
因此,在Mathematica中你可能有
Gamma[1, 2] // N
在Matlab中你可以拥有
gamma(1)-gammainc(2,1)
两者都返回0.135335