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

式の展開と整理

式の展開とは何か

たとえば、長さ (x+2)(x+2) メートルと長さ (x+3)(x+3) メートルの2辺を持つ長方形の面積を求めたいとしましょう。面積は縦×横なので (x+2)(x+3)(x+2)(x+3) ですが、これを「バラして計算した結果」にするのが展開です。答えは x2+5x+6x^2 + 5x + 6 になります。

「展開」とは、括弧を外して式をすっきりとした形に書き直す操作です。ただ公式を暗記するのではなく、なぜそうなるのかを面積モデルで理解すると、ずっと定着しやすくなります。


FOIL法:2つの2項式の積

想像してみてください——(a+b)(c+d)(a + b)(c + d) は「2つの和の掛け算」です。左の括弧の中の aabb も、右の括弧の中の ccdd のそれぞれと掛け合わさります。これを漏れなく計算するための覚え方がFOIL法です。

頭文字意味
F (First)各括弧の最初の項どうしacac
O (Outer)外側の項どうしadad
I (Inner)内側の項どうしbcbc
L (Last)各括弧の最後の項どうしbdbd
(a + b)(c + d) = ac + ad + bc + bd

例:(x+3)(x+5)=x2+5x+3x+15=x2+8x+15(x + 3)(x + 5) = x^2 + 5x + 3x + 15 = x^2 + 8x + 15

「左の xx を右の xx と掛けて → 右の5と掛けて → 左の3を右の xx と掛けて → 右の5と掛ける」という順番で、全部で4回の掛け算をしているだけです。


重要な展開公式

高校数学で繰り返し登場する公式を整理します。

和の平方 (a+b)2(a+b)^2

aabb の和」を2乗するとどうなる? という問いです。(a+b)2(a+b)^2(a+b)×(a+b)(a+b) \times (a+b) を展開したものです。

(a + b)² = a² + 2ab + b²

ポイントは中央の「2ab2ab」が生まれること。aabb の掛け算が2回分(FOILのOとI)登場するためです。

(x+4)2=x2+8x+16(x + 4)^2 = x^2 + 8x + 16

差の平方 (ab)2(a-b)^2

「引き算バージョン」では、中央の符号が変わります。2ab2ab2ab-2ab になる点だけが違います。

(a - b)² = a² - 2ab + b²

(x3)2=x26x+9(x - 3)^2 = x^2 - 6x + 9

和と差の積(差の平方)

「足した数」と「引いた数」を掛け合わせると、中間の項が消えてしまう、とても便利な公式です。

(a + b)(a - b) = a² - b²

たとえば 53×4753 \times 47 は暗算しにくいですが、(50+3)(503)=50232=25009=2491(50+3)(50-3) = 50^2 - 3^2 = 2500 - 9 = 2491 とすると楽に計算できます。

(x+5)(x5)=x225(x + 5)(x - 5) = x^2 - 25

和の立方 (a+b)3(a+b)^3

2乗版をさらに (a+b)(a+b) 倍した結果です。

(a + b)³ = a³ + 3a²b + 3ab² + b³

係数 1,3,3,11, 3, 3, 1 はパスカルの三角形の第3行と一致します(第14回で詳しく扱います)。


面積モデルで (a+b)2(a+b)^2 を「見る」

(a+b)2(a+b)^2a2+2ab+b2a^2 + 2ab + b^2 になる理由を面積で考えてみましょう。1辺の長さが (a+b)(a+b) の正方形を描きます。この正方形を aabb で分割すると…

  • 左上:a×a=a2a \times a = a^2(青)
  • 右上:a×b=aba \times b = ab(緑)
  • 左下:b×a=abb \times a = ab(緑)
  • 右下:b×b=b2b \times b = b^2(赤)

合計:a2+2ab+b2a^2 + 2ab + b^2 — これが (a+b)2(a+b)^2 の正体です。

