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

加法定理

加法定理とは

「30°のsinとcosはわかる。45°もわかる。じゃあ75°は?」——30°+45°だから、もし「足した角度のsin」を「それぞれのsin・cosで表せたら」便利ですよね。

でも、sin(30°+45°)=sin30°+sin45°\sin(30° + 45°) = \sin 30° + \sin 45° とはなりません。試しに数値を入れると左辺は sin75°0.966\sin 75° \approx 0.966 なのに、右辺は 0.5+0.7071.2070.5 + 0.707 \approx 1.207 で全然違います。

足した角度の三角関数は、単純な足し算では求められない——それを正しく計算するのが加法定理です。

sin(α+β)=sinαcosβ+cosαsinβ\boxed{ \sin(\alpha + \beta) = \sin\alpha\cos\beta + \cos\alpha\sin\beta } cos(α+β)=cosαcosβsinαsinβ\boxed{ \cos(\alpha + \beta) = \cos\alpha\cos\beta - \sin\alpha\sin\beta } tan(α+β)=tanα+tanβ1tanαtanβ\boxed{ \tan(\alpha + \beta) = \frac{\tan\alpha + \tan\beta}{1 - \tan\alpha\tan\beta} }

差の公式は β\betaβ-\beta に置き換えることで得られます(sin(β)=sinβ\sin(-\beta) = -\sin\betacos(β)=cosβ\cos(-\beta) = \cos\beta を使うだけ):

sin(αβ)=sinαcosβcosαsinβ\sin(\alpha - \beta) = \sin\alpha\cos\beta - \cos\alpha\sin\beta cos(αβ)=cosαcosβ+sinαsinβ\cos(\alpha - \beta) = \cos\alpha\cos\beta + \sin\alpha\sin\beta

インタラクティブデモ:加法定理の幾何学的証明

単位円上で角度 α\alphaβ\beta を視覚化します。マウスを左右に動かすと α\alpha が変わり、β=π/4\beta = \pi/4 は固定です。右パネルで「sin(α+β)\sin(\alpha + \beta)」と「sinαcosβ+cosαsinβ\sin\alpha\cos\beta + \cos\alpha\sin\beta」が一致しているのを確認してください——公式が正しいことが数値でわかります。

