ExcelやGoogleスプレッドシートで複素数の双曲線余弦 cosh(z) を計算したいときに使うのが、IMCOSH関数です。実数だけならEXP関数とPOWER関数を組み合わせれば求められますが、複素数(例: 1+2i)になると手計算は一気に大変になりますよね。
IMCOSH関数を使えば、=IMCOSH("1+2i") のように1行書くだけで複素数の双曲線余弦が返ってきます。電気回路の伝送線路解析、信号処理のフィルタ設計、波動方程式のシミュレーションなど、複素数を扱うあらゆる実務シーンで重宝する関数です。
この記事では、IMCOSH関数の基本構文から実数・複素数・純虚数の渡し方まで解説します。IMSINHやIMCOTHとの組み合わせ検算、#VALUE!エラーの対処、IM系関数の違いも丸ごとカバーしています。「i」と「j」の使い分けでハマりやすいポイントも具体例付きで紹介しますので、最後まで読めば実務で迷うことはなくなりますよ。
ExcelのIMCOSH関数とは?複素数の双曲線余弦を求める
IMCOSH関数は、指定した複素数 z の双曲線余弦 cosh(z) を返すエンジニアリング関数です。Excelでの読み方は「イマジナリー・ハイパボリック・コサイン」です。関数名の頭に付く「IM」は虚数(Imaginary)を意味するIM系関数共通の接頭辞です。
数学的な定義は次の式のとおりです。
cosh(z) = (e^z + e^(-z)) / 2
z が実数 x のときは通常のハイパボリックコサインと同じ値を返します。z が複素数 x+yi のときは、オイラーの公式と組み合わせると次のように展開できます。
cosh(x+yi) = cosh(x)·cos(y) + i·sinh(x)·sin(y)
この式は実数の cosh/sinh と通常の cos/sin だけで構成されています。ただし手計算で毎回展開するのは非効率です。IMCOSH関数を使えば、引数に文字列で "1+2i" を渡すだけで答えが返ってきます。
IMCOSH関数の主な用途
複素数の双曲線余弦は、次のような場面で頻繁に登場します。
- 電気回路の伝送線路方程式(特性インピーダンス・伝搬定数)
- ラプラス変換・フーリエ変換と組み合わせた信号処理
- 波動方程式・熱伝導方程式の解析解
- カテナリー曲線(懸垂曲線)の複素拡張
- 制御工学における伝達関数の評価
「複素関数論を学校で習ったきり触っていない」という方でも大丈夫です。計算自体はIMCOSHが引き受けてくれるので、式の意味だけ理解しておけば十分活用できます。
ExcelとGoogleスプレッドシートの両対応
IMCOSH関数はExcel 2013以降で使えます。対応バージョンはMicrosoft 365、Excel 2016/2019/2021/2024、Excel for the web、Excel for Macです。Googleスプレッドシートにも同名で同仕様の関数が用意されています。両方のツールで同じ数式を書いて同じ結果が得られます。
社内で Excel と Google スプレッドシートを併用しているチームでも、複素数計算のロジックを移植する手間がありません。そのまま使えるのは嬉しいポイントですね。
IMCOSH関数の書式と引数の渡し方
IMCOSH関数の書式は非常にシンプルで、引数は1つだけです。
=IMCOSH(複素数)
| 引数 | 内容 | 必須 | 受け付ける形式 |
|---|---|---|---|
| 複素数 | 双曲線余弦を求めたい複素数 | 必須 | 文字列 "x+yi" または "x+yj"、実数値、COMPLEX関数の戻り値 |
戻り値は複素数を表す文字列で、"a+bi" の形式で返ります。実数部しか持たない結果でも文字列扱いになる点に注意してください。例えば =IMCOSH(0) の結果は数値の 1 ではなく文字列の "1" です。
複素数の書き方ルール
複素数をリテラルで渡すときは、ダブルクォーテーションで囲んだ文字列にします。+ や - の前後にスペースを入れてはいけません。
=IMCOSH("1+2i") ← OK
=IMCOSH("1 + 2i") ← NG(#NUM!)
=IMCOSH("1+2I") ← NG(大文字Iは不可)
虚数単位は 小文字の i または小文字の j のどちらかを使います。電気工学の慣習では電流 i との混同を避けるため j を使うので、扱うデータに合わせて統一しましょう。詳しくは後述の「i/j混在」エラーで解説します。
セル参照とCOMPLEX関数の組み合わせ
複素数を表形式で管理するときは、セル参照で渡すのが基本です。
A1: 1+2i
A2: =IMCOSH(A1)
実数部と虚数部を別セルで管理したい場合は、COMPLEX関数 と組み合わせると入力ミスを防げます。
A1: 1 ← 実数部
B1: 2 ← 虚数部
C1: =IMCOSH(COMPLEX(A1, B1))
COMPLEX関数は数値2つから複素数文字列を組み立てる関数です。数値のまま管理できるので、シミュレーションのパラメータを書き換えるときも安心ですよ。
IMCOSH関数の使い方①|実数を渡して cosh(x) を計算する
虚数部が 0、つまり実数だけを渡したときは、通常のハイパボリックコサイン(COSH関数)と同じ値を返します。Excelの COSH(0) は 1、COSH(1) は約 1.5431 ですが、IMCOSHでも同じ結果が得られます。
ただし戻り値は 文字列 になるので、そのまま足し算には使えません。実数として後続計算で使いたい場合は IMREAL 関数で実数部を取り出す必要があります。
実数を渡す3つのパターン
実数の渡し方は次の3つです。どれも結果は同じですが、書き方によって戻り値の型が変わります。
=IMCOSH(1) → 1.54308063481524(数値そのまま渡す)
=IMCOSH("1") → "1.54308063481524"(文字列で渡す)
=IMCOSH("1+0i") → "1.54308063481524"(複素数形式で渡す)
最初の =IMCOSH(1) のように数値リテラルを渡したときも、内部的には文字列として処理されて返ります。Excelの表示では数値に見える場合がありますが、ISNUMBER でチェックすると FALSE になることが多いので注意してください。
検算用テーブルの例
実数の双曲線余弦は手元で検算しやすいので、まずは表で挙動を確認しておきましょう。
| x | =IMCOSH(x) | =COSH(x) | 一致 |
|---|---|---|---|
| 0 | 1 | 1 | OK |
| 0.5 | 1.12762596520638 | 1.12762596520638 | OK |
| 1 | 1.54308063481524 | 1.54308063481524 | OK |
| 2 | 3.76219569108363 | 3.76219569108363 | OK |
| -1 | 1.54308063481524 | 1.54308063481524 | OK(cosh は偶関数) |
cosh(x) は偶関数なので、x と -x で同じ値になるのが確認できます。IMCOSH を使えば、複素数領域でもこの性質が成立することを式で確かめられますよ。
IMCOSH関数の使い方②|複素数(i形式・j形式)を渡す
本題の複素数を渡すケースを見ていきます。cosh(x+yi) = cosh(x)·cos(y) + i·sinh(x)·sin(y) という展開式が成り立つので、結果は実数部と虚数部を持つ複素数になります。
代表的な複素数の計算例
よく登場する複素数の値で、IMCOSH の結果を一覧にしました。
| 入力 | =IMCOSH(入力) | 概算 |
|---|---|---|
"1+i" | 0.833730025131149+0.988897705762865i | 0.8337+0.9889i |
"1+2i" | -0.642148124715425+1.06860742138278i | -0.6421+1.0686i |
"2+3i" | -3.72454550491532+0.511822569987385i | -3.7245+0.5118i |
"0.5+1.5i" | 0.0797743429091871+1.04153637132187i | 0.0798+1.0415i |
"-1+i" | 0.833730025131149-0.988897705762865i | 0.8337-0.9889i(共役対称) |
「cosh(1+i) ≈ 0.8337+0.9889i」は複素関数論の教科書にもよく登場する例題です。cosh(x+yi) の実数部 cosh(x)·cos(y) と虚数部 sinh(x)·sin(y) をそれぞれ手計算すると、確かにこの値に一致します。
i形式とj形式の使い分け
電気工学・電子回路の業界では、電流の記号 i との混同を避けるために虚数単位として j を使う慣習があります。IMCOSH関数は i と j の両方を受け付けますが、1つの数式の中で混在させるとエラーになります。
=IMCOSH("1+2i") → OK
=IMCOSH("1+2j") → OK
=IMCOSH("1+2I") → NG(大文字は不可)
社内データソースが j 形式で統一されているなら、Excel上でも j で揃えるのが安全です。後述の「i/j混在エラー」のセクションで詳しく解説します。
COMPLEX関数で j形式を生成する
COMPLEX関数の第3引数で接尾辞を指定すれば、j 形式の複素数を生成できます。
=COMPLEX(1, 2) → "1+2i"
=COMPLEX(1, 2, "j") → "1+2j"
=IMCOSH(COMPLEX(1, 2, "j")) → -0.642148124715425+1.06860742138278j
電気回路の計算で j 形式を使いたいときは、COMPLEX関数の第3引数を "j" に固定しておくと、表全体で表記を統一できます。
IMCOSH関数の使い方③|純虚数で cos(y) を逆算する
実数部が 0 の純虚数 yi を渡すと、cosh(yi) = cos(y) という有名な関係式が成立します。これは複素関数論の基礎で出てくる重要な恒等式で、IMCOSH関数を使うとExcel上で簡単に確認できます。
純虚数を渡した結果
純虚数を渡した結果と、通常の COS 関数の結果を並べた表が次のとおりです。
| 入力(ラジアン) | =IMCOSH(入力) | =COS(y) | 一致 |
|---|---|---|---|
"0i" | 1 | 1 (y=0) | OK |
"1i" | 0.54030230586814 | 0.54030230586814 (y=1) | OK |
"1.5708i" | 0.000003673205103 (≒0) | 0 (y=π/2) | OK |
"3.14159i" | -0.999999999999732 (≒-1) | -1 (y=π) | OK |
実数部 x=0 の純虚数では、展開式の sinh(0)·sin(y) がゼロになるので虚数部は 0 になります。実数部 cosh(0)·cos(y) = cos(y) だけが残ります。これが cosh(yi) = cos(y) の正体です。
IMREAL関数で実数として取り出す
純虚数を渡したときの結果は文字列なので、数値計算に使いたい場合は IMREAL 関数で実数部を取り出します。
A1: =IMCOSH("3.14159i") → "-0.999999999999732"(文字列)
A2: =IMREAL(A1) → -0.999999999999732(数値)
A3: =IMREAL(A1) - COS(3.14159) → 0 に近い値(誤差検証)
cos(y) を直接 COS 関数で求めるほうがもちろん簡単ですが、複素関数論の演習や、cosh の周期性を可視化する教材として IMCOSH の純虚数渡しは便利です。
IMCOSH関数の応用|検算・IMSINH/IMCOTHとの組み合わせ
IMCOSH関数は単独で使うよりも、関連する複素数双曲線関数と組み合わせることで威力を発揮します。代表的な検算パターンを3つ紹介します。
応用①|cosh²(z) − sinh²(z) = 1 の検証
双曲線関数の基本恒等式 cosh²(z) − sinh²(z) = 1 は、複素数領域でも成り立ちます。IMSINH関数 と組み合わせて Excel 上で確かめてみましょう。
A1: 1+2i
B1: =IMSUB(IMPOWER(IMCOSH(A1), 2), IMPOWER(IMSINH(A1), 2))
→ "1"(恒等式が成立)
IMPOWER で2乗、IMSUB で引き算を行います。シミュレーション結果の妥当性チェックに使えば、複素数計算のバグを早期発見できますよ。
応用②|IMCOTHを使った coth(z) の検算
複素数の双曲線余接 coth(z) = cosh(z) / sinh(z) は、Excelでは IMCOTH関数 で求められます(Excel 2013以降)。IMCOSH と IMSINH を使った手計算結果と一致するか確認できます。
A1: 1+i
B1: =IMDIV(IMCOSH(A1), IMSINH(A1)) ← cosh/sinh の手計算
C1: =IMCOTH(A1) ← IMCOTH関数の結果
D1: =IF(B1=C1, "一致", "不一致")
両者がぴったり一致すれば、IMCOSH/IMSINH/IMCOTH の整合性が取れていることが確認できます。複素関数のライブラリを実装する際のテストケースとしても使えます。
応用③|伝送線路の特性インピーダンス計算
電気工学の応用例として、損失のある伝送線路の電圧分布を考えます。V(z) = V0·cosh(γ·d) − Z0·I0·sinh(γ·d) という式で表されます。γ(伝搬定数)と d(距離)の積が複素数になるので、IMCOSH と IMSINH が活躍します。
A1: 0.05+1.2i ← γ·d(伝搬定数 × 距離)
B1: 1+0i ← V0(入射電圧)
C1: 50+0i ← Z0(特性インピーダンス)
D1: 0.02+0.01i ← I0(入射電流)
E1: =IMSUB(IMPRODUCT(B1, IMCOSH(A1)), IMPRODUCT(C1, D1, IMSINH(A1)))
このような複合計算でも、IMCOSH を関数として呼び出すだけで複素数演算が完結します。電卓で複素数を1つずつ計算する手間が一気に減りますね。
IMCOSH関数でよくあるエラーと対処法(#VALUE!・i/j混在)
IMCOSH関数で発生しやすいエラーと、その原因・対処法をまとめました。
| エラー | 主な原因 | 対処法 |
|---|---|---|
#NUM! | 複素数として解釈できない文字列 | "x+yi" 形式に修正、i/j/大文字小文字を統一 |
#VALUE! | 日付・論理値・配列を渡した | 文字列または数値に変換してから渡す |
| 結果が文字列 | IMCOSHの戻り値は常に文字列 | IMREAL/IMAGINARYで数値化 |
#NUM! エラーの代表例
複素数の書式違反でほとんどの #NUM! エラーが発生します。よくあるNGパターンを確認しておきましょう。
=IMCOSH("1+2I") → #NUM!(大文字 I は不可)
=IMCOSH("1 + 2i") → #NUM!(スペースは不可)
=IMCOSH("1+2k") → #NUM!(i/j 以外は不可)
=IMCOSH("1,2i") → #NUM!(カンマ区切りは不可)
=IMCOSH("(1+2i)") → #NUM!(括弧は不要)
複素数の文字列は 「数値 + 符号 + 数値 + i/j」 の構造を厳密に守る必要があります。スペースや括弧を入れたい気持ちはわかりますが、Excel のパーサーは受け付けてくれません。
i/j混在エラーの対処
1つの数式の中で i と j を混在させると、#NUM! エラーになります。例えば次のような状況です。
A1: 1+2i
A2: 3+4j
B1: =IMSUM(A1, A2) → #NUM!(i と j が混在)
対処法は、データソースの段階で表記を統一することです。SUBSTITUTE 関数で機械的に置き換えるのが手っ取り早いです。
=IMCOSH(SUBSTITUTE(A1, "j", "i")) ← j を i に統一
=IMCOSH(SUBSTITUTE(A1, "i", "j")) ← i を j に統一
CSVから取り込んだデータが混在しているときは、列ごと一度 SUBSTITUTE で正規化してからIMCOSHに渡す運用がおすすめです。
戻り値が文字列になる問題
IMCOSH の戻り値は常に文字列なので、SUM で合計を取ったり、IF で大小比較したりするとうまく動きません。数値として扱いたいときは、IMREAL で実数部、IMAGINARY で虚数部を取り出してから処理しましょう。
A1: =IMCOSH("1+2i") → "-0.642148124715425+1.06860742138278i"
B1: =IMREAL(A1) → -0.642148124715425(数値)
C1: =IMAGINARY(A1) → 1.06860742138278(数値)
D1: =SQRT(B1^2 + C1^2) → 1.24812... (絶対値 |cosh(1+2i)|)
IMABS 関数を使えば、IMREAL/IMAGINARY を経由せずに直接絶対値が取れます(=IMABS(A1))。用途に応じて使い分けてください。
IMCOSH・IMSINH・IMCOS・IMSIN・IMCOTHの違いを整理
IM系の三角関数・双曲線関数は名前が似ていて混同しがちです。それぞれの定義と用途を表で整理します。
| 関数名 | 数学記法 | 定義 | 主な用途 |
|---|---|---|---|
| IMCOSH | cosh(z) | (e^z + e^-z) / 2 | 双曲線余弦(伝送線路、波動方程式) |
| IMSINH | sinh(z) | (e^z − e^-z) / 2 | 双曲線正弦(伝送線路、波動方程式) |
| IMTANH | tanh(z) | sinh(z) / cosh(z) | 双曲線正接(ニューラルネットの活性化関数) |
| IMCOTH | coth(z) | cosh(z) / sinh(z) | 双曲線余接(Excel 2013以降で対応) |
| IMCOS | cos(z) | (e^iz + e^-iz) / 2 | 通常の余弦(複素数版) |
| IMSIN | sin(z) | (e^iz − e^-iz) / (2i) | 通常の正弦(複素数版) |
| IMSEC | sec(z) | 1 / cos(z) | 複素正割 |
| IMCSC | csc(z) | 1 / sin(z) | 複素余割 |
双曲線関数と三角関数の関係
複素数領域では、双曲線関数と三角関数が密接に関係しています。代表的な恒等式は次のとおりです。
cosh(iy) = cos(y) ← 純虚数を渡すと余弦になる
sinh(iy) = i·sin(y) ← 純虚数を渡すと虚数倍の正弦になる
cos(iy) = cosh(y) ← 逆も成立
sin(iy) = i·sinh(y)
つまり「IMCOSH("0+1i") と IMCOS("1+0i") は同じ結果」という性質があります。Excel 上で計算するとちゃんと一致するので、複素関数論の学習教材としても活用できますよ。
使い分けの目安
- 波の伝搬・減衰・電気回路 →
IMCOSH/IMSINH/IMTANH - 振動・周波数応答 →
IMCOS/IMSIN - 比率や逆数が必要な場面 →
IMCOTH/IMSEC/IMCSC - 絶対値・偏角だけ欲しい →
IMABS/IMARGUMENT
「双曲線(hyperbolic)= 末尾に H」という命名規則を覚えておくと、関数名で迷うことが減ります。
Googleスプレッドシートで同じ計算をしたい場合は、GoogleスプレッドシートのIMCOSH関数 や IMSINH関数 もぜひ参考にしてください。
ExcelのIMCOSH関数 よくある質問(FAQ)
Q1. IMCOSH関数とCOSH関数の違いは何ですか?
COSH関数は 実数 のハイパボリックコサインを返し、戻り値は数値型です。IMCOSH関数は 複素数 のハイパボリックコサインを返し、戻り値は文字列型です。実数しか扱わないなら COSH のほうが結果を直接四則演算に使えるので便利です。複素数を扱う必要があるなら IMCOSH を使い、IMREAL / IMAGINARY で実数部・虚数部を取り出してください。
Q2. 虚数単位は「i」と「j」のどちらを使えばよいですか?
数学・物理学の分野では i、電気工学・電子回路の分野では j を使うのが慣習です。IMCOSH関数はどちらも受け付けますが、1つの数式・1つの列の中では必ず統一してください。混在すると #NUM! エラーになります。データソースが混在している場合は、SUBSTITUTE 関数で事前に置換するのがおすすめです。
Q3. IMCOSH関数の戻り値で四則演算するにはどうすればよいですか?
戻り値は文字列なので、そのままでは + - * / で計算できません。複素数同士の演算は IMSUM(加算)・IMSUB(減算)・IMPRODUCT(積算)・IMDIV(除算)の IM系演算関数 を使ってください。実数として扱いたいときは IMREAL または IMAGINARY で数値化してから通常の演算子を使います。
Q4. Excel 2010以前でもIMCOSH関数は使えますか?
IMCOSH関数は Excel 2013以降 で標準対応しています。Excel 2010 では「分析ツール」アドインを有効化すれば使える場合もありますが、現在は Microsoft 365 / Excel 2016 以降の利用を強く推奨します。Googleスプレッドシートでは追加設定なしで最初から使えます。古い Excel しかない環境では Google スプレッドシートを併用するのも選択肢の一つです。
Q5. cosh(1+i) はなぜ約 0.8337+0.9889i になるのですか?
展開式 cosh(x+yi) = cosh(x)·cos(y) + i·sinh(x)·sin(y) に x=1, y=1 を代入します。cosh(1)·cos(1) = 1.5431 × 0.5403 ≒ 0.8337 が実数部です。sinh(1)·sin(1) = 1.1752 × 0.8415 ≒ 0.9889 が虚数部です。Excel で =IMCOSH("1+i") を実行すると、まさにこの値が返ってきます。手計算と Excel の結果を照合できる、複素関数論のよい入門例題ですね。
Q6. IMCOSHの結果を表示形式で小数桁数を制御できますか?
戻り値が文字列なので、セルの表示形式では桁数を制御できません。桁数を揃えて表示したい場合は、IMREAL と IMAGINARY で分解して数値化し、ROUND で丸めてから COMPLEX で再結合する方法が確実です。
=COMPLEX(ROUND(IMREAL(IMCOSH("1+2i")), 4), ROUND(IMAGINARY(IMCOSH("1+2i")), 4))
→ "-0.6421+1.0686i"
レポート用の数値整形にはこの方式がおすすめです。
まとめ
ExcelのIMCOSH関数について、構文・実数渡し・複素数渡し・純虚数渡しを解説しました。応用・エラー対処・関連関数の違いも網羅しています。要点をおさらいします。
- IMCOSH関数は複素数 z の双曲線余弦 cosh(z) を返す関数
- 書式は
=IMCOSH(複素数)で、引数は1つだけ - 複素数は
"x+yi"または"x+yj"の文字列形式で渡す - 実数を渡すと通常の cosh(x) と同じ結果が文字列で返る
- 純虚数 yi を渡すと cos(y) が返る(複素関数論の基本恒等式)
IMSINH/IMCOTHと組み合わせれば検算や伝送線路計算が可能iとjの混在は#NUM!エラーになるので統一が必須- 戻り値は文字列なので四則演算には
IMSUM/IMSUBなどのIM系演算関数かIMREAL/IMAGINARYで数値化する
複素数の双曲線余弦は専門的に見えますが、IMCOSH関数を使えば数式1行で答えが出ます。電気工学・信号処理・物理シミュレーションをExcelで完結させたい方は、ぜひIMSINHやIMCOTHと一緒にレパートリーに加えてくださいね。
Excelの関連関数の一覧は次のページからも探せます。
