nchoosek
二項係数
説明
例
数値引数およびシンボリック引数の二項係数
次の式について二項係数を計算します。
syms n [nchoosek(n, n), nchoosek(n, n + 1), nchoosek(n, n - 1)]
ans = [ 1, 0, n]
どちらか一方または両方のパラメーターが負の数値の場合は、これらの数字をシンボリック オブジェクトに変換します。
[nchoosek(sym(-1), 3), nchoosek(sym(-7), 2), nchoosek(sym(-5), -5)]
ans = [ -1, 28, 1]
どちらか一方または両方のパラメーターが複素数の場合は、これらの数値をシンボリック オブジェクトに変換します。
[nchoosek(sym(i), 3), nchoosek(sym(i), i), nchoosek(sym(i), i + 1)]
ans = [ 1/2 + 1i/6, 1, 0]
二項係数を含む式の処理
diff
や expand
など、多くの関数は nchoosek
を含む式を処理することができます。
二項係数を微分します。
syms n k diff(nchoosek(n, 2))
ans = -(psi(n - 1) - psi(n + 1))*nchoosek(n, 2)
二項係数を展開します。
expand(nchoosek(n, k))
ans = -(n*gamma(n))/(k^2*gamma(k)*gamma(n - k) - k*n*gamma(k)*gamma(n - k))
パスカルの三角形
nchoosek
を使用してパスカルの三角形を作成します。
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]
ベクトル要素のすべての組み合わせ
1
行 5
列のシンボリック行ベクトルの要素を同時に 3 個および 4 個を取り出す場合のすべての組み合わせを求めます。
要素 x1
、x2
、x3
、x4
および x5
をもつ 1
行 5
列のシンボリック ベクトルを作成します。
v = sym('x', [1, 5])
v = [ x1, x2, x3, x4, x5]
v
の要素を同時に 3 個を取り出す場合のすべての組み合わせを求めます。
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]
入力引数
出力引数
詳細
ヒント
アルゴリズム
k < 0 または n – k < 0 という条件では、nchoosek(n,k)
は 0 を返します。
片方または両方の引数が複素数の場合、nchoosek
は関数 gamma
によって二項係数を表す式を使用します。
バージョン履歴
R2012a で導入