「複素数の双曲線余接 coth(z) をスプレッドシートで計算したい」というとき、IMCOTH関数がぴったりです。電気回路の伝送線理論や制御工学のレポートで coth(γL) のような式を扱うとき、いちいち実部・虚部に分けて手計算する手間が一気に省けます。
ところがこのIMCOTH、ExcelにはなくてGoogleスプレッドシートだけにある関数なんです。検索で「Excel IMCOTH」と探しても出てこないのは、関数自体が用意されていないからですね。この記事では、構文と引数の基本から、i 形式と j 形式の使い分け、Excelで同じ計算をしたいときの代用式、IMCOT との見分け方、極(特異点)で #NUM! になる理由まで、IMCOTH関数の使い方を完全網羅で解説します。
- スプレッドシートのIMCOTH関数とは?Excelには無い複素双曲線関数
- スプレッドシートのIMCOTH関数の書式と引数の渡し方
- スプレッドシートのIMCOTH関数の使い方①|実数を渡して coth(x) を計算する
- スプレッドシートのIMCOTH関数の使い方②|複素数(i 形式・j 形式)を渡す
- スプレッドシートのIMCOTH関数の使い方③|純虚数 iy で cot(y) を逆算する
- スプレッドシートのIMCOTH関数の応用|検算・分解・逆数チェック
- Excelで IMCOTH を使いたいとき|IMDIV + IMCOSH + IMSINH の代用式
- スプレッドシートのIMCOTH関数のよくあるエラーと対処法
- IMCOTH と関連関数(IMCOT・IMTANH・IMCOSH・IMSINH)の違いを整理
- スプレッドシートのIMCOTH関数 よくある質問(FAQ)
- まとめ
スプレッドシートのIMCOTH関数とは?Excelには無い複素双曲線関数
IMCOTH関数は、複素数 z の双曲線余接 coth(z) を計算する関数です。GoogleスプレッドシートのENGINEERING(工学)カテゴリに属する複素数関数のひとつで、伝送線理論や分布定数回路の計算で重宝します。
数学的な定義はシンプルで、双曲線余弦と双曲線正弦の商として定義されます。
coth(z) = cosh(z) / sinh(z) = (e^z + e^-z) / (e^z - e^-z)
実数 x なら (e^x + e^-x) / (e^x - e^-x) という形になり、|x| が大きくなると ±1 に漸近します。複素数になると周期性(虚数方向に π の周期)が加わるのが特徴です。
Excelには搭載されていない点に注意
IMCOTH関数の最大の注意点は、Microsoft Excel には存在しない関数だということです。2026年現在、Microsoft 365 の Excel でも IMCOTH は搭載されていません。IMCOSH や IMSINH はExcelにもありますが、IMCOTH と IMCOT は Googleスプレッドシート独自の関数です。
Excelで同じ計算をしたい場合は、後述する IMDIV(IMCOSH, IMSINH) の代用式を使う必要があります。両環境で同じワークブックを共有する場面では、最初から代用式で書いておくと移植時にトラブルになりません。
IMCOTHが活躍する場面
複素数の coth が現れる代表的なシーンは次のとおりです。
- 伝送線理論: 分布定数回路の特性インピーダンス
Z_in = Z_0 · coth(γL)で coth(複素数) が出る - 制御工学: 伝達関数のラプラス領域での安定性解析
- 熱伝導の振動解析: フィン効率を複素周波数領域で扱うとき
- 量子統計: ボーズ・アインシュタイン分布の温度依存項
学部レベルの電磁気・電気回路のレポートでも coth(jωL/c) のような式が普通に出てくるので、複素数のまま一発で計算できるIMCOTHは地味に助かります。
スプレッドシートのIMCOTH関数の書式と引数の渡し方
書式は1引数だけのシンプルな形です。
=IMCOTH(数値)
| 引数 | 内容 | 入力例 |
|---|---|---|
| 数値 | 双曲線余接を求めたい複素数 | "1+2i" / "3-4j" / 1.5 |
引数の「数値」には、2通りの書き方ができます。
- 文字列で複素数を渡す:
"1+2i"や"3-4j"のように、虚数単位iまたはjを使った文字列をダブルクォートで囲む - 実数を直接渡す:
1や2.5のように、虚数部がゼロの数値(数値リテラルまたはセル参照)
戻り値は “x+yi” 形式の文字列で返ってくる点に注意してください。例えば =IMCOTH("1+1i") の結果は 0.868014142895925-0.217621561854403i という文字列です。表示は文字列ですが、IMREAL・IMAGINARY・IMABS・IMDIV などの複素数関数にそのまま渡せるので、後段の計算で困ることはありません。
i と j は入力に合わせて返る
入力で j を使うと戻り値も j で、i を使うと i で返ります。
=IMCOTH("1+1i") → 0.868014142895925-0.217621561854403i
=IMCOTH("1+1j") → 0.868014142895925-0.217621561854403j
注意: シート内で i と j を混在させると、IMPRODUCT や IMDIV で #NUM! になります。電気工学の慣習で j を使うなら全体で j に統一しましょう。
実数を渡したときは実数で返る
虚数部が 0 の純粋な実数を渡したときは、文字列ではなく実数で返ります。
=IMCOTH(1) → 1.31303528549933(数値型)
この値はそのまま四則演算に使えるので、実部だけ欲しい場面ではこちらが手早いです。
スプレッドシートのIMCOTH関数の使い方①|実数を渡して coth(x) を計算する
まずは一番シンプルな実数の双曲線余接から見ていきましょう。虚数部がゼロの実数を渡すと、おなじみの coth(x) = (e^x + e^-x) / (e^x – e^-x) の値が返ります。
=IMCOTH(1) → 1.31303528549933
=IMCOTH(2) → 1.03731472072755
=IMCOTH(0.5) → 2.16395341373865
=IMCOTH(-1) → -1.31303528549933
実数 x が大きくなるほど coth(x) は 1 に漸近し、x が 0 に近づくほど発散していきます。負の x では奇関数なので符号が反転します。
熱伝導のフィン効率計算で使う
熱交換器のフィン効率は実数の coth で書けることが多く、η = tanh(mL) / (mL) や η = coth(mL) - 1/(mL) のような形が登場します。
m = 5
L = 0.1
=IMCOTH(m * L) - 1/(m * L) → 約 0.165
実数を渡す限り IMCOTH の戻り値は数値型なので、四則演算でそのまま使えます。
スプレッドシートのIMCOTH関数の使い方②|複素数(i 形式・j 形式)を渡す
複素数の coth を計算するときは、ダブルクォートで囲んだ文字列として渡します。これがIMCOTHの本領発揮シーンです。
=IMCOTH("1+1i") → 0.868014142895925-0.217621561854403i
=IMCOTH("2+3i") → 1.03574663776499+0.011822010379891i
=IMCOTH("0.5-1i") → 0.534466577660119+1.12832009325947i
戻り値は実部と虚部を含む複素数の文字列形式です。物理学の慣習で虚数単位を i で書くならこのまま、電気工学で j を使うなら下のように書きます。
=IMCOTH("1+1j") → 0.868014142895925-0.217621561854403j
i と j は混ぜずに統一する
シート内で扱う複素数の虚数単位は、i か j のどちらかに統一するのが鉄則です。
=IMPRODUCT("1+1i", "2+1j") → #NUM! ※ i と j が混在
=IMPRODUCT("1+1i", "2+1i") → 1+3i ※ 統一されているのでOK
セル参照で組み立てるときは、最初にユーザー入力をフォーマット関数で i に統一しておくと事故が減ります。たとえば =SUBSTITUTE(A1, "j", "i") で前処理しておく方法です。
スプレッドシートのIMCOTH関数の使い方③|純虚数 iy で cot(y) を逆算する
実部がゼロの純虚数 z = iy を渡すと、coth(iy) = -i · cot(y) という三角関数の余接が顔を出します。これは複素関数論で知られる関係です。
=IMCOTH("1i") → 約 4.4E-17 - 0.642092615934331i
実部がほぼゼロ(浮動小数点誤差レベル)、虚部に -cot(1) = -0.6420926... が入ります。-cot(1) = -cos(1)/sin(1) = -0.5403/0.8415 ≒ -0.6421 とぴったり一致しますね。
この関係を使うと、三角関数の cot を coth から逆算することもできます。
=IMAGINARY(IMCOTH("1i")) * -1 → 0.642092615934331(cot(1) の値)
複素関数論の演習や、三角関数と双曲線関数の対応関係を確認したいときに便利です。
スプレッドシートのIMCOTH関数の応用|検算・分解・逆数チェック
ここからは複素数 coth を実務で使うときに役立つ応用パターンを紹介します。
coth(z) = cosh(z) / sinh(z) を検算する
数学的定義どおり、IMCOSH と IMSINH の商と IMCOTH の値が一致するかを確かめられます。
=IMDIV(IMCOSH("1+1i"), IMSINH("1+1i"))
=IMCOTH("1+1i")
両者は同じ値(0.868014142895925-0.217621561854403i)を返します。授業のレポートや業務での検算、Excel互換シートでの代用式テストに使えます。
IMCOTH と IMTANH は互いに逆数
双曲線余接は双曲線正接の逆数なので、掛け算すると 1 になるはずです。
=IMPRODUCT(IMCOTH("1+1i"), IMTANH("1+1i")) → "1" または "1+1.1E-16i"
結果は厳密に 1 または微小な浮動小数点誤差を含む 1+1.1E-16i のような値になります。複素関数のライブラリ実装をチェックするときの定番テストです。
実部・虚部・絶対値を別セルに取り出す
複素数の coth を後段の計算で使うときは、IMREAL・IMAGINARY・IMABS で分解しておくと表計算と相性がよくなります。
| セル | 数式 | 内容 | 例(z=1+i) | ||
|---|---|---|---|---|---|
| A1 | =IMCOTH("1+1i") | coth(1+i) | 0.868014142895925-0.217621561854403i | ||
| B1 | =IMREAL(A1) | 実部 Re(coth(z)) | 0.868014142895925 | ||
| C1 | =IMAGINARY(A1) | 虚部 Im(coth(z)) | -0.217621561854403 | ||
| D1 | =IMABS(A1) | 絶対値 | coth(z) | 0.894855675945458 | |
| E1 | =DEGREES(IMARGUMENT(A1)) | 偏角(度) | -14.07... |
伝送線の入力インピーダンス計算では、最終的に振幅と位相に分解したい場面が多いので、この5項目セットでまとめておくとレポートが書きやすくなります。
Excelで IMCOTH を使いたいとき|IMDIV + IMCOSH + IMSINH の代用式
Excel には IMCOTH が無いため、Excel互換のシートで同じ計算をしたいときは IMDIV と IMCOSH と IMSINH の3関数で代用します。
=IMDIV(IMCOSH(A1), IMSINH(A1))
A1 に "1+1i" を入れておくと、IMCOTH と同じ 0.868014142895925-0.217621561854403i が返ります。IMDIV・IMCOSH・IMSINH はいずれも Excel と Sheets の両方に存在するので、両環境で動く汎用式になります。
代用式を関数化(LAMBDA)して再利用
Googleスプレッドシートの LAMBDA を使えば、Excelに無いIMCOTH相当を自作関数として定義できます。
=LAMBDA(z, IMDIV(IMCOSH(z), IMSINH(z)))("1+1i")
名前付き関数(メニュー: データ → 名前付き関数)に登録すれば、=MYIMCOTH("1+1i") のような形でシート全体から呼び出せます。Excel互換のロジックをひとつにまとめておくと、後でExcelに移植するときの差し替えが楽になります。
代用式の極での挙動
数学的には coth は z = nπi で発散しますが、代用式の場合は IMSINH(z) が 0 を返した時点で IMDIV が #DIV/0! を返します。IMCOTH 本体が返す #NUM! とは別のエラーになる点だけ覚えておきましょう。
=IMDIV(IMCOSH(0), IMSINH(0)) → #DIV/0!
=IMCOTH(0) → #NUM!
挙動の違いはありますが、どちらも「計算不能」を意味する点では同じです。
スプレッドシートのIMCOTH関数のよくあるエラーと対処法
IMCOTH関数を使っていると、いくつかのエラーに遭遇します。原因と対処をまとめておきましょう。
| エラー | 主な原因 | 対処方法 |
|---|---|---|
#NUM! | 引数が極(z = nπi)に該当(0, ±πi, ±2πi…) | 0 や πi の整数倍を避ける |
#VALUE! | 複素数として解釈できない文字列 | 虚数単位は i か j のみ。スペース混入もNG |
#N/A | 引数の個数が0または2以上 | IMCOTH(数値) の1引数を必ず指定 |
#NUM!(IMPRODUCT等で) | i と j の混在 | シート全体で虚数単位を統一する |
#NUM! エラー: coth(0) と coth(nπi) は計算できない
数学的に coth(z) は sinh(z) = 0 となる点で定義されません。これを極(特異点)と呼びます。実数領域では最も身近なのが z = 0 のケースです。
=IMCOTH(0) → #NUM!
=IMCOTH("0+3.14159265i") → #NUM!(z ≒ πi)
=IMCOTH("0+6.28318530i") → #NUM!(z ≒ 2πi)
これは sinh(0) = sinh(πi) = sinh(2πi) = 0 でゼロ除算になるためです。極の近傍でも数値計算の精度が落ちるので、z = (1E-10) + (πi - 1E-9)i のような際どい値では #NUM! ではなく非常に大きな数値が返ることもあります。
物理計算で z が極の近くに来る場合は、近似展開(ローラン展開)に切り替えて手計算するのが安全です。
#VALUE! エラー: 虚数単位は i か j
虚数単位として認識されるのは i と j だけです。それ以外の文字や、半角・全角の混在、余分なスペースが入ると #VALUE! になります。
=IMCOTH("1+1k") → #VALUE!(k は虚数単位ではない)
=IMCOTH("1 + 1i") → #VALUE!(スペースが入っている)
=IMCOTH("1+1I") → #VALUE!(全角の I)
=IMCOTH("1+1i") → 正常
セル参照で文字列を組み立てているなら、TRIM や SUBSTITUTE で全角を半角に置換しておくと事故が減ります。
=IMCOTH(SUBSTITUTE(TRIM(A1), "I", "i"))
#NUM! エラー: i と j の混在
入力時の虚数単位は混ぜずに統一しましょう。
=IMPRODUCT(IMCOTH("1+1i"), IMTANH("1+1j")) → #NUM!
=IMPRODUCT(IMCOTH("1+1i"), IMTANH("1+1i")) → 約 "1"
電気工学(j)と物理(i)の慣習が混在するチームでは、入力時に SUBSTITUTE で統一する運用ルールを決めておくと安心です。
IMCOTH と関連関数(IMCOT・IMTANH・IMCOSH・IMSINH)の違いを整理
IM系の三角・双曲線関数は名前が似ているので混乱しがちです。「H」がつくか・「CO」がつくか・分子分母どちらかの3軸で整理しましょう。
| 関数 | 計算内容 | 定義式 | Excel搭載 |
|---|---|---|---|
| IMCOTH | 双曲線余接 | coth(z) = cosh(z)/sinh(z) | × |
| IMTANH | 双曲線正接 | tanh(z) = sinh(z)/cosh(z) | × |
| IMCOSH | 双曲線余弦 | cosh(z) = (e^z + e^-z)/2 | ○ |
| IMSINH | 双曲線正弦 | sinh(z) = (e^z – e^-z)/2 | ○ |
| IMCOT | 余接(三角) | cot(z) = cos(z)/sin(z) | × |
| IMTAN | 正接(三角) | tan(z) = sin(z)/cos(z) | × |
| IMCOS | 余弦(三角) | cos(z) | ○ |
| IMSIN | 正弦(三角) | sin(z) | ○ |
IMCOT と IMCOTH の見分け方
特に取り違えやすいのが IMCOT と IMCOTH です。たった1文字 H の違いですが、意味は完全に別物です。
| 比較項目 | IMCOT | IMCOTH |
|---|---|---|
| 種類 | 三角関数(cot) | 双曲線関数(coth) |
| 定義 | cos(z)/sin(z) | cosh(z)/sinh(z) |
| 周期 | π(実軸方向) | iπ(虚軸方向) |
| 実数 x の値域 | (-∞, ∞) | (1, ∞) または (-∞, -1) |
=IM???(1) の値 | 0.642… | 1.313… |
=IMCOT(1) は 0.642092615934331、=IMCOTH(1) は 1.31303528549933 と全く違う値が返ります。数式入力時に必ず確認する習慣をつけましょう。
逆数ペア・商ペアの関係
IM系の関数は互いに数式で結ばれているので、暗記しなくても下の関係をひとつ覚えておけば導けます。
- 逆数ペア: IMCOTH = 1 / IMTANH、IMCOT = 1 / IMTAN
- 商ペア: IMCOTH(z) = IMCOSH(z) / IMSINH(z)、IMCOT(z) = IMCOS(z) / IMSIN(z)
- 三角↔双曲線: cot(iy) · i = -coth(y)、coth(iy) · i = -cot(y)
関連記事として、IMCOSH関数(複素数の双曲線余弦)、IMSINH関数(複素数の双曲線正弦)、IMTANH関数(複素数の双曲線正接)、IMCOT関数(複素数の余接)、IMCOS関数(複素数の余弦)、IMDIV関数(複素数の除算)、IMPRODUCT関数(複素数の乗算)、IMREAL関数(実部)、IMAGINARY関数(虚部)、IMABS関数(絶対値)、COMPLEX関数(複素数の生成) もあわせて確認しておくと、複素数関数まわりがすっきり整理できます。
スプレッドシートのIMCOTH関数 よくある質問(FAQ)
Q1. IMCOTHはExcelでも使えますか?
使えません。Microsoft 365 Excel でも IMCOTH は搭載されていません(2026年現在)。IMCOSH や IMSINH はExcelにありますが、IMCOTH と IMCOT は Googleスプレッドシート専用です。Excelで同じ計算をしたいときは =IMDIV(IMCOSH(A1), IMSINH(A1)) の代用式を使ってください。
Q2. 戻り値が文字列なのが扱いづらいです。実部だけ数値で欲しいときは?
IMREAL関数で実部だけ取り出せます。
=IMREAL(IMCOTH("1+1i")) → 0.868014142895925(数値型)
虚部だけなら =IMAGINARY(IMCOTH("1+1i"))、絶対値なら =IMABS(IMCOTH("1+1i")) です。文字列のまま扱うのが面倒なときは、最初に実部・虚部の2列に分解してしまうのがおすすめです。
Q3. 複素数の coth って実務でいつ使うの?
代表例は伝送線理論の特性インピーダンス計算です。終端開放の伝送線の入力インピーダンスは Z_in = Z_0 · coth(γL) で表され、伝搬定数 γ = α + jβ が複素数なので coth の引数も複素数になります。他にも分布定数回路・制御系の安定性解析・量子統計の温度依存項などで顔を出します。
Q4. coth(z) の結果が無限大に飛びました。バグですか?
バグではなく極(特異点)の挙動です。coth(z) は z = nπi(n は整数)で発散します。z = 0 はもちろん、"0+3.14159265i"(≒πi)や "0+6.28318530i"(≒2πi)でも #NUM! になります。極の近傍では数値計算の精度が落ちるので、物理計算で z が極の近くに来る場合は近似展開(ローラン展開)を使うのが安全です。
Q5. 入力で i と j が混在するとなぜ #NUM! になりますか?
スプレッドシートの複素数関数は、シリアライズされた文字列形式(”x+yi” または “x+yj”)の i/j を見て複素数として解釈します。IMPRODUCT("1+1i", "2+1j") のように虚数単位が違うと、ライブラリ側で「同じ複素数体での演算ではない」と判定して #NUM! を返す仕様です。シート全体で i か j のどちらかに統一しましょう。
Q6. coth(z) の周期性を確かめたいです
coth(z) は虚数方向に周期 iπ を持ちます。確かめてみましょう。
=IMCOTH("1+1i") → 0.868014142895925-0.217621561854403i
=IMCOTH("1+4.14159265i") → 0.868014142895925-0.217621561854403i(≒ 1+1i+πi)
実部はそのまま、虚部に π を足した値で同じ結果になります。三角関数の cot が実軸方向に π の周期を持つのと対応関係にある現象です。
まとめ
GoogleスプレッドシートのIMCOTH関数について、ポイントを振り返ります。
- IMCOTH は複素数の双曲線余接 coth(z) = cosh(z)/sinh(z) を求める関数で、構文は
IMCOTH(数値) - Excelには存在しない、Googleスプレッドシート独自の関数。Excel互換が必要なら
=IMDIV(IMCOSH(z), IMSINH(z))で代用する - 戻り値は “x+yi” 形式の文字列。IMREAL・IMAGINARY・IMABS で分解可能。実数引数なら数値型で返る
- 虚数単位は
iとjのどちらでも可だが、シート内で必ず統一する(混在は#NUM!の原因) - 極(z = 0, ±πi, ±2πi, …)では
#NUM!になる。これは数学的に発散する点で、極の近傍では数値精度も落ちる - IMCOT(三角関数)と IMCOTH(双曲線関数)は
H1文字違いで全く別物。値も周期もまったく異なるので入力時に必ず確認
複素数の coth が必要になる場面は限られますが、伝送線理論や制御系の安定性解析で出くわしたとき、スプレッドシート1枚で完結できるのは大きな助けになります。関連する IMCOSH・IMSINH・IMTANH・IMCOT も合わせて引ける形にしておくと、複素関数の計算が一気にスムーズになります。
