因数分解の応用
より複雑な因数分解へ
たとえば、 という式を見たとき、一見バラバラに見えますが「がかかった部分」と「がかかった部分」に分ければスッキリとまとめられます。これがグループ分けの発想です。
前回は基本的な因数分解を学びました。今回は4項以上の式のグループ分け、3乗の和・差、そして置き換えという3つのテクニックを掘り下げます。これらをマスターすれば、高校数学で登場するほぼすべての因数分解に対応できます。
テクニック1:グループ分け法
4項の多項式を2グループに分けて共通因数を取り出す方法です。「どこで2つに分ければ、それぞれに共通するものが出るか?」を考えます。
例:
= a(x + y) + b(x + y)
= (a + b)(x + y)
最初の2項には が共通、次の2項には が共通。そしてどちらにも が現れる——これがグループ分けのねらいです。
例:
= x²(x - 1) + 1(x - 1)
= (x² + 1)(x - 1)
ポイント:どこで分けるかが腕の見せどころ。グループ分けの組み合わせを試しながら、共通因数が現れる分け方を探します。
| 式 | グループ化 | 結果 |
|---|---|---|
テクニック2:3乗の和・差
たとえば は「 の3乗から の3乗を引いた式」ですが、これが というきれいな積に分解できます。
a³ + b³ = (a + b)(a² - ab + b²)
a³ - b³ = (a - b)(a² + ab + b²)
展開して確認してみましょう:
✓
中間の項が相殺して、きれいに だけ残ります。
例:
、 と気づくのがカギです。「何かの3乗」の形に気づければ公式を使えます。
8x³ - 27 = (2x)³ - 3³
= (2x - 3)((2x)² + (2x)(3) + 3²)
= (2x - 3)(4x² + 6x + 9)
例:
なので:
x³ + 64 = x³ + 4³
= (x + 4)(x² - 4x + 16)
var a, b, total;
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;
var lhs = a*a*a - b*b*b;
var rhs = (a - b) * (a*a + a*b + b*b);
ctx.fillStyle = '#94a3b8';
ctx.font = '15px monospace';
ctx.textAlign = 'center';
ctx.fillText('a³ - b³ と (a-b)(a²+ab+b²) が等しいことを確認', W/2, 28);
ctx.fillStyle = '#3b82f6';
ctx.font = 'bold 32px monospace';
ctx.textAlign = 'center';
ctx.fillText('a³ - b³ = ' + lhs.toFixed(3), W/2, 90);
ctx.fillStyle = '#22c55e';
ctx.fillText('(a-b)(a²+ab+b²) = ' + rhs.toFixed(3), W/2, 140);
var match = Math.abs(lhs - rhs) < 0.001;
ctx.fillStyle = match ? '#fbbf24' : '#ef4444';
ctx.font = '18px monospace';
ctx.fillText(match ? '✓ 両辺が一致!' : '不一致(バグ)', W/2, 185);
ctx.fillStyle = '#64748b';
ctx.font = '14px monospace';
ctx.fillText('a = ' + a.toFixed(2) + ', b = ' + b.toFixed(2), W/2, 220);
ctx.fillText('a + b = ' + total.toFixed(1) + ' (固定)', W/2, 242);
requestAnimationFrame(loop);
}
loop(); テクニック3:置き換え(代入)
複雑に見える式でも、一部をひとつの文字に置き換えると基本形になることがあります。「難しそうな式も、よく見ると と同じ形だ!」と気づくための技術です。
例:
と置くと:
t² - 8t + 12 = (t - 2)(t - 6)
を戻して:
= (x² + x - 2)(x² + x - 6)
= (x + 2)(x - 1) · (x + 3)(x - 2)
「 を1つのかたまり として見る」——これが置き換えの発想です。
例:
と置くと:
t² - 5t + 4 = (t - 1)(t - 4)
= (x² - 1)(x² - 4)
= (x+1)(x-1)(x+2)(x-2)
| 置き換え | 元の式 | 変換後 |
|---|---|---|
因数分解の完全な手順
どんな式が来ても、次の順序で考えれば対処できます:
① 共通因数を取り出す
② 項数を確認
2項 → 差の平方 / 3乗の和・差
3項 → 完全平方 / たすき掛け
4項以上 → グループ分け法
③ 置き換えで単純化できないか確認
④ さらに因数分解できないか確認(繰り返し)
因数分解ツリーの可視化
を段階的に因数分解する様子をアニメーションで見てみましょう。木(ツリー)のように枝分かれしながら、最終的に「これ以上分解できない」ところまで分解していきます。
var step = 0;
var timer = 0;
var maxStep = 4;
function drawBox(text, x, y, color, alpha) {
ctx.globalAlpha = alpha || 1;
ctx.fillStyle = color || '#1e3a5f';
ctx.fillRect(x - 80, y - 18, 160, 32);
ctx.strokeStyle = '#3b82f6';
ctx.lineWidth = 1.5;
ctx.strokeRect(x - 80, y - 18, 160, 32);
ctx.fillStyle = '#e2e8f0';
ctx.font = 'bold 13px monospace';
ctx.textAlign = 'center';
ctx.fillText(text, x, y + 7);
ctx.globalAlpha = 1;
}
function drawArrow(x1, y1, x2, y2) {
ctx.strokeStyle = '#64748b';
ctx.lineWidth = 1.5;
ctx.beginPath();
ctx.moveTo(x1, y1);
ctx.lineTo(x2, y2);
ctx.stroke();
}
function loop() {
ctx.clearRect(0, 0, W, H);
timer++;
if (timer > 80) { timer = 0; step = (step + 1) % (maxStep + 1); }
ctx.fillStyle = '#94a3b8';
ctx.font = '14px monospace';
ctx.textAlign = 'center';
ctx.fillText('x⁴ - 16 の因数分解ツリー', W/2, 22);
drawBox('x⁴ - 16', W/2, 55, '#1e3a5f');
if (step >= 1) {
drawArrow(W/2 - 40, 73, W/2 - 100, 120);
drawArrow(W/2 + 40, 73, W/2 + 100, 120);
drawBox('(x² + 4)', W/2 - 100, 138, '#1e293b');
drawBox('(x² - 4)', W/2 + 100, 138, '#1e3a5f');
ctx.fillStyle = '#fbbf24';
ctx.font = '12px monospace';
ctx.fillText('差の平方: a²-b²=(a+b)(a-b)', W/2, 100);
}
if (step >= 2) {
ctx.fillStyle = '#64748b';
ctx.font = '12px monospace';
ctx.fillText('既約(これ以上分解不可)', W/2 - 100, 175);
}
if (step >= 3) {
drawArrow(W/2 + 60, 156, W/2 + 10, 205);
drawArrow(W/2 + 140, 156, W/2 + 190, 205);
drawBox('(x + 2)', W/2 + 10, 223, '#166534');
drawBox('(x - 2)', W/2 + 190, 223, '#166534');
ctx.fillStyle = '#fbbf24';
ctx.font = '12px monospace';
ctx.fillText('再び差の平方', W/2 + 100, 188);
}
if (step >= 4) {
ctx.fillStyle = '#22c55e';
ctx.font = 'bold 14px monospace';
ctx.textAlign = 'center';
ctx.fillText('完全因数分解:(x²+4)(x+2)(x-2)', W/2, 275);
}
requestAnimationFrame(loop);
}
loop(); 応用例:対称式の因数分解
のような対称式は、特定のパターンを覚えておくと便利です。
a² + b² + c² + ab + bc + ca
= ½[(a+b)² + (b+c)² + (c+a)²] ← 常に ≥ 0
また、 は有名な因数分解です:
a³ + b³ + c³ - 3abc = (a + b + c)(a² + b² + c² - ab - bc - ca)
まとめ
- グループ分け:4項以上のときに2グループに分けて共通因数を探す。「どこで分けると共通するものが出るか?」が腕の見せどころ
- 3乗の和・差:。「何かの3乗」に気づくことが第一歩
- 置き換え:複雑な部分を に置き換えて基本形に帰着させる。「よく見ると知っている形だ」と気づくための発想転換
- 因数分解は「まず共通因数 → 項数に応じた公式 → 繰り返し確認」の順で進める
次回は有理式(分数式)の計算を学びます。因数分解のスキルが通分・約分で大活躍します。