スプレッドシートでコサイン値から元の角度を逆算したいとき、どう計算すればいいか迷っていませんか?
「COS関数で角度からコサイン値は求められるけど、その逆はどうやるの?」と感じますよね。
そんなときに使うのがACOS関数です。=ACOS(値) と書くだけで、コサイン値から対応する角度(ラジアン)を返してくれます。
この記事では基本の書き方から、DEGREES関数と組み合わせた度数法への変換、ベクトル間の角度計算やコサイン類似度の角度変換まで紹介します。
スプレッドシートのACOS関数とは?
ACOS関数(読み方: アークコサイン関数)は、コサイン値から角度(ラジアン)を逆算する関数です。COS関数の逆関数にあたります。
たとえば =DEGREES(ACOS(0.5)) と入力すると「60」が返ります。コサイン値0.5に対応する角度が60度だとわかるわけですね。
ACOS関数は-1から1の範囲の値を引数に取り、結果をラジアン単位で返します。度数法(30度、60度など)で結果を得たい場合は、DEGREES関数で変換します。
ACOS関数にできることをまとめると、次のとおりです。
- コサイン値(-1~1)から対応する角度(ラジアン)を返す
- DEGREES関数と組み合わせて度数法の角度に変換する
- ベクトル間の角度を計算する(内積とACOSの組み合わせ)
- コサイン類似度を角度に変換して解釈する
- COS関数と組み合わせて三角関数の逆変換を行う
NOTE
ACOS関数はGoogleスプレッドシートの全バージョンで使えます。Excelとも完全に互換性があるので、ファイルのやり取りでも安心です。
ACOS関数の書き方(構文と引数)
基本構文
=ACOS(値)
カッコの中に-1から1の範囲の数値を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | 逆余弦を求めたい数値。-1以上1以下の範囲で指定する |
引数は1つだけです。指定できる値は-1から1の範囲に限られます。この範囲を超える値を渡すと#NUM!エラーになるので注意してください。
戻り値の範囲
ACOS関数が返す値は 0 から PI() まで(度数法で0度から180度)です。
=ACOS(1) → 0(0度)
=ACOS(0) → 1.5707...(90度)
=ACOS(-1) → 3.1415...(180度)
戻り値はラジアンです。度数法で使いたい場合は、DEGREES関数で変換しましょう。
TIP
ASIN関数の戻り値範囲は-90度~90度ですが、ACOS関数は0度~180度です。ACOS関数のほうが返せる角度の範囲が広いのが特徴ですね。
ACOS関数の基本的な使い方
ラジアンで結果を得る
まずはACOS関数をそのまま使うパターンです。
=ACOS(0.5)
結果は「1.0471…」です。これはPI()/3と同じ値で、60度をラジアンで表したものですね。
代表的な値とACOSの結果をまとめます。
| 数式 | コサイン値 | 結果(ラジアン) | 角度に換算 |
|---|---|---|---|
| =ACOS(1) | 1 | 0 | 0度 |
| =ACOS(0.8660…) | 0.8660… | 0.5235… | 30度 |
| =ACOS(0.7071…) | 0.7071… | 0.7853… | 45度 |
| =ACOS(0.5) | 0.5 | 1.0471… | 60度 |
| =ACOS(0) | 0 | 1.5707… | 90度 |
| =ACOS(-0.5) | -0.5 | 2.0943… | 120度 |
| =ACOS(-1) | -1 | 3.1415… | 180度 |
ASIN関数とは異なり、ACOS関数は負のコサイン値にも対応して90度~180度の角度を返せます。
DEGREES関数と組み合わせて度数法で結果を得る
実務では角度を「度」で扱うことがほとんどです。DEGREES関数と組み合わせれば、結果を度数法で取得できます。
=DEGREES(ACOS(0.5))
結果は「60」です。コサイン値0.5の角度が60度だと、そのまま読み取れますね。
よく使う値の早見表を用意しました。
| コサイン値 | 数式 | 結果(度) |
|---|---|---|
| 1 | =DEGREES(ACOS(1)) | 0 |
| 0.8660… | =DEGREES(ACOS(SQRT(3)/2)) | 30 |
| 0.7071… | =DEGREES(ACOS(SQRT(2)/2)) | 45 |
| 0.5 | =DEGREES(ACOS(0.5)) | 60 |
| 0 | =DEGREES(ACOS(0)) | 90 |
| -0.5 | =DEGREES(ACOS(-0.5)) | 120 |
| -1 | =DEGREES(ACOS(-1)) | 180 |
SQRT(3)/2 は約0.8660、SQRT(2)/2 は約0.7071 です。数学の教科書でおなじみの値ですね。
COS関数との逆変換を確認する
ACOS関数がCOS関数の逆関数であることを、実際に確認してみましょう。
=COS(RADIANS(60)) → 0.5
=DEGREES(ACOS(0.5)) → 60
COS関数で60度からコサイン値0.5を求め、ACOS関数で0.5から60度に戻せています。元の角度に戻るわけですね。
=DEGREES(ACOS(COS(RADIANS(60)))) → 60
このように入れ子にしても、元の角度が復元されます。
実務でのACOS関数活用例
底辺と斜辺から角度を求める
底辺と斜辺の長さがわかっている場合、ACOS関数で角度を計算できます。
たとえば、底辺が8m、斜辺が10mのとき、角度は次の式で求まります。
=DEGREES(ACOS(8/10))
結果は「36.86…」です。角度は約36.9度とわかりますね。
サンプルデータで何パターンか計算してみましょう。
| 底辺(A列) | 斜辺(B列) | 数式 | 角度 |
|---|---|---|---|
| 8 | 10 | =DEGREES(ACOS(A2/B2)) | 36.87度 |
| 5 | 10 | =DEGREES(ACOS(A3/B3)) | 60.00度 |
| 3 | 10 | =DEGREES(ACOS(A4/B4)) | 72.54度 |
| 10 | 10 | =DEGREES(ACOS(A5/B5)) | 0.00度 |
底辺と斜辺が等しいとき(A5/B5 = 1)、角度は0度になります。
TIP
底辺/斜辺の比率は三角関数の「cos」の定義そのものです。cos(θ) = 底辺/斜辺 なので、逆にACOS(底辺/斜辺) = θ で角度が求まります。
ベクトル間の角度を計算する
2つのベクトルのなす角は、内積とACOS関数で計算できます。
ベクトルA = (2, 3)、ベクトルB = (4, 1) の場合を考えてみましょう。
内積 = 2×4 + 3×1 = 11
|A| = SQRT(2^2 + 3^2) = SQRT(13)
|B| = SQRT(4^2 + 1^2) = SQRT(17)
スプレッドシートでは次のように書きます。
=DEGREES(ACOS((2*4+3*1)/(SQRT(2^2+3^2)*SQRT(4^2+1^2))))
結果は「42.27…」です。2つのベクトルのなす角は約42.3度ですね。
セル参照を使うなら、A列とB列にベクトルAの成分、C列とD列にベクトルBの成分を入れて、次のように計算します。
=DEGREES(ACOS((A2*C2+B2*D2)/(SQRT(A2^2+B2^2)*SQRT(C2^2+D2^2))))
この計算式は、データ分析でベクトルの方向の近さを測るときに使えますよ。
コサイン類似度を角度に変換する
テキスト分析やレコメンドエンジンで使われるコサイン類似度は、ACOS関数で角度に変換すると直感的に解釈できます。
コサイン類似度は-1~1の値をとり、1に近いほど似ていることを表します。ACOS関数で変換すると、0度に近いほど似ていることになります。
| コサイン類似度 | 数式 | 角度 | 解釈 |
|---|---|---|---|
| 1.0 | =DEGREES(ACOS(1)) | 0度 | 完全一致 |
| 0.9 | =DEGREES(ACOS(0.9)) | 25.84度 | とても似ている |
| 0.5 | =DEGREES(ACOS(0.5)) | 60度 | やや似ている |
| 0 | =DEGREES(ACOS(0)) | 90度 | 無関係 |
| -1.0 | =DEGREES(ACOS(-1)) | 180度 | 正反対 |
「類似度0.85と0.90はどれくらい違うの?」という疑問に、角度で答えられるようになります。
よくあるエラーと対処法
ACOS関数でよくあるトラブルをまとめます。
| 症状 | 原因 | 対処法 |
|---|---|---|
| #NUM! エラー | 引数が-1~1の範囲外 | 値が-1以上1以下か確認する |
| #VALUE! エラー | 引数に文字列を渡した | 数値またはセル参照を指定する |
| 結果がラジアンで読みにくい | DEGREES関数で変換していない | =DEGREES(ACOS(値)) とする |
#NUM!エラーの対処
ACOS関数でもっとも多いエラーは#NUM!です。引数に1より大きい値や-1より小さい値を渡すと発生します。
=ACOS(1.5) → #NUM! エラー
=ACOS(-2) → #NUM! エラー
コサイン値の範囲は-1から1です。この範囲を超える値には対応する角度が存在しないため、エラーになります。
データの中に範囲外の値が混ざっている場合は、IFERROR関数で対処しましょう。
=IFERROR(DEGREES(ACOS(A2)), "範囲外")
エラーの場合は「範囲外」と表示して、処理が止まるのを防げます。
ラジアンと度数法の変換忘れ
ACOS関数の結果はラジアンです。度数法の角度が欲しいのにDEGREES関数を忘れると、見慣れない数値になります。
=ACOS(0.5) → 1.0471...(ラジアン)
=DEGREES(ACOS(0.5)) → 60(度数法)
「なんだか中途半端な数値が返ってきたな」と思ったら、DEGREES関数の付け忘れを疑ってみてください。
似た関数との違い・使い分け
| 関数 | 動作 | 引数 | 用途 |
|---|---|---|---|
| ACOS | 逆余弦(アークコサイン)を返す | -1~1の値 | コサイン値から角度を逆算 |
| COS | 余弦(コサイン)を返す | 角度(ラジアン) | 角度からコサイン値を求める |
| SIN | 正弦(サイン)を返す | 角度(ラジアン) | Y座標の計算 |
| ASIN | 逆正弦(アークサイン)を返す | -1~1の値 | サイン値から角度を逆算 |
| ATAN | 逆正接(アークタンジェント)を返す | 任意の実数 | タンジェント値から角度を逆算 |
| DEGREES | ラジアンを度数法に変換する | ラジアン値 | ASIN/ACOS/ATANの結果変換 |
| PI | 円周率を返す | なし | 角度変換・円の計算 |
ASIN・ACOS・ATANの使い分け
3つの逆三角関数は、どの三角比から角度を求めるかで使い分けます。
- ASIN: 高さ/斜辺(sin値)から角度を求める → 戻り値 -90度~90度
- ACOS: 底辺/斜辺(cos値)から角度を求める → 戻り値 0度~180度
- ATAN: 高さ/底辺(tan値)から角度を求める → 戻り値 -90度~90度
どの値がわかっているかで、使う関数が決まります。ACOS関数は戻り値の範囲が0度~180度と広く、鈍角(90度超)も扱えるのが特徴です。
COS関数との逆変換
COS関数とACOS関数は、入力と出力が逆の関係です。
COS: 角度(ラジアン) → コサイン値
ACOS: コサイン値 → 角度(ラジアン)
COS関数が「角度からコサイン値」を求めるのに対して、ACOS関数は「コサイン値から角度」を逆算します。セットで覚えておくと便利ですよ。
まとめ
ACOS関数は、コサイン値から角度(ラジアン)を逆算する関数です。
ポイントを整理します。
- 構文は
=ACOS(値)で、引数は-1から1の範囲 - 結果はラジアンで返るので、度数法には
=DEGREES(ACOS(値))と変換する - ACOS(0.5) = 1.0471…(60度)、ACOS(0) = 1.5707…(90度)が代表的な値
- 戻り値の範囲は0度~180度で、ASINより広い
- ベクトル間の角度は
=DEGREES(ACOS(内積/(|A|*|B|)))で計算できる - 引数が-1~1の範囲外だと#NUM!エラーになる
まずは =DEGREES(ACOS(0.5)) で60が返ることを確認してみてください。
