#07 ふれてみよう高校数学 関数

倍角・半角公式

倍角公式

sin60°\sin 60° は知っている。じゃあ sin120°\sin 120°は? それは sin(2×60°)\sin(2 \times 60°)——つまりsin\sinの中の角度を2倍にしたらどうなる?」

前回の加法定理で α=β=θ\alpha = \beta = \theta とおくだけで、倍角公式が得られます——「加法定理を自分自身に適用する」だけです。

sin2θ\sin 2\theta

sin2θ=sin(θ+θ)=sinθcosθ+cosθsinθ\sin 2\theta = \sin(\theta + \theta) = \sin\theta\cos\theta + \cos\theta\sin\theta sin2θ=2sinθcosθ\boxed{\sin 2\theta = 2\sin\theta\cos\theta}

「sinとcosを掛けて2倍」——sin60°=32\sin 60° = \frac{\sqrt{3}}{2}cos60°=12\cos 60° = \frac{1}{2} なら sin120°=23212=32\sin 120° = 2 \cdot \frac{\sqrt{3}}{2} \cdot \frac{1}{2} = \frac{\sqrt{3}}{2}(単位円で確認できます)。

cos2θ\cos 2\theta

cos2θ=cos(θ+θ)=cos2θsin2θ\cos 2\theta = \cos(\theta + \theta) = \cos^2\theta - \sin^2\theta

sin2θ+cos2θ=1\sin^2\theta + \cos^2\theta = 1 を利用して3通りに書けます——「どれを使うかは問題によって選ぶ」という便利な変換です:

cos2θ=cos2θsin2θ=2cos2θ1=12sin2θ\boxed{ \cos 2\theta = \cos^2\theta - \sin^2\theta = 2\cos^2\theta - 1 = 1 - 2\sin^2\theta }

tan2θ\tan 2\theta

tan2θ=2tanθ1tan2θ\boxed{\tan 2\theta = \frac{2\tan\theta}{1 - \tan^2\theta}}

半角公式

倍角公式を「逆方向」に使います——「cos2θ\cos 2\theta の式を sin2θ\sin^2\theta について解く」という発想です。

cos2θ\cos 2\theta の3つの表現から cos2θ\cos^2\thetasin2θ\sin^2\theta を解くと:

cos2θ=1+cos2θ2\cos^2\theta = \frac{1 + \cos 2\theta}{2} sin2θ=1cos2θ2\sin^2\theta = \frac{1 - \cos 2\theta}{2}

θ\thetaθ2\dfrac{\theta}{2} に置き換えると半角公式になります——「半分の角度でもcos一つで計算できる」という公式です:

cos2θ2=1+cosθ2sin2θ2=1cosθ2\boxed{\cos^2\frac{\theta}{2} = \frac{1 + \cos\theta}{2}} \qquad \boxed{\sin^2\frac{\theta}{2} = \frac{1 - \cos\theta}{2}} tan2θ2=1cosθ1+cosθ\tan^2\frac{\theta}{2} = \frac{1 - \cos\theta}{1 + \cos\theta}

「cos θ\theta の値だけ知っていれば、半分の角度のsinとcosの2乗がわかる」——これが半角公式の便利さです。


インタラクティブデモ:sin θ と sin 2θ の比較

青が y=sinxy = \sin x、オレンジが y=sin2xy = \sin 2x です。sin2x\sin 2x の周期が sinx\sin x半分(周波数が2倍)であることを確認してください。マウスを左右に動かすと、対応する θ\theta での2つの値が表示されます——右下の情報パネルで「2sinθcosθ2\sin\theta\cos\theta」が sin2θ\sin 2\theta に一致しているのも確かめられます。

