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

根号と無理数の計算

根号とは何か

「面積が2の正方形の一辺は?」——x2=2x^2 = 2 を満たす正の数です。これが 2\sqrt{2}(ルート2)です。

a\sqrt{a} は「2乗すると aa になる非負の数」です。

√4 = 2   (2² = 4)
√9 = 3   (3² = 9)
√2 ≈ 1.414...  (有理数で表せない)

2\sqrt{2} のように分数で表せない数を無理数と言います。「1.4142135…」と小数点以下が永遠に続き、どこにも繰り返しのパターンが現れません。ギリシャの数学者が「比を取れない数」として発見し、哲学的な混乱を引き起こしたと言われています。


根号の計算規則

直感的に言えば、「根号の中の掛け算は、根号の外でも掛け算になる」というルールです。

√a × √b = √(ab)          (a ≥ 0, b ≥ 0)
√a / √b = √(a/b)          (a ≥ 0, b > 0)
(√a)² = a                  (a ≥ 0)
√(a²) = |a|               (a は任意)

注意a2=a\sqrt{a^2} = a ではなく a2=a\sqrt{a^2} = |a| です。たとえば a=3a = -3 なら (3)2=9=3=3\sqrt{(-3)^2} = \sqrt{9} = 3 = |-3|。「マイナスを2乗すると必ずプラスになる」ので、答えは必ず 0 以上になります。

計算例

12=4×3=23\sqrt{12} = \sqrt{4 \times 3} = 2\sqrt{3}(「4 を外に出す」発想)

18+8=32+22=52\sqrt{18} + \sqrt{8} = 3\sqrt{2} + 2\sqrt{2} = 5\sqrt{2}2\sqrt{2} の係数を足す)

6×15=90=9×10=310\sqrt{6} \times \sqrt{15} = \sqrt{90} = \sqrt{9 \times 10} = 3\sqrt{10}(掛けてから整理)


幾何学的な√の構成

2\sqrt{2} は一辺が 1 の正方形の対角線の長さです——これがピタゴラスの定理です。

12+12=2\sqrt{1^2 + 1^2} = \sqrt{2}

「長さ 2\sqrt{2} の線分を実際に引ける」——つまり 2\sqrt{2} は「見えない数」ではなく、コンパスと定規で正確に作図できる「実在する長さ」です。同様に 3,5,6,\sqrt{3}, \sqrt{5}, \sqrt{6}, \ldots もコンパスと定規で作図できます。

√2、√3、√5 のピタゴラス的構成:アニメーションで根号の積み重ねを見る
var t = 0;
var cx = 200, cy = 270;
var unit = 70;

function drawArrow(x1, y1, x2, y2, color) {
ctx.strokeStyle = color;
ctx.lineWidth = 2.5;
ctx.beginPath();
ctx.moveTo(x1, y1);
ctx.lineTo(x2, y2);
ctx.stroke();
var angle = Math.atan2(y2 - y1, x2 - x1);
ctx.fillStyle = color;
ctx.beginPath();
ctx.moveTo(x2, y2);
ctx.lineTo(x2 - 8*Math.cos(angle-0.4), y2 - 8*Math.sin(angle-0.4));
ctx.lineTo(x2 - 8*Math.cos(angle+0.4), y2 - 8*Math.sin(angle+0.4));
ctx.closePath();
ctx.fill();
}

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

var prog = (Math.sin(t) + 1) / 2;

ctx.fillStyle = '#94a3b8';
ctx.font = '14px monospace';
ctx.textAlign = 'center';
ctx.fillText('ピタゴラスの定理で √ を構成する', W/2, 22);

// Base unit along x-axis
ctx.strokeStyle = '#64748b';
ctx.lineWidth = 1;
ctx.setLineDash([4, 4]);
ctx.beginPath();
ctx.moveTo(cx, cy - 0*unit);
ctx.lineTo(cx + 3*unit, cy);
ctx.stroke();
ctx.setLineDash([]);

// Step 1: √2 = hyp of (1,1)
var x1 = cx + unit, y1 = cy;
var x2 = cx + unit, y2 = cy - unit;
var xh = cx, yh = cy;
// horizontal leg
drawArrow(xh, yh, x1, y1, '#3b82f6');
ctx.fillStyle = '#93c5fd'; ctx.font = '13px monospace'; ctx.textAlign = 'center';
ctx.fillText('1', (xh+x1)/2, yh + 16);
// vertical leg
drawArrow(x1, y1, x2, y2, '#22c55e');
ctx.fillStyle = '#86efac';
ctx.fillText('1', x2 + 14, (y1+y2)/2);
// hypotenuse √2
ctx.strokeStyle = '#f59e0b';
ctx.lineWidth = 2.5;
ctx.beginPath();
ctx.moveTo(xh, yh);
ctx.lineTo(x2, y2);
ctx.stroke();
ctx.fillStyle = '#fbbf24';
ctx.fillText('√2', (xh+x2)/2 - 14, (yh+y2)/2 - 4);

