スプレッドシートのACOS関数の使い方|逆余弦(アークコサイン)

スポンサーリンク

スプレッドシートでコサイン値から元の角度を逆算したいとき、どう計算すればいいか迷っていませんか?

「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)100度
=ACOS(0.8660…)0.8660…0.5235…30度
=ACOS(0.7071…)0.7071…0.7853…45度
=ACOS(0.5)0.51.0471…60度
=ACOS(0)01.5707…90度
=ACOS(-0.5)-0.52.0943…120度
=ACOS(-1)-13.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列)数式角度
810=DEGREES(ACOS(A2/B2))36.87度
510=DEGREES(ACOS(A3/B3))60.00度
310=DEGREES(ACOS(A4/B4))72.54度
1010=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が返ることを確認してみてください。

タイトルとURLをコピーしました