スプレッドシートのIMCSC関数の使い方|複素数の余割を計算

スポンサーリンク

スプレッドシートのIMCSC関数で、複素数の余割(コセカント)を求めたくなったことはありませんか。IMSINで正弦を出してから1で割る、という回り道をしている人もいるかもしれません。

しかもスプレッドシートの複素数は、結果が「a+bi」形式の文字列で返ってきます。そのまま足し算して #VALUE! が出たり、入力の書き方ひとつで #NUM! になったり。公式ヘルプを見ても、どの入力でどのエラーになるかまでは載っていません。

この記事では、複素数の余割を1関数で返すIMCSC関数の使い方を解説します。基本の書き方から、結果を計算に使うときのコツ、エラーになる入力の早見表まで順番に見ていきましょう。

IMCSC関数とは?スプレッドシートで複素数の余割(1/sin)を返す関数

IMCSC関数は、Googleスプレッドシートで複素数の余割(コセカント)を求める関数です。名前は「IM(Imaginary=虚数)」と「CSC(Cosecant=余割)」の組み合わせ。

読み方は「アイエム・コセカント」と覚えておけばよいでしょう。解説によっては「コサイカント」と表記されることもあります。

余割は正弦(sin)の逆数のことで、定義は次のとおりです。

csc(z) = 1 / sin(z)

つまりIMCSCは、IMSIN関数で求めた正弦の逆数を1回で返してくれる関数。複素数 z を渡すと、1/sin(z) の値が「a+bi」の形で返ってきます。

見た目は数値のようですが、戻り値の中身は文字列です。足し算などでつまずきやすいポイントなので、後半でくわしく見ていきましょう。

逆数系の三角関数は、IMCSCのほかにもあります。名前が似ていて混同しやすいので、定義を並べておきましょう。

関数求める値定義
IMCSC余割(コセカント)1 / sin(z)
IMSEC正割(セカント)1 / cos(z)
IMCOT余接(コタンジェント)1 / tan(z)
IMCSCH双曲線余割1 / sinh(z)

IMSECとIMCOS関数の関係は、IMCSCとIMSINの関係と同じ形です。とくにIMCSCHは末尾にHが付くだけで、sinhの逆数を返す別の関数になります。

うっかり取り違えると、結果はまったく違う値になります。数式を入れたら、関数名を一度見直しておくと安心ですね。

IMCSC関数の書き方と基本の使い方

構文と引数

=IMCSC(複素数)

引数は「複素数」の1つだけ。「”1+1i”」のような文字列のほか、セル参照やCOMPLEX関数の結果、ふつうの数値も渡せます。

虚数単位には小文字の i か j を使います。実数部分はラジアン(弧度法)として扱われるため、度で考えたいときは変換が必要です。

文字列で複素数を直接指定する

いちばん手軽なのは、複素数を文字列で直接書く方法。全体をダブルクォーテーションで囲むのを忘れないようにしましょう。

=IMCSC("1+1i")
=IMCSC("2-2i")

1つ目の結果は、およそ「0.621518017170428-0.303931001628426i」です。「2-2i」を渡した2つ目は、およそ「0.244687-0.107955i」になります。

この記事の値は、計算上の値を15桁程度に丸めて載せています。画面の表示と末尾の桁が少し違って見えても、上位の桁がそろっていれば気にしなくて大丈夫ですよ。

なお「”1 + 1i”」のように半角スペースが入っていても、スペースなしと同じ値が返ります。一方で全角スペースはエラーになるため、後半の早見表で整理しています。

セル参照・COMPLEX関数で指定する

実務では、複素数をセルに入れておいて参照する書き方が便利です。A2に「1+2i」が入っているなら、次のように書きます。

=IMCSC(A2)
=IMCSC(COMPLEX(4, 3))

=IMCSC(A2) の結果は、およそ「0.228375065599687-0.141363021612408i」。セルの中身を書き換えるだけで、結果も自動で更新されますね。

2つ目は、実部4・虚部3から「4+3i」を組み立てて渡す書き方です。結果はおよそ「-0.0754898329158637+0.0648774713706355i」になります。

実部と虚部を別の列で管理しているなら、COMPLEX(B2, C2) のように渡すと扱いやすいでしょう。COMPLEX関数のくわしい使い方は、スプレッドシートのCOMPLEX関数の解説にまとめています。

実数だけを渡したとき

虚部のない実数を渡した場合は、ふつうの三角関数で求める余割と同じ値です。Google公式ヘルプにも、=IMCSC(4) のように数値を渡す例が載っています。

=IMCSC("1")
=IMCSC("1i")

「1」を渡した結果は 1/sin(1) で、およそ 1.18839510577812 です。虚部が0なので、実数の余割をそのまま求めたことになります。

逆に実部が0の「1i」を渡すと、結果は実部0・虚部およそ -0.850918128239322 の純虚数。csc(bi) = -i/sinh(b) という関係から、-i/sinh(1) の値が返るというわけ。

IMCSC関数の結果を計算に使うときの注意

戻り値は文字列なので + で足すと #VALUE! になる

IMCSCの戻り値は、数値ではなく「a+bi」形式の文字列。そのため、結果に + で数値を足そうとしても計算できません。

=IMCSC("1+1i")+1   → #VALUE!

複素数どうしを足すならIMSUM、掛けるならIMPRODUCTのように、IM系の演算関数を使うのが基本です。ふつうの数値として扱いたいときは、次の方法で実部と虚部を取り出しましょう。

IMREAL・IMAGINARYで実部と虚部を取り出す

IMREAL関数は実部を、IMAGINARY関数は虚部を数値で返します。IMCSCの結果をいったん別のセルに置くと、数式が読みやすくなります。