// Step 2: √3 = hyp of (√2, 1)
var x3 = cx + Math.sqrt(2)*unit, y3 = cy;
var x4 = cx + Math.sqrt(2)*unit, y4 = cy - unit;
drawArrow(x3, y3, x4, y4, '#22c55e');
ctx.fillStyle = '#86efac'; ctx.fillText('1', x4 + 14, (y3+y4)/2);
ctx.strokeStyle = '#8b5cf6'; ctx.lineWidth = 2.5;
ctx.beginPath();
ctx.moveTo(xh, yh);
ctx.lineTo(x4, y4);
ctx.stroke();
ctx.fillStyle = '#c4b5fd';
ctx.fillText('√3', (xh+x4)/2 - 14, (yh+y4)/2 + 2);

// Step 3: √5 = hyp of (2, 1)
var x5 = cx + 2*unit, y5 = cy;
var x6 = cx + 2*unit, y6 = cy - unit;
drawArrow(x5, y5, x6, y6, '#22c55e');
ctx.fillStyle = '#86efac'; ctx.fillText('1', x6 + 14, (y5+y6)/2);
ctx.strokeStyle = '#ef4444'; ctx.lineWidth = 2.5;
ctx.beginPath();
ctx.moveTo(xh, yh);
ctx.lineTo(x6, y6);
ctx.stroke();
ctx.fillStyle = '#fca5a5';
ctx.fillText('√5', (xh+x6)/2 - 14, (yh+y6)/2 + 10);

// origin dot
ctx.fillStyle = '#fff';
ctx.beginPath();
ctx.arc(xh, yh, 4, 0, Math.PI*2);
ctx.fill();

// legend
ctx.fillStyle = '#fbbf24'; ctx.font = 'bold 13px monospace'; ctx.textAlign = 'left';
ctx.fillText('√2 ≈ 1.414', 380, 100);
ctx.fillStyle = '#c4b5fd';
ctx.fillText('√3 ≈ 1.732', 380, 122);
ctx.fillStyle = '#fca5a5';
ctx.fillText('√5 ≈ 2.236', 380, 144);

requestAnimationFrame(loop);
}
loop();

分母の有理化

12\dfrac{1}{\sqrt{2}} のように分母に根号がある場合、計算の都合上「分母を整数にしたい」ことがあります。これを有理化と言います。

「なぜ有理化するの?」——手計算のときに 22\dfrac{\sqrt{2}}{2} の方が 12\dfrac{1}{\sqrt{2}} より扱いやすいからです。また、いくつかの答えが「同じかどうか」を比べるときにも揃えた形の方が便利です。

単純な根号

1/√2 = 1/√2 × √2/√2 = √2/2

上下に同じ 2\sqrt{2} を掛ける——「1をかけても値は変わらない、ただし 22=1\dfrac{\sqrt{2}}{\sqrt{2}} = 1 という形で」。

二項の場合(共役を使う)

1/(√3 + 1) = 1/(√3+1) × (√3-1)/(√3-1)
            = (√3-1) / (3-1)
            = (√3-1) / 2

分母 (a+b)(ab)=a2b2(a + b)(a - b) = a^2 - b^2 になって根号が消えます——これが共役(conjugate)の活用です。「符号だけ変えた式をかけると、二乗になって根号が消える」という発想です。

元の式有理化の乗数有理化後
15\dfrac{1}{\sqrt{5}}55\dfrac{\sqrt{5}}{\sqrt{5}}55\dfrac{\sqrt{5}}{5}
231\dfrac{2}{\sqrt{3}-1}3+13+1\dfrac{\sqrt{3}+1}{\sqrt{3}+1}2(3+1)2=3+1\dfrac{2(\sqrt{3}+1)}{2} = \sqrt{3}+1
2+121\dfrac{\sqrt{2}+1}{\sqrt{2}-1}2+12+1\dfrac{\sqrt{2}+1}{\sqrt{2}+1}(2+1)21=3+22\dfrac{(\sqrt{2}+1)^2}{1} = 3+2\sqrt{2}

二重根号の外し方

a+b+2ab=a+b\sqrt{a + b + 2\sqrt{ab}} = \sqrt{a} + \sqrt{b} が成り立ちます(a,b>0a, b > 0)。