「2つの緑色の部分(abab が2個)がなぜ生まれるのか」が面積を見ると一目でわかります。下のデモで aa の値(マウスのX座標)を変えながら、面積の変化を確認してください。

(a+b)² の面積モデル:マウスを左右に動かしてaの値を変えよう
var a, b, total, scale, ox, oy;

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

total = 6;
a = Math.max(0.5, Math.min(5.5, (mx / W) * total));
b = total - a;
scale = 220 / total;
ox = 40;
oy = 40;

// a² rectangle (top-left)
ctx.fillStyle = '#3b82f6';
ctx.fillRect(ox, oy, a * scale, a * scale);

// ab rectangle (top-right)
ctx.fillStyle = '#22c55e';
ctx.fillRect(ox + a * scale, oy, b * scale, a * scale);

// ab rectangle (bottom-left)
ctx.fillStyle = '#22c55e';
ctx.fillRect(ox, oy + a * scale, a * scale, b * scale);

// b² rectangle (bottom-right)
ctx.fillStyle = '#ef4444';
ctx.fillRect(ox + a * scale, oy + a * scale, b * scale, b * scale);

// labels inside
ctx.fillStyle = '#fff';
ctx.font = 'bold 15px monospace';
ctx.textAlign = 'center';
ctx.fillText('a²', ox + a * scale / 2, oy + a * scale / 2 + 6);
ctx.fillText('ab', ox + a * scale + b * scale / 2, oy + a * scale / 2 + 6);
ctx.fillText('ab', ox + a * scale / 2, oy + a * scale + b * scale / 2 + 6);
ctx.fillText('b²', ox + a * scale + b * scale / 2, oy + a * scale + b * scale / 2 + 6);

// border
ctx.strokeStyle = '#ffffff44';
ctx.lineWidth = 1;
ctx.strokeRect(ox, oy, total * scale, total * scale);
ctx.strokeRect(ox, oy, a * scale, a * scale);
ctx.strokeRect(ox + a * scale, oy, b * scale, a * scale);
ctx.strokeRect(ox, oy + a * scale, a * scale, b * scale);

// equation display
ctx.fillStyle = '#e2e8f0';
ctx.font = '14px monospace';
ctx.textAlign = 'left';
var av = a.toFixed(1), bv = b.toFixed(1);
var a2 = (a*a).toFixed(1), ab2 = (2*a*b).toFixed(1), b2 = (b*b).toFixed(1);
var tot = ((a+b)*(a+b)).toFixed(1);
ctx.fillText('a = ' + av + ',  b = ' + bv, ox, 290);
ctx.fillText('(' + av + ' + ' + bv + ')² = ' + a2 + ' + ' + ab2 + ' + ' + b2 + ' = ' + tot, ox, 308);

requestAnimationFrame(loop);
}
loop();

展開の実践:計算例

例題1

(2x+3)2(2x + 3)^2 を展開せよ。

まず「aa2x2xbb33」と対応させます。和の平方の公式 a2+2ab+b2a^2 + 2ab + b^2 に当てはめると:

a=2x, b=3a = 2x,\ b = 3 として公式を適用:

(2x + 3)² = (2x)² + 2·(2x)·3 + 3²
           = 4x² + 12x + 9

例題2

(x+1)3(x + 1)^3 を展開せよ。

a=x, b=1a = x,\ b = 1 として和の立方の公式を使います:

(x + 1)³ = x³ + 3x²·1 + 3x·1² + 1³
          = x³ + 3x² + 3x + 1

例題3

(3x2y)(3x+2y)(3x - 2y)(3x + 2y) を展開せよ。

「足した数 × 引いた数 = 差の平方」の形です。a=3x, b=2ya = 3x,\ b = 2y として:

a=3x, b=2ya = 3x,\ b = 2y として差の平方:

(3x - 2y)(3x + 2y) = (3x)² - (2y)²
                   = 9x² - 4y²

係数比較と整理

