# nchoosek

Binomial coefficient

## Description

example

b = nchoosek(n,k) returns the binomial coefficient of n and k, defined as n!/(k!(n - k)!). This is the number of combinations of n items taken k at a time.

example

C = nchoosek(v,k) returns a matrix containing all possible combinations of the elements of vector v taken k at a time. Matrix C has k columns and n!/(k!(n - k)!) rows, where n is length(v). In this syntax, k must be a nonnegative integer.

## Examples

### Binomial Coefficients for Numeric and Symbolic Arguments

Compute the binomial coefficients for these expressions.

syms n
[nchoosek(n, n), nchoosek(n, n + 1), nchoosek(n, n - 1)]
ans =
[ 1, 0, n]

If one or both parameters are negative numbers, convert these numbers to symbolic objects.

[nchoosek(sym(-1), 3), nchoosek(sym(-7), 2), nchoosek(sym(-5), -5)]
ans =
[ -1, 28, 1]

If one or both parameters are complex numbers, convert these numbers to symbolic objects.

[nchoosek(sym(i), 3), nchoosek(sym(i), i), nchoosek(sym(i), i + 1)]
ans =
[ 1/2 + 1i/6, 1, 0]

### Handle Expressions Containing Binomial Coefficients

Many functions, such as diff and expand, can handle expressions containing nchoosek.

Differentiate the binomial coefficient.

syms n k
diff(nchoosek(n, 2))
ans =
-(psi(n - 1) - psi(n + 1))*nchoosek(n, 2)

Expand the binomial coefficient.

expand(nchoosek(n, k))
ans =
-(n*gamma(n))/(k^2*gamma(k)*gamma(n - k) - k*n*gamma(k)*gamma(n - k))

### Pascal Triangle

Use nchoosek to build the Pascal triangle.

m = 5;
for n = 0:m
C = sym([]);
for k = 0:n
C = horzcat(C, nchoosek(n, k));
end
disp(C)
end
1
[ 1, 1]
[ 1, 2, 1]
[ 1, 3, 3, 1]
[ 1, 4, 6, 4, 1]
[ 1, 5, 10, 10, 5, 1]

### All Combinations of Vector Elements

Find all combinations of elements of a 1-by-5 symbolic row vector taken three and four at a time.

Create a 1-by-5 symbolic vector with the elements x1, x2, x3, x4, and x5.

v = sym('x', [1, 5])
v =
[ x1, x2, x3, x4, x5]

Find all combinations of the elements of v taken three at a time.

C = nchoosek(v, 3)
C =
[ x1, x2, x3]
[ x1, x2, x4]
[ x1, x3, x4]
[ x2, x3, x4]
[ x1, x2, x5]
[ x1, x3, x5]
[ x2, x3, x5]
[ x1, x4, x5]
[ x2, x4, x5]
[ x3, x4, x5]
C = nchoosek(v, 4)
C =
[ x1, x2, x3, x4]
[ x1, x2, x3, x5]
[ x1, x2, x4, x5]
[ x1, x3, x4, x5]
[ x2, x3, x4, x5]

## Input Arguments

collapse all

Number of possible choices, specified as a symbolic number, variable, expression, or function.

Number of selected choices, specified as a symbolic number, variable, expression, or function. If the first argument is a symbolic vector v, then k must be a nonnegative integer.

Set of all choices, specified as a vector of symbolic numbers, variables, expressions, or functions.

## Output Arguments

collapse all

Binomial coefficient, returned as a nonnegative scalar value.

All combinations of v, returned as a matrix of the same type as v.

collapse all

### Binomial Coefficient

If n and k are integers and 0 ≤ k ≤ n, the binomial coefficient is defined as:

$\left(\begin{array}{c}n\\ k\end{array}\right)=\frac{n!}{k!\left(n-k\right)!}$

For complex numbers, the binomial coefficient is defined via the gamma function:

$\left(\begin{array}{c}n\\ k\end{array}\right)=\frac{\Gamma \left(n+1\right)}{\Gamma \left(k+1\right)\Gamma \left(n-k+1\right)}$

## Tips

• Calling nchoosek for numbers that are not symbolic objects invokes the MATLAB® nchoosek function.

• If one or both parameters are complex or negative numbers, convert these numbers to symbolic objects using sym, and then call nchoosek for those symbolic objects.

## Algorithms

If k < 0 or n – k < 0, nchoosek(n,k) returns 0.

If one or both arguments are complex, nchoosek uses the formula representing the binomial coefficient via the gamma function.

#### Mathematical Modeling with Symbolic Math Toolbox

Get examples and videos