none
excelの逆三角関数について RRS feed

  • 質問

  • 逆三角関数の中に三角関数を入れて計算する時に逆三角関数の中身が「1」の時にエラーが出ます。

    =ACOS(x/sin(Y))

    XとYは小数点の数でありACOSの中身が=1でない場合には通常通り計算できるのですが中身が「1」の時「#NUM!」が表示されてしまいます。

    普通に

    =ACOS(1)とした場合には0が帰ってくるのですが中身に三角関数がありかつ中身が「1」のとき、値が返ってきません。

    この原因は何でしょうか

    2017年11月17日 2:09

回答

  • x=1, y=1のとき、x/sin(y)は1を超えます(≒1.19)。
    つまりacos(1.19)でarccosの引数範囲を超えているため、エラー表示になるのが正常な動作です。

    一応、x, yの他、sin(y), x/sin(y)のセルをそれぞれ用意しておき、
    中間結果(過程)を検証可能にしておくほうがよいです。


    追記
    後からふと気づいたのですが、質問の内容を読み違えたかも知れません。
    XとYは小数点の数でありACOSの中身が=1でない場合には通常通り計算できるのですが中身が「1」の時「#NUM!」が表示されてしまいます。
    もしかしてACOSの引数、x/sin(y)=1になるような、x, yの値をとった、ということでしょうか。
    その場合は、x/sin(y)や計算過程の中間結果は浮動小数点数なので、誤差が生じて1を超える可能性があります。
    このような計算の場合、IF関数等で、x/sin(y) > 1ならば1とするような回避をするなどの必要があります。

    2017年11月17日 5:40

すべての返信

  • x=1, y=1のとき、x/sin(y)は1を超えます(≒1.19)。
    つまりacos(1.19)でarccosの引数範囲を超えているため、エラー表示になるのが正常な動作です。

    一応、x, yの他、sin(y), x/sin(y)のセルをそれぞれ用意しておき、
    中間結果(過程)を検証可能にしておくほうがよいです。


    追記
    後からふと気づいたのですが、質問の内容を読み違えたかも知れません。
    XとYは小数点の数でありACOSの中身が=1でない場合には通常通り計算できるのですが中身が「1」の時「#NUM!」が表示されてしまいます。
    もしかしてACOSの引数、x/sin(y)=1になるような、x, yの値をとった、ということでしょうか。
    その場合は、x/sin(y)や計算過程の中間結果は浮動小数点数なので、誤差が生じて1を超える可能性があります。
    このような計算の場合、IF関数等で、x/sin(y) > 1ならば1とするような回避をするなどの必要があります。

    2017年11月17日 5:40
  • 回答ありがとうございます。
    追記の方で間違いありません。やはりif文で条件式も設けるしかありませんか・・・
    しかし原因がわかりスッキリしました!ありがとうございます!

    2017年11月17日 7:08
  • 追記前の返信のほうは、大変失礼しました。

    ちなみに余談ですが、
    やはりif文で条件式も設けるしかありませんか・・・
    単純に定義域でリミットを設けるのであれば、IF関数自体を使うと式が冗長煩雑になるので、
    =acos(min(max(x/sin(y),-1),1))
    のようにしておけば簡素ですし、ルーチンとして汎用的に使えるかと思います。
    2017年11月18日 5:42