青: y=sin(x) オレンジ: y=sin(2x) 周期の違いに注目
function loop() {
ctx.clearRect(0, 0, W, H);

var ox = W / 2, oy = H / 2 + 10;
var scaleX = 50, scaleY = 80;
var theta = (mx / W) * Math.PI * 4 - Math.PI * 2;

function toScreen(x, y) {
  return { sx: ox + x * scaleX, sy: oy - y * scaleY };
}

// Grid
ctx.strokeStyle = 'rgba(255,255,255,0.06)';
ctx.lineWidth = 1;
for (var gi = -4; gi <= 4; gi++) {
  var gs = toScreen(gi * Math.PI, 0);
  ctx.beginPath(); ctx.moveTo(gs.sx, 0); ctx.lineTo(gs.sx, H); ctx.stroke();
}
for (var gy = -1; gy <= 1; gy++) {
  var gs2 = toScreen(0, gy);
  ctx.beginPath(); ctx.moveTo(0, gs2.sy); ctx.lineTo(W, gs2.sy); ctx.stroke();
}

// Axes
ctx.strokeStyle = 'rgba(255,255,255,0.3)';
ctx.lineWidth = 1.5;
ctx.beginPath(); ctx.moveTo(0, oy); ctx.lineTo(W, oy); ctx.stroke();
ctx.beginPath(); ctx.moveTo(ox, 0); ctx.lineTo(ox, H); ctx.stroke();

// Pi labels
ctx.fillStyle = 'rgba(255,255,255,0.4)';
ctx.font = '12px sans-serif';
var piLbls = [[-2,'-2π'],[-1,'-π'],[1,'π'],[2,'2π']];
for (var li = 0; li < piLbls.length; li++) {
  var ls = toScreen(piLbls[li][0] * Math.PI, 0);
  ctx.fillText(piLbls[li][1], ls.sx - 8, oy + 16);
}
ctx.fillText('1', ox + 4, toScreen(0,1).sy - 2);
ctx.fillText('-1', ox + 4, toScreen(0,-1).sy + 12);

// sin(x) - blue
ctx.strokeStyle = '#4fc3f7';
ctx.lineWidth = 2.5;
ctx.beginPath();
var range = W / (2 * scaleX);
for (var xi = -range; xi <= range; xi += 0.03) {
  var s = toScreen(xi, Math.sin(xi));
  if (xi === -range) ctx.moveTo(s.sx, s.sy); else ctx.lineTo(s.sx, s.sy);
}
ctx.stroke();

// sin(2x) - orange
ctx.strokeStyle = '#ff8a65';
ctx.lineWidth = 2.5;
ctx.beginPath();
for (var xi2 = -range; xi2 <= range; xi2 += 0.03) {
  var s2 = toScreen(xi2, Math.sin(2 * xi2));
  if (xi2 === -range) ctx.moveTo(s2.sx, s2.sy); else ctx.lineTo(s2.sx, s2.sy);
}
ctx.stroke();

// Vertical line at theta
var sTheta = toScreen(theta, 0);
ctx.strokeStyle = 'rgba(255,235,59,0.5)';
ctx.lineWidth = 1;
ctx.setLineDash([4,3]);
ctx.beginPath(); ctx.moveTo(sTheta.sx, 0); ctx.lineTo(sTheta.sx, H); ctx.stroke();
ctx.setLineDash([]);

// Points at theta
var sinV = Math.sin(theta);
var sin2V = Math.sin(2 * theta);
var sPt1 = toScreen(theta, sinV);
var sPt2 = toScreen(theta, sin2V);
ctx.fillStyle = '#4fc3f7';
ctx.beginPath(); ctx.arc(sPt1.sx, sPt1.sy, 6, 0, Math.PI * 2); ctx.fill();
ctx.fillStyle = '#ff8a65';
ctx.beginPath(); ctx.arc(sPt2.sx, sPt2.sy, 6, 0, Math.PI * 2); ctx.fill();

// Info panel
var deg = (theta * 180 / Math.PI).toFixed(1);
ctx.fillStyle = 'rgba(0,0,0,0.65)';
ctx.beginPath(); ctx.roundRect(10, 10, 230, 80, 8); ctx.fill();
ctx.fillStyle = '#ffeb3b';
ctx.font = 'bold 13px monospace';
ctx.fillText('θ = ' + deg + '°', 18, 32);
ctx.fillStyle = '#4fc3f7';
ctx.font = '13px monospace';
ctx.fillText('sin θ  = ' + sinV.toFixed(3), 18, 54);
ctx.fillStyle = '#ff8a65';
ctx.fillText('sin 2θ = ' + sin2V.toFixed(3), 18, 74);

// Verify 2sinθcosθ
var verify = (2 * sinV * Math.cos(theta)).toFixed(3);
ctx.fillStyle = 'rgba(255,255,255,0.5)';
ctx.font = '11px sans-serif';
ctx.fillText('2sinθcosθ = ' + verify, 18, 90);

// Legend
ctx.fillStyle = 'rgba(0,0,0,0.5)';
ctx.beginPath(); ctx.roundRect(W - 170, H - 50, 158, 38, 6); ctx.fill();
ctx.fillStyle = '#4fc3f7'; ctx.font = '13px sans-serif';
ctx.fillText('— sin(x)  周期:2π', W - 160, H - 30);
ctx.fillStyle = '#ff8a65';
ctx.fillText('— sin(2x) 周期:π', W - 160, H - 14);

requestAnimationFrame(loop);
}
loop();

積を和に変換する公式

倍角公式の逆を利用すると、三角関数の積を和に変換できます——「掛け算から足し算へ」変換することで、複雑な式が整理しやすくなります:

sinαcosβ=12[sin(α+β)+sin(αβ)]\sin\alpha\cos\beta = \frac{1}{2}\bigl[\sin(\alpha+\beta) + \sin(\alpha-\beta)\bigr] cosαcosβ=12[cos(α+β)+cos(αβ)]\cos\alpha\cos\beta = \frac{1}{2}\bigl[\cos(\alpha+\beta) + \cos(\alpha-\beta)\bigr] sinαsinβ=12[cos(α+β)cos(αβ)]\sin\alpha\sin\beta = -\frac{1}{2}\bigl[\cos(\alpha+\beta) - \cos(\alpha-\beta)\bigr]

具体的な計算例

例① sin22.5°\sin 22.5° を求める

「22.5°は45°の半分」——半角公式の出番です。

sin222.5°=1cos45°2=1222=224\sin^2 22.5° = \dfrac{1 - \cos 45°}{2} = \dfrac{1 - \frac{\sqrt{2}}{2}}{2} = \dfrac{2 - \sqrt{2}}{4}

22.5°>022.5° > 0 なので sin22.5°>0\sin 22.5° > 0、よって:

sin22.5°=222\sin 22.5° = \frac{\sqrt{2 - \sqrt{2}}}{2}

例② cos4θ+sin4θ\cos^4\theta + \sin^4\theta を簡略化する

「4乗は扱いにくいが、2乗の2乗と考えて整理する」——公式を組み合わせる発想です。

=(cos2θ+sin2θ)22cos2θsin2θ=1sin22θ2=11cos4θ4=3+cos4θ4= (\cos^2\theta + \sin^2\theta)^2 - 2\cos^2\theta\sin^2\theta = 1 - \frac{\sin^2 2\theta}{2} = 1 - \frac{1 - \cos 4\theta}{4} = \frac{3 + \cos 4\theta}{4}

練習問題

  1. sinθ=35\sin\theta = \dfrac{3}{5}0<θ<π20 < \theta < \dfrac{\pi}{2})のとき、sin2θ\sin 2\thetacos2θ\cos 2\theta を求めよ。
  2. cos2θ=12\cos 2\theta = \dfrac{1}{2}0<θ<π0 < \theta < \pi)のとき、θ\theta を求めよ。
  3. sin2θ+sin22θ=1\sin^2\theta + \sin^2 2\theta = 1 を満たす θ\theta を求めよ(0θπ0 \leq \theta \leq \pi)。

解答

  1. cosθ=45\cos\theta = \dfrac{4}{5}sin2θ=23545=2425\sin 2\theta = 2 \cdot \dfrac{3}{5} \cdot \dfrac{4}{5} = \dfrac{24}{25}cos2θ=12sin2θ=11825=725\cos 2\theta = 1 - 2\sin^2\theta = 1 - \dfrac{18}{25} = \dfrac{7}{25}
  2. 12sin2θ=121 - 2\sin^2\theta = \dfrac{1}{2}sin2θ=14\sin^2\theta = \dfrac{1}{4}sinθ=12\sin\theta = \dfrac{1}{2}0<θ<π0 < \theta < \pi)→ θ=π6,5π6\theta = \dfrac{\pi}{6}, \dfrac{5\pi}{6}
  3. sin2θ+4sin2θcos2θ=1\sin^2\theta + 4\sin^2\theta\cos^2\theta = 1sin2θ(1+4cos2θ)=1\sin^2\theta(1 + 4\cos^2\theta) = 1θ=π3,2π3\theta = \dfrac{\pi}{3}, \dfrac{2\pi}{3}

まとめ

公式
倍角(sin)sin2θ=2sinθcosθ\sin 2\theta = 2\sin\theta\cos\theta
倍角(cos)cos2θ=cos2θsin2θ=2cos2θ1=12sin2θ\cos 2\theta = \cos^2\theta - \sin^2\theta = 2\cos^2\theta - 1 = 1 - 2\sin^2\theta
倍角(tan)tan2θ=2tanθ1tan2θ\tan 2\theta = \dfrac{2\tan\theta}{1-\tan^2\theta}
半角sin2θ2=1cosθ2\sin^2\dfrac{\theta}{2} = \dfrac{1-\cos\theta}{2}cos2θ2=1+cosθ2\cos^2\dfrac{\theta}{2} = \dfrac{1+\cos\theta}{2}

倍角・半角公式はすべて加法定理から導けます——「暗記しなくても、加法定理一つから再導出できる」というのが本質です。

次回は三角関数の合成を学びます。Asinθ+BcosθA\sin\theta + B\cos\theta という形を一つのsinにまとめる公式は、波の重ね合わせを理解するのに重要な技術です。