マウスを左右に動かすと α が変わります(β = 45°固定)
function loop() {
ctx.clearRect(0, 0, W, H);

var cx = W / 2 - 40, cy = H / 2 + 20;
var r = 130;
var alpha = (mx / W) * Math.PI * 1.5;
var beta = Math.PI / 4;
var total = alpha + beta;

var cosA = Math.cos(alpha), sinA = Math.sin(alpha);
var cosB = Math.cos(beta), sinB = Math.sin(beta);
var cosAB = Math.cos(total), sinAB = Math.sin(total);

// Unit circle
ctx.strokeStyle = 'rgba(255,255,255,0.2)';
ctx.lineWidth = 1.5;
ctx.beginPath(); ctx.arc(cx, cy, r, 0, Math.PI * 2); ctx.stroke();

// Axes
ctx.strokeStyle = 'rgba(255,255,255,0.3)';
ctx.lineWidth = 1.5;
ctx.beginPath(); ctx.moveTo(cx - 160, cy); ctx.lineTo(cx + 160, cy); ctx.stroke();
ctx.beginPath(); ctx.moveTo(cx, cy - 160); ctx.lineTo(cx, cy + 160); ctx.stroke();

// Arc for alpha (yellow)
ctx.strokeStyle = 'rgba(255,235,59,0.7)';
ctx.lineWidth = 2;
ctx.beginPath(); ctx.arc(cx, cy, 25, 0, -alpha, alpha < 0); ctx.stroke();
ctx.fillStyle = '#ffeb3b';
ctx.font = '13px sans-serif';
ctx.fillText('α', cx + 28, cy - 8);

// Arc for beta (orange, from alpha to alpha+beta)
ctx.strokeStyle = 'rgba(255,152,0,0.7)';
ctx.lineWidth = 2;
ctx.beginPath(); ctx.arc(cx, cy, 40, -alpha, -total, total < alpha); ctx.stroke();
ctx.fillStyle = '#ffa726';
ctx.fillText('β', cx + 42, cy - 22);

// Arc for alpha+beta (green, full)
ctx.strokeStyle = 'rgba(102,187,106,0.4)';
ctx.lineWidth = 1.5;
ctx.setLineDash([5,3]);
ctx.beginPath(); ctx.arc(cx, cy, 55, 0, -total, total < 0); ctx.stroke();
ctx.setLineDash([]);
ctx.fillStyle = '#66bb6a';
ctx.fillText('α+β', cx + 58, cy - 28);

// Point at alpha (yellow)
var pAx = cx + r * cosA, pAy = cy - r * sinA;
ctx.strokeStyle = '#ffeb3b';
ctx.lineWidth = 2;
ctx.beginPath(); ctx.moveTo(cx, cy); ctx.lineTo(pAx, pAy); ctx.stroke();
ctx.fillStyle = '#ffeb3b';
ctx.beginPath(); ctx.arc(pAx, pAy, 5, 0, Math.PI * 2); ctx.fill();

// Point at beta from alpha (orange)
var pBx = cx + r * Math.cos(beta), pBy = cy - r * Math.sin(beta);
ctx.strokeStyle = '#ffa726';
ctx.lineWidth = 2;
ctx.setLineDash([4,3]);
ctx.beginPath(); ctx.moveTo(cx, cy); ctx.lineTo(pBx, pBy); ctx.stroke();
ctx.setLineDash([]);

// Point at alpha+beta (green, bright)
var pABx = cx + r * cosAB, pABy = cy - r * sinAB;
ctx.strokeStyle = '#66bb6a';
ctx.lineWidth = 2.5;
ctx.beginPath(); ctx.moveTo(cx, cy); ctx.lineTo(pABx, pABy); ctx.stroke();
ctx.fillStyle = '#66bb6a';
ctx.beginPath(); ctx.arc(pABx, pABy, 6, 0, Math.PI * 2); ctx.fill();

// sin(alpha+beta) vertical projection
ctx.strokeStyle = 'rgba(239,83,80,0.7)';
ctx.lineWidth = 2;
ctx.beginPath(); ctx.moveTo(pABx, cy); ctx.lineTo(pABx, pABy); ctx.stroke();
ctx.fillStyle = '#ef5350';
ctx.font = '12px sans-serif';
ctx.fillText('sin(α+β)', pABx + 6, (cy + pABy) / 2);

// cos(alpha+beta) horizontal projection
ctx.strokeStyle = 'rgba(79,195,247,0.7)';
ctx.lineWidth = 2;
ctx.beginPath(); ctx.moveTo(cx, pABy); ctx.lineTo(pABx, pABy); ctx.stroke();
ctx.fillStyle = '#4fc3f7';
ctx.fillText('cos(α+β)', cx + 4, pABy - 6);

// Info panel
ctx.fillStyle = 'rgba(0,0,0,0.7)';
ctx.beginPath(); ctx.roundRect(W - 220, 10, 208, 130, 8); ctx.fill();
ctx.fillStyle = '#ffeb3b';
ctx.font = 'bold 13px monospace';
var aDeg = (alpha * 180 / Math.PI).toFixed(0);
var bDeg = (beta * 180 / Math.PI).toFixed(0);
ctx.fillText('α = ' + aDeg + '°, β = ' + bDeg + '°', W - 210, 34);
ctx.fillStyle = '#66bb6a';
ctx.font = '12px monospace';
ctx.fillText('sin(α+β) = ' + sinAB.toFixed(3), W - 210, 56);
ctx.fillStyle = 'rgba(255,255,255,0.7)';
var rhs = sinA * cosB + cosA * sinB;
ctx.fillText('sinα·cosβ', W - 210, 74);
ctx.fillText('+ cosα·sinβ = ' + rhs.toFixed(3), W - 210, 90);
ctx.fillStyle = '#4fc3f7';
ctx.fillText('cos(α+β) = ' + cosAB.toFixed(3), W - 210, 110);
var rhsC = cosA * cosB - sinA * sinB;
ctx.fillStyle = 'rgba(255,255,255,0.7)';
ctx.fillText('= ' + rhsC.toFixed(3) + ' ✓', W - 210, 128);

requestAnimationFrame(loop);
}
loop();

加法定理の証明のアイデア

「本当にこの公式が正しいの?」という疑問への答えを、単位円を使って証明できます——ピタゴラスの定理(直角三角形での三平方)と余弦定理を組み合わせるだけです。

単位円上に2点 A=(cosα,sinα)\mathrm{A} = (\cos\alpha, \sin\alpha)B=(cosβ,sinβ)\mathrm{B} = (\cos\beta, \sin\beta) をとります。

AB2=(cosαcosβ)2+(sinαsinβ)2\mathrm{AB}^2 = (\cos\alpha - \cos\beta)^2 + (\sin\alpha - \sin\beta)^2

=22(cosαcosβ+sinαsinβ)= 2 - 2(\cos\alpha\cos\beta + \sin\alpha\sin\beta)

