「スプレッドシートで複素数の双曲線正弦(ハイパボリックサイン)を計算したいけど、定義式から手で展開するのは骨が折れる…」
スプレッドシートで複素数を扱っていると、双曲線関数を複素数に拡張した計算が必要になる場面がありますよね。「sinh(a+bi) = sinh(a) × cos(b) + i cosh(a) × sin(b)」という式を毎回手で組み立てるのは、ちょっと手間がかかります。
そんなときに頼りになるのがGoogleスプレッドシートのIMSINH関数です。複素数を渡すだけで双曲線正弦の値を一発で返してくれますよ。伝送線路の電流分布や減衰振動の数式が一気にすっきりしますね。
ExcelのIMSINH関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのまま双曲線正弦を計算できます。
この記事では、スプレッドシートのIMSINH関数の基本構文と実務での活用例を解説します。定義式に基づく内部計算の仕組みや、よくあるエラーと対処法もしっかり紹介していきますよ。
スプレッドシートのIMSINH関数とは?
GoogleスプレッドシートのIMSINH関数(イマジナリー・ハイパボリックサイン関数)は、複素数の双曲線正弦を返す関数です。エンジニアリング関数(電気・物理・工学系の計算で使う関数群)のひとつに分類されますよ。
読み方は「イマジナリー・シンチ」または「アイエム・シンチ」です。英語の「imaginary number(虚数)」の「hyperbolic sine(双曲線正弦)」に由来します。複素数「a+bi」に対して、複素数版の双曲線正弦を返してくれるのが役割ですね。
そもそも複素数の双曲線正弦とは、実数の双曲線関数を複素数全体に拡張したものです。定義式は次のようになります。
sinh(a+bi) = sinh(a) × cos(b) + i × cosh(a) × sin(b)
実部は「sinh(a) × cos(b)」、虚部は「cosh(a) × sin(b)」となり、結果も複素数で返るのが特徴ですね。実数のSINH関数のように単調増加するだけでなく、虚部によって振動成分も加わる点を覚えておきましょう。
| 複素数(z) | IMSINH(z)の結果(概算) | 内部計算 |
|---|---|---|
| 0+0i | 0 | sinh(0) = 0 |
| 1+0i | 1.1752011936438 | sinh(1) ≈ 1.1752 |
| 0+π/2i | i | i × sin(π/2) = i × 1 |
| 1+1i | 0.6349+1.2985i | sinh(1)cos(1) + i cosh(1)sin(1) |
| 0+πi | 0 | i × sin(π) = 0 |
| -1+0i | -1.1752011936438 | sinh(-1) = -sinh(1)(奇関数) |
IMSINH関数を使えば、この表の右側にある「複素数の双曲線正弦」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2013以降のすべてのバージョンに対応していますよ。
複素数の双曲線正弦は、複素双曲線関数が必要な場面で活躍する基礎パーツです。伝送線路の電流分布、減衰振動の速度応答、量子力学のトンネル効果、制御工学の伝達関数などで使われますね。
TIP
IMSINH関数は奇関数の性質を持っています。sinh(-z) = -sinh(z) が複素数でも成り立つので、符号反転した複素数を渡すと結果も符号反転して返ってきますよ。IMCOSH関数(偶関数 cosh(-z) = cosh(z))と対照的な性質ですね。
IMSINH関数の書き方(構文と引数)
基本構文
=IMSINH(複素数)
引数は1つだけのシンプルな関数です。
引数の詳細
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 複素数(inumber) | 必須 | 双曲線正弦を求めたい複素数。文字列またはセル参照で指定する |
引数には「”1+2i”」や「”1+2j”」のような複素数文字列を直接渡せます。COMPLEX関数(実数と虚数から複素数を作成する関数)の結果や、複素数が入ったセルの参照も指定できますよ。
虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMSINH関数はどちらでも同じように動作してくれます。
TIP
戻り値は元の入力と同じ虚数単位で返されます。「1+1i」を渡せば「i」付きで、「1+1j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。
引数の虚部はラジアン(弧度法)で扱われる点に注意してください。度数法(°)で角度を渡したい場合は、RADIANS関数(度をラジアンに変換する関数)で事前に変換する必要がありますね。
IMSINH関数の基本的な使い方
文字列で複素数を直接指定する
複素数文字列をそのまま引数に渡してみましょう。
=IMSINH("1+1i")
結果は「0.6349639147847+1.29845758141598i」になります。実部・虚部それぞれが小数で返ってきますね。
実部だけの複素数(虚部0)を渡すと、通常のSINH関数と同じ結果になります。
=IMSINH("0")
=IMSINH("1+0i")
最初の式の結果は「0」、2番目は「1.1752011936438」ですね。sinh(0) = 0、sinh(1) ≈ 1.1752 という基本的な値が返ってきます。sinh(0) = 0 は IMSINH の覚えておきたい基本性質ですよ。
虚部だけの純虚数(実部0)を渡すと、結果は「i × sin(b)」になります。
=IMSINH("1i")
結果は「0.841470984807897i」になります。これは i × sin(1) の値ですね。sinh(0+1i) = sinh(0)×cos(1) + i×cosh(0)×sin(1) = 0 + i×sin(1) という計算が裏で動いています。
セル参照で複素数を指定する
実務ではセルに入った複素数を扱う場面が多いですよね。A2に「1+2i」が入っている場合は次のように書きます。
=IMSINH(A2)
結果は「-0.489056259041294+1.40311925062204i」になります。セル参照を渡すだけで、入っている複素数の双曲線正弦を取り出せますよ。
COMPLEX関数と組み合わせる
COMPLEX関数で作った複素数の双曲線正弦を、その場で計算することもできます。
=IMSINH(COMPLEX(1, 1))
結果は「0.6349639147847+1.29845758141598i」、つまり「IMSINH(“1+1i”)」と同じですね。COMPLEX(1, 1)が内部で「1+1i」を作り、IMSINH関数がその双曲線正弦を返してくれます。
数値で実部・虚部を渡したいときに便利な書き方ですよ。
度数法で角度を渡す(RADIANS関数と組み合わせる)
虚部を「30度」のような度数法で渡したい場合は、RADIANS関数で変換します。
=IMSINH(COMPLEX(0, RADIANS(30)))
結果は「0.5i」、つまり i × sin(30°) = i × 0.5 ですね。実部0なので「i × sin(b)」の形が返ってきます。
実部・虚部の両方に度数法を使いたい場面では、両方をRADIANSで包みます。
=IMSINH(COMPLEX(RADIANS(30), RADIANS(45)))
度数法で角度を扱う実務シートでは、RADIANSとセットで使うのが定番ですよ。
ARRAYFORMULAで複数行を一括処理する
複素数のリストから一気に双曲線正弦の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数(数式を範囲全体に展開する関数)と組み合わせます。
=ARRAYFORMULA(IMSINH(A2:A10))
A列に並んだ複素数から、対応する双曲線正弦値をB列に一発で展開できますよ。伝送線路の各位置での電流分布を一括計算するときに重宝しますね。
IMSINH関数の実務活用例
活用例1: 実部と虚部に分解して可視化する
IMSINH関数の戻り値は複素数なので、グラフにしたいときは実部と虚部に分けて取り出します。IMREAL関数とIMAGINARY関数を組み合わせる流れですよ。
A列に複素数が並んでいるとしましょう。
B2: =IMSINH(A2) ← 複素数の双曲線正弦
C2: =IMREAL(B2) ← 実部
D2: =IMAGINARY(B2) ← 虚部
C列を実部、D列を虚部としてプロットすれば、複素平面上での挙動が一目で分かりますね。複素関数の振る舞いを学ぶ教材や、解析結果の可視化レポートで使えるパターンです。
活用例2: 双曲線関数の定義式の検算
定義式「sinh(z) = (e^z – e^(-z)) / 2」から、IMSINHとIMEXP(複素指数関数)を使って検算してみましょう。
セルA2に複素数「1+1i」が入っているとします。
=IMSINH(A2)
=IMDIV(IMSUB(IMEXP(A2), IMEXP(IMPRODUCT("-1", A2))), 2)
両者は同じ結果「0.6349639147847+1.29845758141598i」になりますよ。複素関数論の基本公式を、スプレッドシート上で確認できる仕組みですね。教育用の教材や、数式処理ソフトの代替として使える場面です。
活用例3: 伝送線路の電流分布シミュレーション
電気工学の伝送線路理論では、線路上の電流分布が「I(x) = V0 / Z0 × sinh(γx)」という形で表されます。ここでγは伝搬定数(複素数 α+jβ)、Z0は特性インピーダンス、xは位置ですね。IMSINH関数を使うと、この式をそのままシートで計算できますよ。
具体的なパラメータで考えてみましょう。位置x=0.5、伝搬定数γ=0.1+2i、初期電圧V0=100V、特性インピーダンスZ0=50Ωとします。
A2: 0.5 ← 位置 x
B2: =IMSINH(COMPLEX(0.1*A2, 2*A2)) ← sinh(γx)
C2: =IMDIV(IMPRODUCT(100, B2), 50) ← V0 / Z0 × sinh(γx)
D2: =IMABS(C2) ← 電流の大きさ
D2の値が、その位置での電流の絶対値に対応しますね。同軸ケーブルや高周波回路の設計シートで活躍するパターンです。電圧分布(IMCOSH側)と電流分布(IMSINH側)はセットで計算するのが定番ですよ。
活用例4: IMCOSH関数と組み合わせて双曲線関数恒等式を確認する
複素数の双曲線関数にも「cosh²(z) – sinh²(z) = 1」という恒等式が成り立ちます。IMSINHとIMCOSH(複素双曲線コサイン関数)、IMPRODUCT、IMSUBを組み合わせて確認してみましょう。
A2: 1+1i
B2: =IMCOSH(A2) ← cosh(z)
C2: =IMSINH(A2) ← sinh(z)
D2: =IMSUB(IMPRODUCT(B2, B2), IMPRODUCT(C2, C2)) ← cosh²z - sinh²z
D2の結果は「1」(実部1・虚部ほぼ0)になりますよ。複素数でも実数の双曲線関数と同じ恒等式が成り立つことを、数値で確認できる仕組みですね。
活用例5: 双曲線タンジェント tanh(z) を IMSINH/IMCOSH で計算する
スプレッドシートには標準で IMTANH 関数(複素双曲線タンジェント)が用意されていません。そのため tanh(z) = sinh(z) / cosh(z) の定義に従って、IMSINH と IMCOSH と IMDIV を組み合わせて計算します。
A2: 1+1i
B2: =IMDIV(IMSINH(A2), IMCOSH(A2))
B2の結果は「1.08392332733869+0.271752585319512i」になります。これは複素数 z=1+i の双曲線タンジェントですね。減衰振動の位相解析や、伝送線路の特性インピーダンス計算で必要になる場面で使える書き方ですよ。
IMSINH関数とCOMPLEX関数群の関係
複素数を扱う関数群の中で、IMSINH関数の位置づけを整理しておきましょう。
| 関数 | 入力 | 出力 | 役割 |
|---|---|---|---|
| COMPLEX | 実数 a, b | 複素数 a+bi | 複素数を作る |
| IMREAL | 複素数 a+bi | 実数 a | 実部を取り出す |
| IMAGINARY | 複素数 a+bi | 実数 b | 虚部を取り出す |
| IMABS | 複素数 a+bi | 実数 √(a²+b²) | 大きさを取り出す |
| IMARGUMENT | 複素数 a+bi | 実数 atan2(b,a) | 偏角を取り出す |
| IMCONJUGATE | 複素数 a+bi | 複素数 a-bi | 共役を作る |
| IMSIN | 複素数 z | 複素数 sin(z) | サインを計算する |
| IMCOS | 複素数 z | 複素数 cos(z) | コサインを計算する |
| IMCOSH | 複素数 z | 複素数 cosh(z) | 双曲線余弦を計算する |
| IMSINH | 複素数 z | 複素数 sinh(z) | 双曲線正弦を計算する |
IMREALやIMABSが「複素数から実数を取り出す」のに対して、IMSINH関数は「複素数から複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。
たとえば定義式どおりにsinh(a+bi)を手動で組み立てると次のようになります。
=COMPLEX(SINH(IMREAL(A2))*COS(IMAGINARY(A2)), COSH(IMREAL(A2))*SIN(IMAGINARY(A2)))
これはIMSINHと同じ結果になりますが、4つの関数を組み合わせる必要がありますよね。IMSINHを使えば1関数で済むので、数式が読みやすくなります。
IMSINH と IMCOSH の違い(対称ペア)
IMSINH と IMCOSH は双曲線関数の対称ペアです。性質の違いを表にまとめました。
| 項目 | IMSINH | IMCOSH |
|---|---|---|
| 関数 | sinh(z) | cosh(z) |
| 偶奇 | 奇関数 sinh(-z)=-sinh(z) | 偶関数 cosh(-z)=cosh(z) |
| 0での値 | sinh(0+0i) = 0 | cosh(0+0i) = 1 |
| 純虚数 0+bi | i × sin(b) | cos(b) |
| 定義式 | sinh(a)cos(b) + i cosh(a)sin(b) | cosh(a)cos(b) + i sinh(a)sin(b) |
| 物理的意味 | 伝送線路の電流分布、減衰系の速度 | 伝送線路の電圧分布、減衰系の応答 |
恒等式「cosh²(z) – sinh²(z) = 1」が成り立つので、検算の場面では両方を組み合わせて使うとミスが減りますよ。
IMSINH関数のよくあるエラーと対処法
#NUM! エラー(複素数の形式エラー)
複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。
=IMSINH("1+1I") → #NUM!(大文字のIは不可)
=IMSINH("1+1k") → #NUM!(i・j以外は不可)
=IMSINH("1+1i") → #NUM!(全角文字は不可)
対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。
スペースが入っている場合(例: "1 + 1i")も認識できないことがあるので、余計な空白を除いておくと安心です。
#VALUE! エラー(引数の型エラー)
引数に論理値やエラー値を渡したときに発生します。
=IMSINH(TRUE) → #VALUE!(論理値は不可)
=IMSINH(#N/A) → #VALUE!(エラー値は不可)
対処法は、正しい複素数文字列または数値・セル参照を渡すことです。入力元のセルがエラーになっている場合は、そのエラーを先に解消する必要がありますよ。
数値そのものを渡した場合
数値(虚部0の実数)を渡すと、実数のSINH関数と同じ値が返ります。
=IMSINH(0) → 0
=IMSINH(1) → 1.1752011936438...
エラーにはなりません。ただし戻り値は複素数文字列として扱われる場合があるので、後続の数値計算で使うときはIMREAL関数で実部を取り出しておくと安心です。
実部が大きすぎてオーバーフロー
実部が極端に大きい複素数を渡すと、sinh(a)が指数関数的に大きくなって、計算結果がオーバーフローすることがあります。
=IMSINH("1000+0i") → #NUM!(sinh(1000)が大きすぎる)
対処法は、実部の値を物理的に意味のある範囲に制限することです。減衰計算なら時定数の数倍程度に抑える、といった調整が必要ですね。
IFERRORでまとめてエラーを吸収する
入力データの信頼性が低い場合は、IFERROR関数(エラー時に代替値を返す関数)で包んでおくとシート全体の集計が止まりません。
=IFERROR(IMSINH(A2), "形式エラー")
エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。
IMSINH関数とExcelの互換性
GoogleスプレッドシートのIMSINH関数は、ExcelのIMSINH関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。
ExcelファイルをGoogleスプレッドシートで開いてもIMSINH関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。
ExcelのIMSINH関数は、Excel 2013以降のバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。Excel 2010以前のバージョンでは利用できないので、古い環境とファイルを共有する場合は注意してくださいね。
複素数関連の関数一覧
IMSINH関数と一緒に使うことが多い、複素数関連の関数をまとめました。
| 関数名 | 機能 |
|---|---|
| COMPLEX | 実数と虚数から複素数を作成する |
| IMREAL | 複素数の実数係数を返す |
| IMAGINARY | 複素数の虚数係数を返す |
| IMABS | 複素数の絶対値(大きさ)を返す |
| IMARGUMENT | 複素数の偏角(角度)をラジアンで返す |
| IMCONJUGATE | 共役複素数を返す |
| IMSIN | 複素数のサインを返す |
| IMCOS | 複素数のコサインを返す |
| IMCOSH | 複素数の双曲線余弦を返す |
| IMSINH | 複素数の双曲線正弦を返す |
| IMSUM | 複素数の合計(足し算)を返す |
| IMSUB | 複素数の差(引き算)を返す |
| IMPRODUCT | 複素数の積(掛け算)を返す |
| IMDIV | 複素数の商(割り算)を返す |
| IMEXP | 複素数の指数関数を返す |
| IMLN | 複素数の自然対数を返す |
| IMSQRT | 複素数の平方根を返す |
IMSINH関数は、これら複素数関数群の中で「双曲線正弦を計算する」役割を担います。COMPLEXで作り、IMSINHで双曲線正弦を取り、IMREAL・IMAGINARYで実部と虚部に分けて可視化するのが基本パターンですね。
まとめ
GoogleスプレッドシートのIMSINH関数は、複素数の双曲線正弦(ハイパボリックサイン)を返す関数です。伝送線路の電流分布、減衰振動の速度応答、量子力学のトンネル効果、制御工学の伝達関数など、複素双曲線関数が必要な場面で欠かせない関数ですよ。
- 構文は
=IMSINH(複素数)で引数は1つだけのシンプルな関数 - 「a+bi」を渡すと「sinh(a)cos(b) + i cosh(a)sin(b)」が返る
- 「a+bj」のような工学系表記もそのまま受け付ける
- 引数の虚部はラジアンで扱う(度数法ならRADIANS関数で変換)
- sinh(0+0i) = 0 が基本性質(IMCOSHの cosh(0)=1 と対照的)
- 虚部0の実数を渡すと、実数のSINH関数と同じ値になる
- 実部0の純虚数を渡すと、「i × sin(b)」の形で虚部だけが返る
- IMSINHは奇関数 sinh(-z) = -sinh(z) の性質を持つ
- COMPLEX関数の結果やセル参照、複素数演算の結果から双曲線正弦を計算できる
- IMCOSH関数と組み合わせて双曲線関数恒等式 cosh²-sinh²=1 を確認できる
- IMTANHは存在しないため、IMDIV(IMSINH, IMCOSH) で双曲線タンジェントを計算する
- ARRAYFORMULAで複数の複素数を一括処理できる
- 大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー
- 論理値やエラー値を渡すと #VALUE! エラー
- 実部が極端に大きいとオーバーフローで #NUM! エラー
- ExcelのIMSINH関数と完全互換(Excel 2013以降)
複素数の双曲線正弦が必要になったら、IMSINH関数の出番ですよ。COMPLEX関数で複素数を作り、IMSINHで双曲線正弦を取り、IMREAL・IMAGINARYで成分を分解する流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。