A2: 1+1i
B2: =IMCSC(A2)
C2: =IMREAL(B2)
D2: =IMAGINARY(B2)

C2はおよそ 0.6215、D2はおよそ -0.3039 です。どちらも数値なので、=C2*2 のような計算やグラフ作成にそのまま使えますよ。

複素数の大きさ(絶対値)を知りたいときは、=IMABS(B2) のようにIMABS関数を使う方法もあります。

IMDIV(1, IMSIN()) で検算する

計算が合っているか不安なときは、定義 csc(z) = 1/sin(z) をそのまま数式にして見比べてみましょう。IMDIVは、複素数の割り算をする関数です。

=IMCSC(A2)
=IMDIV(1, IMSIN(A2))

2つの結果の上位の桁がそろっていれば、IMCSCが定義どおりに計算できていると確かめられます。計算の経路が違うので、末尾の桁まで同じになるとは限らない点だけ覚えておきましょう。

IMCSC関数でエラーになる入力と対処法

エラーになる入力の早見表

IMCSCに渡す入力と結果の対応を、種類ごとにまとめました。入力の読み取り方は、IM系の多くの関数に共通する規則です。

入力の種類数式の例結果
途中に半角スペース=IMCSC("1 + 1i")スペースなしと同じ値
前後に半角スペース=IMCSC(" 1+1i ")スペースなしと同じ値
全角スペース=IMCSC("1 + 1i")#NUM!
大文字の I / J=IMCSC("1+1I")#NUM!
全角の文字=IMCSC("1+1i")#NUM!
i・j 以外の文字=IMCSC("1+1k")#NUM!
複素数でない文字列=IMCSC("hello")#NUM!
論理値=IMCSC(TRUE)#NUM!
エラー値=IMCSC(#N/A)#N/A がそのまま返る
戻り値に数値を足す=IMCSC("1+1i")+1#VALUE!

#NUM! は「複素数として読み取れない」というサイン。ネットやPDFからコピーした値は全角文字が混じりやすいので、まず半角かどうかを見直しましょう。

大文字の I や J が原因なら、LOWER関数で小文字に変換してから渡す方法もあります。

=IMCSC(LOWER(A2))

#N/A は、IMCSC自体ではなく参照先のセルがすでにエラーになっている状態です。#VALUE! などに変わらず元のエラーが返るので、参照元のセルを直せば解消します。

Excelの公式説明と違う点

ExcelにもIMCSC関数があり、Microsoftの公式ヘルプで説明されています。ただ、論理値を渡したときの結果は、スプレッドシートの動きと一致しません。

Excel版の説明では、論理値を渡すと #VALUE! になるとされています。一方スプレッドシートでは、=IMCSC(TRUE) は #NUM! を返します。

Excel向けの解説を参考に数式を組むと、ここで食い違いが起きがち。エラーの種類で処理を分けるなら、スプレッドシートでは #NUM! になる前提で考えましょう。

IFERRORでエラーをまとめて処理する

形式がそろっていないデータを扱うなら、IFERROR関数で包んでおくと表が見やすくなります。

=IFERROR(IMCSC(A2), "入力を確認")

ただしIFERRORは、#NUM! も #N/A もまとめて置き換えてしまいます。原因を探したいときは、いったんIFERRORを外して元のエラーを確認するのがおすすめです。

よくある質問

IMCSCとIMCSCHの違いは?

IMCSCは正弦 sin の逆数、IMCSCHは双曲線正弦 sinh の逆数を返します。関数名は1文字違うだけですが、計算する内容は別物。双曲線余割を求めたい場合は、IMCSCH関数の使い方を参照してください。

Excelでも使える?

Excelにも同じ名前のIMCSC関数があり、=IMCSC(複素数) という同じ書き方で使えます。ただし前の節のとおり、論理値を渡したときのエラーの説明は異なるので注意しましょう。

Excelでの使い方は、ExcelのIMCSC関数の解説にまとめています。

虚数単位にjを使える?

使えますよ。「”1+1j”」のように小文字の j で書けば、i と同じく複素数として読み取られます。大文字の J は #NUM! になるため、入力が大文字になっていないか確認してみてください。

角度を度で渡すには?

RADIANS関数で度をラジアンに変換してから渡します。たとえば30°の余割を求める数式はこちら。

=IMCSC(RADIANS(30))

結果は 1/sin(30°) で、およそ2になります。浮動小数点で計算するため、末尾にごくわずかな誤差が出る場合もあるでしょう。

まとめ

スプレッドシートのIMCSC関数は、複素数の余割(コセカント)=1/sin(z) を1関数で求められる関数です。最後にポイントを振り返っておきましょう。

  • 構文は =IMCSC(複素数)。文字列・セル参照・COMPLEX関数・数値を渡せる
  • 戻り値は「a+bi」形式の文字列で、+ で数値を足すと #VALUE! になる
  • 数値として使うときは、IMREAL・IMAGINARYで実部と虚部を取り出す
  • =IMDIV(1, IMSIN(z)) と見比べれば、定義どおりか検算できる
  • 半角スペースは空白なしと同じ値になる
  • 全角文字・大文字の I / J・論理値は #NUM! になる
  • エラー値を渡すと、そのエラー(#N/A など)がそのまま返る
  • 論理値の扱いは、Excelの公式説明(#VALUE!)と結果が異なる

迷ったときは、エラーの早見表と IMDIV での検算を思い出してみてください。複素数の三角関数をまとめて扱うなら、IMSIN・IMSEC・IMCOT の記事もあわせて読むと理解が深まりますよ。

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