なぜかと言うと、(a+b)2=a+2ab+b(\sqrt{a} + \sqrt{b})^2 = a + 2\sqrt{ab} + b なので、「この展開式の \sqrt{} を取る」とちょうど元の式になります。

例:5+26\sqrt{5 + 2\sqrt{6}}

5=2+35 = 2 + 326=2232\sqrt{6} = 2\sqrt{2 \cdot 3} なので a=3,b=2a = 3, b = 2

√(5 + 2√6) = √(3 + 2√(3·2) + 2) = √3 + √2

例:8215\sqrt{8 - 2\sqrt{15}}

8=5+38 = 5 + 3215=2532\sqrt{15} = 2\sqrt{5 \cdot 3} なので a=5,b=3a = 5, b = 3

√(8 - 2√15) = √5 - √3   (√5 > √3 なので正)
有理化のデモ:1/(√x+1) の分母の根号を消す過程をアニメーション表示
var xVal, step, timer;
step = 0;
timer = 0;

function loop() {
ctx.clearRect(0, 0, W, H);
timer++;
if (timer > 90) { timer = 0; step = (step + 1) % 4; }

xVal = Math.max(1, Math.min(9, (mx / W) * 9));
var sqrtX = Math.sqrt(xVal);

var lines = [
  '元の式:  1 / (√' + xVal.toFixed(1) + ' + 1)',
  '共役乗算:× (√' + xVal.toFixed(1) + ' - 1) / (√' + xVal.toFixed(1) + ' - 1)',
  '展開後:  (√' + xVal.toFixed(1) + ' - 1) / (' + xVal.toFixed(1) + ' - 1)',
  '結果:    (√' + xVal.toFixed(1) + ' - 1) / ' + (xVal - 1).toFixed(1) + '  ≈  ' + ((sqrtX - 1)/(xVal - 1)).toFixed(4)
];
var colors = ['#93c5fd', '#fbbf24', '#86efac', '#c4b5fd'];

ctx.fillStyle = '#94a3b8';
ctx.font = '14px monospace';
ctx.textAlign = 'center';
ctx.fillText('有理化ステップ(マウスで x を変える)', W/2, 28);
ctx.fillText('x = ' + xVal.toFixed(2) + '  √x ≈ ' + sqrtX.toFixed(4), W/2, 50);

for (var i = 0; i <= step; i++) {
  ctx.fillStyle = colors[i];
  ctx.font = (i === step ? 'bold ' : '') + '15px monospace';
  ctx.textAlign = 'left';
  ctx.fillText(lines[i], 40, 90 + i * 44);
  if (i < step) {
    ctx.strokeStyle = colors[i];
    ctx.lineWidth = 0.5;
    ctx.globalAlpha = 0.3;
    ctx.beginPath();
    ctx.moveTo(40, 98 + i * 44);
    ctx.lineTo(560, 98 + i * 44);
    ctx.stroke();
    ctx.globalAlpha = 1;
  }
}

var orig = 1 / (sqrtX + 1);
var rationalized = (sqrtX - 1) / (xVal - 1);
ctx.fillStyle = Math.abs(orig - rationalized) < 0.0001 ? '#22c55e' : '#ef4444';
ctx.font = '13px monospace';
ctx.textAlign = 'center';
ctx.fillText('元の値 ' + orig.toFixed(4) + '  有理化後 ' + rationalized.toFixed(4) + (Math.abs(orig-rationalized)<0.0001?'  ✓':''), W/2, 268);

requestAnimationFrame(loop);
}
loop();

根号の四則演算まとめ

加法:  √a + √b  は (a = b のときのみ) 2√a に合体できる
        √2 + √3 は合体できない(√5 ≠ √2+√3)

乗法:  √a × √b = √(ab)
        √2 × √8 = √16 = 4

除法:  √a / √b = √(a/b)
        √18 / √2 = √9 = 3

有理化:分母に根号 → 分子・分母に共役を掛ける

まとめ

  • a2=a\sqrt{a^2} = |a|(符号に注意——マイナスの数を2乗してから√を取ると必ずプラスになる)
  • a×b=ab\sqrt{a} \times \sqrt{b} = \sqrt{ab}(積の根号——根号の中で掛けても、外で掛けても同じ)
  • 有理化は分母を整数にするための操作。共役 (ab)(a-b) との積 (a+b)(ab)=a2b2(a+b)(a-b) = a^2-b^2 を利用
  • 二重根号 a+2bc=b+c\sqrt{a + 2\sqrt{bc}} = \sqrt{b} + \sqrt{c}a=b+ca = b + c のとき)

次回はいよいよ複素数へ。1\sqrt{-1} という「実在しない」数を導入することで、代数の世界が大きく広がります。