gamma function, complete or incomplete normalized
y = gamma(u) y = gamma(x, a) y = gamma(x, a, b) y = gamma(x, .., "upper")
gamma(u)
and gamma(x,…)
can be overloaded
for complex numbers with %s_gamma_user()
, and for other
a
types with the usual overload naming rule.
u
or of (the non-scalar) x
, a
,
or b
.
gamma(…)
computes and yields the complete or incomplete gamma
function for each element of its input(s), in an element-wise way. The complete
gamma function extends the factorial one to non-integer real positive or negative
numbers, as gamma(u+1)=u*gamma(u)
.
gamma(u) computes
gamma(x, a) computes the integral
gamma(x, a, b) computes the generalized integral
gamma(x, a, "upper") computes accurately the
complementary integral
even for big x and P(x,a)→1. Finally,
gamma(x, a, b, "upper") computes the generalized
complementary integral
![]() | The inverse incomplete normalized gamma function can be computed with
x = cdfgam("X", a, b, y, 1-y),
that is the Calling x = cdfgam("X", a, b, z-1, z) with
|
Gamma as the extension of the factorial function to non-integer numbers:
[gamma(2:7) ; factorial(1:6)] gamma(1.5:7) gamma(1.5:7) ./ gamma(0.5:6) | ![]() | ![]() |
--> [gamma(2:7) ; factorial(1:6)] ans = 1. 2. 6. 24. 120. 720. 1. 2. 6. 24. 120. 720. --> gamma(1.5:7) ans = 0.8862269 1.3293404 3.323351 11.631728 52.342778 287.88528 --> gamma(1.5:7) ./ gamma(0.5:6) ans = 0.5 1.5 2.5 3.5 4.5 5.5
Graph of the Gamma function around 0:
[a, b] = (-3, 5); x = linspace(a,b,40000); y = gamma(x); clf plot2d(x, y, style=0, axesflag=5, rect=[a,-10,b,10]) title("$\Gamma(u)$", "fontsize",3.5) xgrid(color("grey60")) | ![]() | ![]() |
Incomplete normalized P(x,a) gamma function:
x = 0.1:0.2:8; a = 0.1:0.2:7; [X, A] = ndgrid(x, a); P = gamma(X,A); clf gcf().color_map = cool(100); surf(a,x,P) title("$P(x,a)=\frac{1}{\Gamma(a)}\int_0^x\! t^{a-1}e^{-t}\,dt$","fontsize",3.5) xlabel(["" "a"], "fontsize",2) ylabel("x", "fontsize",2) zlabel("P(x,a)", "fontsize",2) xgrid | ![]() | ![]() |
Incomplete generalized normalized P(x,a,b) function:
a = 0.1:0.2:8; b = 0.1:0.2:7; [A, B] = ndgrid(a, b); P = gamma(1,A,B); clf gcf().color_map = parula(100); surf(b,a,P) title("$P(x,a,b)=\frac{b^a}{\Gamma(a)}\int_0^x\! t^{a-1}e^{-b\,t}\,dt\quad for\quad x=1$","fontsize",3.7) xlabel("b", "fontsize",2) ylabel("a", "fontsize",2) zlabel("") gca().rotation_angles = [58 75]; xgrid | ![]() | ![]() |
Version | Description |
5.4.0 | Overloading allowed for list, mlist, tlist and hypermatrix types. |
6.0.2 |
|
6.1.1 | gamma(x,..) incomplete versions added. |