二項定理
二項定理
、——これを手で展開するのは面倒ですよね。 が大きくなるほど大変です。
二項定理は「 を展開したとき、各項の係数がどうなるか」を一発で答える公式です。
を展開したとき、各項の係数を二項係数と言います。
ここで です。
| 展開 | |
|---|---|
| 0 | |
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 |
二項係数の意味
は「 個の中から 個を選ぶ組み合わせの数」です。
なぜ組み合わせの数が展開の係数になるのか?——想像してみてください。
を展開するとき、 個の括弧から 個の括弧で を選び、残りで を選ぶと が生まれます。その選び方の数が です。
(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
構築規則:各数 = 真上の左右の数の和
これは「 個目の要素を選ぶか選ばないか」の2択からくる恒等式です(パスカルの恒等式)——「前の行の情報だけで次の行が計算できる」という美しい再帰構造です。
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(); 二項定理の使い方
特定の項を求める
の の項を求める。
のとき():
「何番目の のとき になるか」を先に確認してから計算するのがコツです。
一般項は:
数値計算への応用
を近似計算——「」の10乗です。
高次の項は が小さいので無視できます——これが「近似計算」の考え方です。
二項係数の重要な性質
対称性: 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)
「全和 」は に を代入すれば証明できます——「各括弧で か を選ぶ選択肢は全部で 通り」という組合せ論的な直感とも一致します。
「交代和 」は を代入すれば得られます。
多項定理(二項定理の拡張)
3項以上の場合:
例: の の係数は ——「 を1つずつ選ぶ順列が6通り」という意味です。
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(); 中間項と最大係数
の中間の係数が最大になります——「ちょうど真ん中あたりの選び方が最も多い」という組合せ論的な直感です。
- が偶数: のとき最大、
- が奇数: の2つが等しく最大
なら が最大係数。
まとめ
- 二項定理:——「 乗の展開係数は組合せの数」
- 二項係数 は 個から 個を選ぶ組合せ数——「選ぶ順番は無視して何通りか」
- パスカルの三角形:隣接する2数の和が次の数——「前の行から次の行が計算できる」
- (パスカルの恒等式)
- 全係数の和 ——「各括弧で2択×n回分の全パターン」
次回はシリーズ最終回。多項式の割り算と剰余定理を学び、この14回で学んだすべての代数の技法がどう繋がるかを振り返ります。