展開した後は「同類項をまとめる」作業が必要です。x2x^2 の項はまとめて、xx の項はまとめて、と整理していきます。

(x+2)(x2x+3)(x + 2)(x^2 - x + 3) を展開して整理:

= x·x² + x·(-x) + x·3 + 2·x² + 2·(-x) + 2·3
= x³ - x² + 3x + 2x² - 2x + 6
= x³ + x² + x + 6

x2x^2 の項:x2+2x2=x2-x^2 + 2x^2 = x^2xx の項:3x2x=x3x - 2x = x とまとめています。


インタラクティブ確認:展開式の検証

マウスのX座標で aa の値を変えながら、(a+b)3=a3+3a2b+3ab2+b3(a+b)^3 = a^3 + 3a^2b + 3ab^2 + b^3 が常に成り立つことを棒グラフで確認しましょう。4つの棒の合計が常に (a+b)3(a+b)^3 と一致しているのがわかります。

(a+b)³ の各項の大きさ:マウスを動かしてaを変えよう(a+b=5で固定)
var a, b, total;

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

total = 5;
a = Math.max(0.3, Math.min(4.7, (mx / W) * total));
b = total - a;

var terms = [
  { label: 'a³', val: a*a*a, color: '#3b82f6' },
  { label: '3a²b', val: 3*a*a*b, color: '#8b5cf6' },
  { label: '3ab²', val: 3*a*b*b, color: '#22c55e' },
  { label: 'b³', val: b*b*b, color: '#ef4444' }
];
var maxVal = Math.pow(total, 3);
var barW = 80;
var gap = (W - 4 * barW) / 5;
var maxH = 180;

ctx.fillStyle = '#94a3b8';
ctx.font = '13px sans-serif';
ctx.textAlign = 'center';
ctx.fillText('a = ' + a.toFixed(2) + ',  b = ' + b.toFixed(2) + ',  (a+b)³ = ' + Math.pow(total,3).toFixed(1), W/2, 22);

for (var i = 0; i < terms.length; i++) {
  var x = gap + i * (barW + gap);
  var h = (terms[i].val / maxVal) * maxH;
  var y = 220 - h;
  ctx.fillStyle = terms[i].color;
  ctx.fillRect(x, y, barW, h);
  ctx.fillStyle = '#e2e8f0';
  ctx.font = 'bold 13px monospace';
  ctx.fillText(terms[i].label, x + barW / 2, y - 6);
  ctx.fillText(terms[i].val.toFixed(1), x + barW / 2, 238);
}

var sum = terms.reduce(function(s, t) { return s + t.val; }, 0);
ctx.fillStyle = '#fbbf24';
ctx.font = '13px monospace';
ctx.fillText('合計 = ' + sum.toFixed(2) + '  (a+b)³ = ' + Math.pow(total,3).toFixed(2), W/2, 262);

requestAnimationFrame(loop);
}
loop();

まとめ

  • 展開とは括弧を外して多項式の標準形にする操作。「掛け算を全部バラす」作業です
  • (a+b)2=a2+2ab+b2(a+b)^2 = a^2 + 2ab + b^2面積モデルで直感的に理解できます——正方形を4つに切り分けた面積の合計です
  • (ab)2=a22ab+b2(a-b)^2 = a^2 - 2ab + b^2(a+b)(ab)=a2b2(a+b)(a-b) = a^2 - b^2 は頻出公式。特に (a+b)(ab)(a+b)(a-b) は暗算にも使えます
  • (a+b)3=a3+3a2b+3ab2+b3(a+b)^3 = a^3 + 3a^2b + 3ab^2 + b^3 の係数はパスカルの三角形と対応
  • 展開後は必ず同類項をまとめる(同じ x2x^2 の項同士、xx の項同士をまとめる)

展開の逆操作、つまり「まとまった式を積の形に戻す」のが因数分解です。次回はその基本を学びます。