#14 ふれてみよう高校数学 代数と式の操作

二項定理

二項定理

(a+b)2=a2+2ab+b2(a+b)^2 = a^2 + 2ab + b^2(a+b)3=a3+3a2b+3ab2+b3(a+b)^3 = a^3 + 3a^2b + 3ab^2 + b^3——これを手で展開するのは面倒ですよね。nn が大きくなるほど大変です。

二項定理は「(a+b)n(a+b)^n を展開したとき、各項の係数がどうなるか」を一発で答える公式です。

(a+b)n(a + b)^n を展開したとき、各項の係数を二項係数と言います。

(a+b)n=k=0n(nk)ankbk\boxed{(a + b)^n = \sum_{k=0}^{n} \binom{n}{k} a^{n-k} b^k}

ここで (nk)=nCk=n!k!(nk)!\binom{n}{k} = {}_nC_k = \dfrac{n!}{k!(n-k)!} です。

nn展開
011
1a+ba + b
2a2+2ab+b2a^2 + 2ab + b^2
3a3+3a2b+3ab2+b3a^3 + 3a^2b + 3ab^2 + b^3
4a4+4a3b+6a2b2+4ab3+b4a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4
5a5+5a4b+10a3b2+10a2b3+5ab4+b5a^5 + 5a^4b + 10a^3b^2 + 10a^2b^3 + 5ab^4 + b^5

二項係数の意味

(nk)\binom{n}{k} は「nn 個の中から kk 個を選ぶ組み合わせの数」です。

なぜ組み合わせの数が展開の係数になるのか?——想像してみてください。

(a+b)n(a+b)^n を展開するとき、nn 個の括弧から kk 個の括弧で bb を選び、残りで aa を選ぶと ankbka^{n-k}b^k が生まれます。その選び方の数が (nk)\binom{n}{k} です。

(a+b)³ = (a+b)(a+b)(a+b)

各括弧から a か b を1つ選ぶ
aaa → a³ : 1通り
aab, aba, baa → a²b : 3通り = C(3,1)
abb, bab, bba → ab² : 3通り = C(3,2)
bbb → b³ : 1通り

パスカルの三角形

二項係数は「パスカルの三角形」のパターンをなします。「各数 = 真上の左右の数の和」という単純なルールだけで全部の係数が作れます。

         1
        1 1
       1 2 1
      1 3 3 1
     1 4 6 4 1
    1 5 10 10 5 1

構築規則:各数 = 真上の左右の数の和

(nk)=(n1k1)+(n1k)\binom{n}{k} = \binom{n-1}{k-1} + \binom{n-1}{k}

これは「kk 個目の要素を選ぶか選ばないか」の2択からくる恒等式です(パスカルの恒等式)——「前の行の情報だけで次の行が計算できる」という美しい再帰構造です。

パスカルの三角形:自動アニメーションで行が増える。マウスのY座標でn行目を強調表示
var t = 0;
var maxRows = 8;

function binom(n, k) {
if (k < 0 || k > n) return 0;
if (k === 0 || k === n) return 1;
var result = 1;
for (var i = 0; i < k; i++) {
  result = result * (n - i) / (i + 1);
}
return Math.round(result);
}