一方、余弦定理から AB2=22cos(αβ)\mathrm{AB}^2 = 2 - 2\cos(\alpha - \beta) なので:

cos(αβ)=cosαcosβ+sinαsinβ\cos(\alpha - \beta) = \cos\alpha\cos\beta + \sin\alpha\sin\beta

これを基に cos(α+β)=cos(α(β))\cos(\alpha + \beta) = \cos(\alpha - (-\beta)) から加法定理が導けます。「長さを2通りの方法で計算して一致させる」——数学でよく使われる証明のテクニックです。


加法定理の応用

例① sin75°\sin 75° を求める

「75°は特殊角の表にないけど、45°+30°なら計算できる!」——加法定理の最も使いやすい応用です。

sin75°=sin(45°+30°)=sin45°cos30°+cos45°sin30°\sin 75° = \sin(45° + 30°) = \sin 45°\cos 30° + \cos 45°\sin 30° =2232+2212=6+24= \frac{\sqrt{2}}{2} \cdot \frac{\sqrt{3}}{2} + \frac{\sqrt{2}}{2} \cdot \frac{1}{2} = \frac{\sqrt{6} + \sqrt{2}}{4}

例② cos15°\cos 15° を求める

cos15°=cos(45°30°)=cos45°cos30°+sin45°sin30°\cos 15° = \cos(45° - 30°) = \cos 45°\cos 30° + \sin 45°\sin 30° =2232+2212=6+24= \frac{\sqrt{2}}{2} \cdot \frac{\sqrt{3}}{2} + \frac{\sqrt{2}}{2} \cdot \frac{1}{2} = \frac{\sqrt{6} + \sqrt{2}}{4}

sin75°=cos15°\sin 75° = \cos 15° であることとも一致します——「余角の関係」です)


tan\tan の加法定理の導出

tanの加法定理は、sinとcosの加法定理から導けます——「別に覚えなくても導ける」式です:

tan(α+β)=sin(α+β)cos(α+β)=sinαcosβ+cosαsinβcosαcosβsinαsinβ\tan(\alpha + \beta) = \frac{\sin(\alpha+\beta)}{\cos(\alpha+\beta)} = \frac{\sin\alpha\cos\beta + \cos\alpha\sin\beta}{\cos\alpha\cos\beta - \sin\alpha\sin\beta}

分子分母を cosαcosβ\cos\alpha\cos\beta で割ると(それぞれの項を cosαcosβ\cos\alpha\cos\beta で割る):

=tanα+tanβ1tanαtanβ= \frac{\tan\alpha + \tan\beta}{1 - \tan\alpha\tan\beta}

練習問題

  1. sin(A+B)=45\sin(A+B) = \frac{4}{5}cosA=35\cos A = \frac{3}{5}cosB=513\cos B = \frac{5}{13} のとき sinB\sin B を求めよ(A,BA, B は鋭角)。
  2. tan105°\tan 105° を加法定理で求めよ。
  3. cos(πθ)\cos(\pi - \theta) を加法定理で変形せよ。

解答

  1. sinA=45\sin A = \frac{4}{5} より 45=45513+35sinB\frac{4}{5} = \frac{4}{5} \cdot \frac{5}{13} + \frac{3}{5} \cdot \sin BsinB=1213\sin B = \frac{12}{13}
  2. tan(60°+45°)=3+113=(3+1)213=23\tan(60°+45°) = \frac{\sqrt{3}+1}{1-\sqrt{3}} = \frac{(\sqrt{3}+1)^2}{1-3} = -2-\sqrt{3}
  3. cos(πθ)=cosπcosθ+sinπsinθ=cosθ\cos(\pi - \theta) = \cos\pi\cos\theta + \sin\pi\sin\theta = -\cos\theta

まとめ

公式内容
sin(α±β)\sin(\alpha \pm \beta)sinαcosβ±cosαsinβ\sin\alpha\cos\beta \pm \cos\alpha\sin\beta
cos(α±β)\cos(\alpha \pm \beta)cosαcosβsinαsinβ\cos\alpha\cos\beta \mp \sin\alpha\sin\beta
tan(α±β)\tan(\alpha \pm \beta)tanα±tanβ1tanαtanβ\dfrac{\tan\alpha \pm \tan\beta}{1 \mp \tan\alpha\tan\beta}

加法定理は「三角関数の計算の核心」——この一つを覚えると、次に学ぶ倍角・半角公式もすべて導けるようになります。

次回は倍角公式と半角公式を学びます。加法定理で α=β\alpha = \beta とおくだけで、2倍角の公式が自動的に出てきます。