「複素数の双曲線余割 csch(z) をスプレッドシートでサッと出したい」というとき、IMCSCH関数の出番です。波動や信号の減衰を扱う計算で sinh の逆数が必要になる場面、地味にありますよね。
このIMCSCHはExcelには存在せず、Googleスプレッドシート独自の関数です。今回は構文から基本例、応用、エラー対処、関連関数との違い、最後によくある質問までひととおり確認していきましょう。
スプレッドシートのIMCSCH関数とは?
IMCSCH関数は、複素数 z の双曲線余割 csch(z) を計算する関数です。
数学的な定義はシンプルで、双曲線正弦の逆数として表せます。
csch(z) = 1 / sinh(z)
実数 x に対しては 2 / (e^x - e^-x) という形になります。IMSINH が「指数関数の差」で大きく振れる関数なのに対し、csch はその逆数なので z の絶対値が大きいほどゼロに近づくふるまいになります。逆に z が 0 や πi の整数倍に近づくほど、値が無限大に発散していくのが特徴です。
双曲線余割の数学的な背景
複素数 z = a + bi に対して、csch(z) の実部と虚部は次の式で表されます。
Re[csch(a+bi)] = -2 sinh(a) cos(b) / (cosh(2a) - cos(2b))
Im[csch(a+bi)] = 2 cosh(a) sin(b) / (cosh(2a) - cos(2b))
実際にはこの式を手入力する必要はなく、IMCSCH関数が自動で計算してくれますが、エラーになる条件を理解するために覚えておくと便利です。分母 cosh(2a) - cos(2b) がゼロになるのは a=0 かつ b = nπ のとき(つまり z = nπi のとき)なので、この点で #NUM! エラーが発生するとわかります。
構文
IMCSCH(数値)
引数の「数値」には、双曲線余割を求めたい複素数を指定します。書き方は2通りです。
- 文字列で渡す:
"1+2i"や"3-4j"のように虚数単位iまたはjを含む文字列 - 実数で渡す:
1や2.5のように虚数部がゼロの数値
戻り値は “x+yi” 形式の文字列で返ります。表示は文字列ですが、IMREAL や IMAGINARY、IMABS などの複素数関数にそのまま渡せるので扱いやすいです。
NOTE
IMCSCH関数は Excelには存在しません。Googleスプレッドシート独自の関数なので、Excel互換のシートで使う場合は IMDIV と IMSINH を組み合わせて代用しましょう。
IMCSCH関数の基本的な使い方
それでは実際のセルに入力してみましょう。

実数を渡す場合
虚数部がゼロの複素数(実数)を渡すと、csch(x) の実数値が返ります。
=IMCSCH(1)
結果は 0.850918128239322 です。これは csch(1) = 1/sinh(1) の値ですね。実数で返ってきますが、念のため IMREAL を通しておくと安心です。

ほかにもいくつか試してみると、ふるまいがつかみやすいですよ。
| 入力 | 戻り値 | 補足 |
|---|---|---|
=IMCSCH(0.5) | 1.91903475133494 | csch(0.5) |
=IMCSCH(1) | 0.850918128239322 | csch(1) |
=IMCSCH(2) | 0.275720564771783 | csch(2) |
=IMCSCH(3) | 0.0998215696688227 | csch(3) |
x が大きくなるほど値が急速にゼロへ近づいていくのが分かります。