function loop() {
ctx.clearRect(0, 0, W, H);
t += 0.008;

var highlightRow = Math.min(maxRows - 1, Math.floor((my / H) * maxRows));
var visibleRows = Math.min(maxRows, Math.floor(t) + 1);

ctx.fillStyle = '#94a3b8';
ctx.font = '14px monospace';
ctx.textAlign = 'center';
ctx.fillText('パスカルの三角形  (マウスのY位置で行を強調)', W/2, 22);

var rowH = 36;
var startY = 48;

for (var n = 0; n < visibleRows; n++) {
  var rowWidth = (n + 1) * 48;
  var startX = W/2 - rowWidth/2 + 24;
  var isHighlight = (n === highlightRow);
  var alpha = 1;
  if (n === visibleRows - 1 && t - Math.floor(t) < 0.3) {
    alpha = (t - Math.floor(t)) / 0.3;
  }

  for (var k = 0; k <= n; k++) {
    var val = binom(n, k);
    var x = startX + k * 48;
    var y = startY + n * rowH;

    ctx.globalAlpha = alpha;

    // Background circle
    var bgColor = isHighlight ? '#1e3a5f' : '#1e293b';
    var borderColor = isHighlight ? '#3b82f6' : '#334155';
    ctx.fillStyle = bgColor;
    ctx.beginPath();
    ctx.arc(x, y, 18, 0, Math.PI * 2);
    ctx.fill();
    ctx.strokeStyle = borderColor;
    ctx.lineWidth = isHighlight ? 2 : 1;
    ctx.stroke();

    ctx.fillStyle = isHighlight ? '#fbbf24' : '#e2e8f0';
    ctx.font = (isHighlight ? 'bold ' : '') + (val > 99 ? '10' : val > 9 ? '12' : '14') + 'px monospace';
    ctx.textAlign = 'center';
    ctx.fillText(val, x, y + 5);
    ctx.globalAlpha = 1;
  }
}

if (highlightRow < visibleRows) {
  var rowCoeffs = [];
  for (var ki = 0; ki <= highlightRow; ki++) rowCoeffs.push(binom(highlightRow, ki));
  ctx.fillStyle = '#fbbf24';
  ctx.font = 'bold 13px monospace';
  ctx.textAlign = 'center';
  ctx.fillText('n=' + highlightRow + 'の係数: [' + rowCoeffs.join(', ') + ']', W/2, H - 14);
}

requestAnimationFrame(loop);
}
loop();

二項定理の使い方

特定の項を求める

(2x+3)5(2x + 3)^5x3x^3 の項を求める。

k=2k=2 のとき(a5kbk=(2x)332a^{5-k}b^k = (2x)^3 \cdot 3^2):

(52)(2x)3(3)2=108x39=720x3\binom{5}{2}(2x)^3(3)^2 = 10 \cdot 8x^3 \cdot 9 = 720x^3

「何番目の kk のとき x3x^3 になるか」を先に確認してから計算するのがコツです。

一般項は:(nk)ankbk\binom{n}{k} a^{n-k} b^k

数値計算への応用

(1.01)10(1.01)^{10} を近似計算——「1+0.011 + 0.01」の10乗です。

(1+0.01)10=k=010(10k)(0.01)k(1 + 0.01)^{10} = \sum_{k=0}^{10}\binom{10}{k}(0.01)^k

1+10(0.01)+45(0.0001)+\approx 1 + 10(0.01) + 45(0.0001) + \ldots

1+0.1+0.0045+1.1046\approx 1 + 0.1 + 0.0045 + \ldots \approx 1.1046

高次の項は (0.01)k(0.01)^k が小さいので無視できます——これが「近似計算」の考え方です。


二項係数の重要な性質

対称性:  C(n,k) = C(n, n-k)
全和:    C(n,0) + C(n,1) + ... + C(n,n) = 2ⁿ
交代和:  C(n,0) - C(n,1) + C(n,2) - ... = 0
漸化式:  C(n,k) = C(n-1,k-1) + C(n-1,k)

「全和 =2n= 2^n」は (a+b)n(a+b)^na=b=1a=b=1 を代入すれば証明できます——「各括弧で aabb を選ぶ選択肢は全部で 2n2^n 通り」という組合せ論的な直感とも一致します。

「交代和 =0= 0」は a=1,b=1a=1, b=-1 を代入すれば得られます。


多項定理(二項定理の拡張)

3項以上の場合:

(a+b+c)n=i+j+k=nn!i!j!k!aibjck(a + b + c)^n = \sum_{i+j+k=n} \dfrac{n!}{i!j!k!} a^i b^j c^k

