この計算ツールでできること
このツールは、内積を使って2次元または3次元空間における2つのベクトルのなす角を求めます。ベクトルaとベクトルbの成分を入力すると、角度を度数(°)とラジアンの両方で表示し、あわせて内積・各ベクトルの大きさ・角度の余弦(cosθ)も計算します。数学はもちろん、物理学、工学、コンピューターグラフィックス、機械学習における類似度の計算など、幅広い場面で活用できます。
使い方
各ベクトルの x・y 成分(必要に応じて z 成分)を入力します。2次元ベクトルの場合は、z の欄を空欄のままにするか 0 を入力するだけでかまいません。「計算」を押すと角度が表示されます。出力される角度は常に0°〜180°の範囲で、2つの向きの間で最も小さい幾何学的な角度を表します。
公式の解説
内積と角度の関係は \(a\cdot b = |a||b|\cos\theta\) で表されます。これをθについて解くと $$\theta = \arccos\!\left( \frac{a\cdot b}{|a||b|} \right)$$ となります。内積は成分ごとに計算します: $$a\cdot b = a_x b_x + a_y b_y + a_z b_z.$$ 各ベクトルの大きさは、各成分の2乗の和の平方根です: $$|a| = \sqrt{a_x^2 + a_y^2 + a_z^2}.$$ 割り算の結果は、丸め誤差による不具合を防ぐため、arccosを取る前に \([-1, 1]\) の範囲に収めています。
計算例
\(a = (1, 0, 0)\)、\(b = (1, 1, 0)\) とします。内積は $$1\cdot 1 + 0\cdot 1 + 0\cdot 0 = 1$$ です。大きさは \(|a| = 1\)、\(|b| = \sqrt{2} \approx 1.4142\) となります。よって $$\cos\theta = \frac{1}{1 \times 1.4142} \approx 0.7071$$ となり、\(\theta = \arccos(0.7071) = 45°\)、すなわち約0.7854ラジアンが得られます。
結果の解釈
計算機から返される角度 \(\theta\) は、2つのベクトルがその長さに関係なく互いに相対的にどのように向いているかを表します。\(\cos\theta\) の符号と大きさは、幾何学的な関係を一目で示しています。
- \(\theta = 0^\circ\) (\(\cos\theta = 1\)) — 平行 / 同じ方向。 ベクトルは完全に同じ方向を指します。一方は他方の正のスカラー倍です。
- \(0^\circ < \theta < 90^\circ\) (\(\cos\theta > 0\)) — 鋭角。 ドット積は正であり、ベクトルは広く似た方向を指しています。
- \(\theta = 90^\circ\) (\(\cos\theta = 0\)) — 直交(垂直)。 ドット積は正確にゼロです。これは垂直性の定義的なテストです。
- \(90^\circ < \theta < 180^\circ\) (\(\cos\theta < 0\)) — 鈍角。 ドット積は負であり、ベクトルは一般的に反対の方向を指しています。
- \(\theta = 180^\circ\) (\(\cos\theta = -1\)) — 反平行 / 反対方向。 一方のベクトルは他方の負のスカラー倍です。
機械学習およびテキスト分析では、量 \(\cos\theta\) はコサイン類似度と呼ばれます。直接解釈すると:値 1 は同じ方向(最大限に類似)を意味し、0 は直交/無関係を意味し、−1 は反対方向を意味します。大きさを無視するため、同じ向きだが長さが異なる2つのドキュメントまたは埋め込みは同一として採点されます。角度と類似度は同じ情報を運びます — 角度は単に類似度の\(\arccos\)です。
一般的な角度の参照値
これらの標準的な角度とそれらの正確なコサイン値は、結果をチェックし、一般的な向きを認識するのに役立ちます。角度は \(\theta = \arccos(\cos\theta)\) から求められます。
| 角度(度) | 角度(ラジアン) | \(\cos\theta\) | 関係 |
|---|---|---|---|
| 0° | \(0\) | 1.0000 | 平行(同じ方向) |
| 30° | \(\pi/6\) | 0.8660 | 鋭角 |
| 45° | \(\pi/4\) | 0.7071 | 鋭角 |
| 60° | \(\pi/3\) | 0.5000 | 鋭角 |
| 90° | \(\pi/2\) | 0.0000 | 直交(垂直) |
| 120° | \(2\pi/3\) | −0.5000 | 鈍角 |
| 135° | \(3\pi/4\) | −0.7071 | 鈍角 |
| 150° | \(5\pi/6\) | −0.8660 | 鈍角 |
| 180° | \(\pi\) | −1.0000 | 反平行(反対方向) |
60° などの小数度の結果を度、分、秒に変換するには、60° 変換を使用できます。
よくある質問
2次元ベクトルでも使えますか? はい。z 成分を 0 のままにすれば、公式は自動的に2次元のケースに帰着します。
なぜ角度は180°を超えないのですか? arccos関数は 0 から π(180°)までの値を返します。これは向きの取り方にかかわらず、2つの方向の間で最も小さい角度を表すためです。
ゼロベクトルの場合はどうなりますか? ゼロベクトルには向きがないため、角度は定義できません。このツールでは0での割り算を避けるため、いずれかの大きさが0のときは角度を0°として返します。