文字列で複素数を渡す場合
虚数部を持つ複素数は、ダブルクォートで囲んだ文字列として渡します。
=IMCSCH("1+1i")
!_images/spreadsheet-imcsch-function/04_formula_imcsch-complex.png
結果は 0.303931001628637-0.621518017170428i 前後の値になります。1+i における csch の実部と虚部がきちんと返ってきます。
純虚数を渡す場合
実部がゼロの純虚数も渡せます。
=IMCSCH("1i")
数学的には csch(iy) = -i・csc(y) という関係があるので、実部はほぼゼロ、虚部に csc(1) を符号反転した値が入ります。複素数版の csch と、実数版の csc の関係が見える例です。
“j”形式も受け付ける
虚数単位を j で書きたいときも問題ありません。
=IMCSCH("1+1j")
"1+1i" と同じ計算結果が返ります。シート全体で j か i のどちらかに統一しておくと混乱しません。
COMPLEX関数と組み合わせる
COMPLEX関数で複素数を作ってからIMCSCHに渡すと、実部と虚部をセル参照で動的に切り替えられます。
=IMCSCH(COMPLEX(A2, B2))
A2 に実部、B2 に虚部を入力すれば、値を変えるたびに csch が自動更新されます。パラメータ解析や感度分析のシートではこの書き方が定番ですよ。
!_images/spreadsheet-imcsch-function/05_formula_imcsch-complex-function.png
IMCSCH関数の応用例
基本が分かったところで、実用的な使い方をいくつか見ていきます。
csch(z) = 1 / sinh(z) を検算する
定義どおり、IMSINH の逆数(IMDIV で1を割った値)と一致するかを確認できます。
=IMDIV(1, IMSINH("1+1i"))
これは =IMCSCH("1+1i") と同じ値を返します。授業のレポートや業務での検算にちょうどよい使い方です。
IMCSCHとIMSINHは互いに逆数
双曲線余割は双曲線正弦の逆数なので、掛け算すると1になるはずです。
=IMPRODUCT(IMCSCH("1+1i"), IMSINH("1+1i"))
結果は "1" または微小な誤差を含む "1+1.1e-16i" のような値になります。浮動小数点誤差の範囲で1になることが確認できますね。
実部と虚部を別々のセルに取り出す
csch(z) の値を後段の計算で使うなら、IMREAL と IMAGINARY で分解しておくと便利です。
| セル | 数式 | 内容 |
|---|---|---|
| A1 | =IMCSCH("1+1i") | csch(1+i) |
| B1 | =IMREAL(A1) | 実部 |
| C1 | =IMAGINARY(A1) | 虚部 |
| D1 | =IMABS(A1) | 絶対値 |
A1で計算した結果をB1〜D1で展開する形です。スプレッドシートの表形式と相性のよい使い方ですよ。
伝送線路の電流分布シミュレーション
伝送線路の電流分布を計算するとき、伝搬定数 γ と位置 x を用いた式に双曲線関数が登場します。終端オープンの線路では電流がゼロになるので、その逆数として csch が式に現れることがあります。スプレッドシートで各位置の電流を数値で確認したいときは、次のような形で使えます。
A列: 位置パラメータ(複素数)
B列: =IMCSCH(A2) ← 各位置でのcsch値
オートフィルで行を広げれば一覧表が出来上がります。正確な伝送線路の計算式は使用モデルに依存しますが、複素双曲線関数を組み合わせる土台として活用できます。
双曲線関数の対称性を確認する
csch は奇関数なので、csch(-z) = -csch(z) が成り立ちます。スプレッドシートで確認する式はこうなります。
=IMSUB(IMCSCH("1+1i"), IMNEG(IMCSCH("-1-1i")))
結果がゼロに近い値になれば、奇関数の性質が確認できます。複素数関数の学習教材や数値計算の信頼性チェックに役立てられますよ。
複数の複素数をまとめて変換する
複素数の一覧表に対して、ARRAYFORMULA との組み合わせは効きません(IMCSCH は配列対応していない)。代わりに、行ごとに =IMCSCH(A2) のようにオートフィルで広げる形が現実的です。値の表を作って一括で双曲線余割を求めたいときは、列に1個ずつ式を貼る運用が無難ですね。
IMCSCH関数でよくあるエラーと対処法
IMCSCH関数を使っていると、いくつかのエラーに出会うことがあります。原因と対処をまとめておきましょう。
| エラー | 主な原因 | 対処方法 |
|---|---|---|
| #NUM! | 引数が0、または z = nπi(sinh(z) = 0 の点) | 0や πi の整数倍を避ける |
| #VALUE! | 複素数として解釈できない文字列 | 虚数単位は i か j のみ。"1+1k" などはNG |
| #N/A | 引数の数が不正 | IMCSCH(数値) の1引数を必ず指定 |
#NUM! エラー: csch(0) は計算できない
数学的に csch(z) は sinh(z) = 0 となる点で定義されません。一番ありがちなのが z = 0 のケースです。
=IMCSCH(0)
これは #NUM! を返します。sinh(0) = 0 で1を割ろうとしてゼロ除算になるからですね。同じ理由で "0+πi" のような π の整数倍の純虚数も極になるので、計算前に z の値を確認しておきましょう。