例:(x+y+z)3(x + y + z)^3xyzxyz の係数は 3!1!1!1!=6\dfrac{3!}{1!1!1!} = 6——「x,y,zx, y, z を1つずつ選ぶ順列が6通り」という意味です。

(a+b)^n の展開係数:マウスのX位置でnを変える。各係数を棒グラフで表示
function binom(n, k) {
if (k < 0 || k > n) return 0;
if (k === 0 || k === n) return 1;
var result = 1;
for (var i = 0; i < k; i++) { result = result * (n-i) / (i+1); }
return Math.round(result);
}

var colors = ['#3b82f6','#8b5cf6','#22c55e','#f59e0b','#ef4444','#06b6d4','#ec4899','#84cc16','#f97316'];

function loop() {
ctx.clearRect(0, 0, W, H);

var n = Math.min(8, Math.max(1, Math.round((mx/W)*8)));

ctx.fillStyle = '#94a3b8'; ctx.font='14px monospace'; ctx.textAlign='center';
ctx.fillText('(a + b)^' + n + ' の展開係数', W/2, 24);

var coeffs = [];
var maxC = 0;
for (var k=0; k<=n; k++) {
  var c = binom(n, k);
  coeffs.push(c);
  if (c > maxC) maxC = c;
}

var barAreaW = W - 80, barAreaH = 180;
var barW = barAreaW / (n + 1) - 4;
var ox = 40, oy = 60;

for (var i=0; i<=n; i++) {
  var bh = (coeffs[i] / maxC) * barAreaH;
  var bx = ox + i * (barAreaW/(n+1));
  ctx.fillStyle = colors[i % colors.length];
  ctx.fillRect(bx, oy + barAreaH - bh, barW, bh);
  ctx.fillStyle = '#e2e8f0'; ctx.font = '12px monospace'; ctx.textAlign='center';
  ctx.fillText('C(' + n + ',' + i + ')', bx + barW/2, oy + barAreaH + 16);
  ctx.fillText(coeffs[i], bx + barW/2, oy + barAreaH - bh - 6);
}

ctx.fillStyle = '#fbbf24'; ctx.font='13px monospace'; ctx.textAlign='center';
ctx.fillText('係数の合計 = 2^' + n + ' = ' + Math.pow(2,n), W/2, H-26);
ctx.fillStyle='#64748b'; ctx.font='12px monospace';
ctx.fillText('マウスを左右に動かして n を変える(現在 n = ' + n + ')', W/2, H-10);

requestAnimationFrame(loop);
}
loop();

中間項と最大係数

(a+b)n(a+b)^n の中間の係数が最大になります——「ちょうど真ん中あたりの選び方が最も多い」という組合せ論的な直感です。

  • nn が偶数:k=n/2k = n/2 のとき最大、(nn/2)\binom{n}{n/2}
  • nn が奇数:k=(n±1)/2k = (n \pm 1)/2 の2つが等しく最大

(a+b)8(a+b)^8 なら (84)=70\binom{8}{4} = 70 が最大係数。


まとめ

  • 二項定理(a+b)n=k=0n(nk)ankbk(a+b)^n = \sum_{k=0}^n \binom{n}{k} a^{n-k}b^k——「nn 乗の展開係数は組合せの数」
  • 二項係数 (nk)\binom{n}{k}nn 個から kk 個を選ぶ組合せ数——「選ぶ順番は無視して何通りか」
  • パスカルの三角形:隣接する2数の和が次の数——「前の行から次の行が計算できる」
  • (nk)=(n1k1)+(n1k)\binom{n}{k} = \binom{n-1}{k-1} + \binom{n-1}{k}(パスカルの恒等式)
  • 全係数の和 =2n= 2^n——「各括弧で2択×n回分の全パターン」

次回はシリーズ最終回。多項式の割り算と剰余定理を学び、この14回で学んだすべての代数の技法がどう繋がるかを振り返ります。