#VALUE! エラー: 虚数単位は i か j
虚数単位として認識されるのは i と j だけです。それ以外の文字を使うと #VALUE! になります。
=IMCSCH("1+1k") → #VALUE!
=IMCSCH("1+1i") → 正常
& 演算子で文字列を組み立てる場合は、虚数単位を間違えないように注意してくださいね。
IFERROR で安全側に倒す
参照元に 0 や πi 近傍の値が混じる可能性があるなら、IFERROR で包んで空欄や注意書きを返すと表が崩れません。
=IFERROR(IMCSCH(A2), "計算不可")
集計表で1セルだけエラー表示になって全体が見づらくなるのを防げます。
IMCSCH関数と関連関数の違い
似た名前の関数との違いを整理しておきます。混同しやすいポイントです。
| 関数 | 計算内容 | 数式 | リンク |
|---|---|---|---|
| IMCSCH | 双曲線余割 | csch(z) = 1/sinh(z) | 本記事 |
| IMSINH | 双曲線正弦 | sinh(z) = (e^z – e^-z)/2 | 関連記事 |
| IMSECH | 双曲線正割 | sech(z) = 1/cosh(z) | 関連記事 |
| IMCOSH | 双曲線余弦 | cosh(z) = (e^z + e^-z)/2 | 関連記事 |
| IMCOTH | 双曲線余接 | coth(z) = cosh(z)/sinh(z) | 関連記事 |
| IMCSC | 余割(三角関数) | csc(z) = 1/sin(z) | 関連記事 |
特に注意したいのが IMCSC と IMCSCH の違いです。H がつくと双曲線関数、つかないと普通の三角関数になります。1文字違いで意味が全く変わるので、入力時に必ず確認しましょう。
双曲線関数ファミリーの全体像
複素双曲線関数は6種類のセットになっています。IMSINHとIMCOSHが「基本形」で、残り4つはそれらの組み合わせや逆数として定義されます。
| グループ | 基本形 | 逆数形 |
|---|---|---|
| 正弦系 | IMSINH(sinh) | IMCSCH(csch = 1/sinh) |
| 余弦系 | IMCOSH(cosh) | IMSECH(sech = 1/cosh) |
| 接線系 | IMTANH(tanh) | IMCOTH(coth = 1/tanh) |
IMCSCH は「sinh の逆数」として正弦系グループに属します。この対応関係を覚えておくと、どの関数を使うべきか迷ったときにすぐ判断できますよ。
IMCSCH関数に関するよくある質問
IMCSCHを使っていて出やすい疑問をQ&A形式でまとめます。
Q1. IMCSCH と IMCSC はどう違いますか?
H の有無で意味が変わります。IMCSCH は双曲線余割 csch(z) = 1/sinh(z)、IMCSC は三角関数の余割 csc(z) = 1/sin(z) です。実数 x を渡しても、IMCSCH(1) ≒ 0.85、IMCSC(1) ≒ 1.19 のように結果がまったく違うので、用途に応じて使い分けましょう。
Q2. ExcelでIMCSCHを使いたい場合はどうすればいいですか?
ExcelにはIMCSCHが存在しないので、IMSINHとIMDIVを組み合わせて代用します。具体的には =IMDIV(1, IMSINH(A1)) という形ですね。Googleスプレッドシートで作ったシートをExcelに移植する場合は、この式に書き換えてください。
Q3. 結果が 1.23e-17i のような極小値になりますがバグですか?
バグではなく、浮動小数点演算による丸め誤差です。たとえば実数 1 を渡したら本来は実数値だけのはずですが、内部計算の都合で虚部に 10^-16 オーダーの数値が残ることがあります。気になる場合は、=IMREAL(IMCSCH(A1)) で実部だけを抜き出すか、=ROUND(...,10) で適切な桁に丸めると見た目がきれいになりますよ。
Q4. セル参照で複素数を渡すことはできますか?
できます。セルに複素数が入っていれば =IMCSCH(A1) のようにそのまま参照できます。ただしセルの値が文字列(例: 1+1i)か数値(例: 1)かによって、返ってくる値の型が変わることに注意してください。複素数を文字列として格納している場合は問題なく動作しますよ。なお COMPLEX関数 で生成した複素数もそのまま渡せます。
Q5. IMCSCH と IMCOTH の違いを教えてください
IMCSCH(双曲線余割)は sinh の逆数、IMCOTH(双曲線余接)は tanh の逆数です。式で書くと csch(z) = 1/sinh(z)、coth(z) = cosh(z)/sinh(z) = 1/tanh(z) になります。どちらも sinh が分母にありますが、IMCOTH には cosh も含まれている点が違います。たとえば z=1 のとき IMCSCH(1) ≒ 0.851、IMCOTH(1) ≒ 1.313 と異なる値になりますよ。
まとめ
スプレッドシートのIMCSCH関数について、ポイントを振り返ります。
- IMCSCH は複素数の双曲線余割 csch(z) を求める関数で、構文は
IMCSCH(数値) - Excelには存在しない、スプレッドシート独自の関数
- 戻り値は “x+yi” 形式の文字列。IMREAL や IMAGINARY で分解できる
- csch(0) や z = nπi は極なので
#NUM!になる - IMCSC(三角関数)と IMCSCH(双曲線)の
Hの有無に注意 - COMPLEX関数と組み合わせることでセル参照から動的に計算できる
複素数の csch を使う場面は限られますが、いざというときスプレッドシート1枚で完結できるのは便利ですよね。IMSINH・IMSECH・IMCOTH など関連関数とあわせて、必要なときに引ける形にしておきましょう。
