「スプレッドシートで複素数のサイン(正弦)を計算したいけど、sin(a+bi) を実部と虚部に展開してから足し合わせるのは面倒…」
スプレッドシートで複素関数を扱っていると、複素数のサイン sin(z) が必要になる場面がありますよね。実部と虚部に分けて sin(a)·cosh(b) と cos(a)·sinh(b) を別々に計算し、最後に複素数の形に組み直す手作業はちょっと大変です。
そんなときに頼りになるのがGoogleスプレッドシートのIMSIN関数です。複素数を渡すだけでサイン sin(a+bi) を一発で返してくれるので、複素三角関数を使った数式が一気にすっきりしますよ。
ExcelのIMSIN関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのままサインを計算できます。
この記事では、スプレッドシートのIMSIN関数の基本構文と実務での活用例を解説します。IMCOS関数との関係や、純虚数を入れたときに sinh と同値になる理由、よくあるエラーと対処法もしっかり紹介していきますよ。
スプレッドシートのIMSIN関数とは?
GoogleスプレッドシートのIMSIN関数(イマジナリー・サイン関数)は、複素数の正弦(サイン)を返す関数です。エンジニアリング関数(電気・物理・工学系の計算で使う関数群)のひとつに分類されますよ。
読み方は「イマジナリー・サイン」または「アイエム・シン」で、英語の「imaginary number(虚数)」の「sine(正弦)」に由来します。複素数「a+bi」に対して、sin(a+bi) を返してくれるのが役割ですね。
そもそも複素数の正弦とは、実数の正弦(sin(x))を複素数全体に拡張したものです。実部と虚部に分解した定義式は次のようになります。
sin(a+bi) = sin(a)·cosh(b) + i·cos(a)·sinh(b)
実部側に「sin(a)·cosh(b)」、虚部側に「cos(a)·sinh(b)」が並ぶ構造ですね。実部だけの複素数(虚部0)を渡すと、通常の sin(a) と同じ結果になりますよ。
| 複素数(z) | IMSIN(z)の結果(概算) | 備考 |
|---|---|---|
| 0+0i | 0 | sin(0) = 0 |
| 1+0i | 約 0.8415 | sin(1ラジアン) ≈ 0.8415 |
| 0+1i | 約 0+1.1752i | sin(i) = i·sinh(1) |
| 1+1i | 約 1.2985+0.6350i | sin(1)cosh(1) + i·cos(1)sinh(1) |
| 2+3i | 約 9.1545-4.1689i | 虚部が大きくなると絶対値が急増する |
IMSIN関数を使えば、この表の右側にある「複素数のサイン」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2013以降のすべてのバージョンに対応していますよ。
複素数のサインは、信号処理のフィルタ伝達関数・電気工学の交流回路解析・複素解析の学習教材・特殊関数の評価など、複素三角関数が必要な場面で活躍する基礎パーツですね。
IMSIN関数の書き方(構文と引数)
基本構文
=IMSIN(複素数)
引数は1つだけで、必須です。
引数の詳細
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 複素数(inumber) | 必須 | サインを求めたい複素数。文字列またはセル参照で指定する |
引数には「”2+3i”」や「”2+3j”」のような複素数文字列を直接渡せます。COMPLEX関数(実数と虚数から複素数を作成する関数)の結果や、複素数が入ったセルの参照も指定できますよ。
虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMSIN関数はどちらでも同じように動作してくれます。
TIP
戻り値は元の入力と同じ虚数単位で返されます。「1+1i」を渡せば「i」付きで、「1+1j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。
実部・虚部の単位はラジアンです。度数(°)で角度を持っている場合は、RADIANS関数で先にラジアンに変換しておきましょう。
スプレッドシートのIMSIN関数の基本的な使い方
文字列で複素数を直接指定する
複素数文字列をそのまま引数に渡してみましょう。
=IMSIN("1+1i")
結果は「1.2984575814…+0.6349639147…i」になります。手計算で確認すると sin(1)·cosh(1) ≈ 0.8415 × 1.5431 ≈ 1.2985、cos(1)·sinh(1) ≈ 0.5403 × 1.1752 ≈ 0.6350 で、計算が合っていますね。
実部だけの複素数(虚部0)を渡すと、通常のサインと同じ結果になります。
=IMSIN("1+0i")
結果は約「0.8415」です。sin(1ラジアン) ≈ 0.8415 という基本的な値が返ってきますね。
虚部だけの純虚数を渡すと、双曲線正弦(sinh)の i 倍になります。
=IMSIN("0+1i")
結果は約「0+1.1752i」になります。sin(i) = i·sinh(1) ≈ 1.1752i なので、双曲線関数の世界とつながっているのが分かりますね。
セル参照で複素数を指定する
実務ではセルに入った複素数を扱う場面が多いですよね。A2に「2+3i」が入っている場合は次のように書きます。
=IMSIN(A2)
結果は約「9.1545-4.1689i」になります。セル参照を渡すだけで、入っている複素数のサインを取り出せますよ。
虚部の cosh(3)・sinh(3) はそれぞれ 10.07・10.02 と大きな値になるため、実部・虚部とも絶対値が約9〜10と急増しています。複素数のサインは虚部が大きくなるほど指数関数的に大きくなるので、結果の桁感を見るときに頭の片隅に入れておくと安心ですね。
COMPLEX関数と組み合わせる
COMPLEX関数で作った複素数のサインを、その場で計算することもできます。
=IMSIN(COMPLEX(1, 1))
結果は約「1.2985+0.6350i」、つまり「IMSIN(“1+1i”)」と同じですね。COMPLEX(1, 1)が内部で「1+1i」を作り、IMSIN関数がそのサインを返してくれます。
実部と虚部がセルに分かれているデータを扱うときに便利な書き方ですよ。
IMCOSと差で書き換える(参考)
IMSIN関数は加法定理を使えば IMCOS と組み合わせて表現することもできます。たとえば sin(z) = cos(π/2 − z) という関係を使えば、IMCOS と IMSUB(複素数の差)で書き換え可能です。
=IMSIN("1+1i")
=IMCOS(IMSUB(COMPLEX(PI()/2, 0), "1+1i"))
どちらも結果は約「1.2985+0.6350i」で同じになりますね。ただし読みやすさ・タイプ量・エラーの起きにくさのどれを取ってもIMSINの方が有利です。実務で書き換える理由はほぼないので、参考レベルで覚えておけば十分ですよ。
度数からの変換と組み合わせる
実部・虚部が度数(°)で与えられているときは、RADIANS関数でラジアンに直してから渡します。
=IMSIN(COMPLEX(RADIANS(60), RADIANS(30)))
A列の度数を一気にラジアンに変換してから処理したい場合は、ARRAYFORMULA関数(数式を範囲全体に展開する関数)を併用すると便利ですね。
ARRAYFORMULAで複数行を一括処理する
複素数のリストから一気にサインの列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数と組み合わせます。
=ARRAYFORMULA(IMSIN(A2:A10))
A列に並んだ複素数から、対応する正弦の値をB列に一発で展開できますよ。複素三角関数のテーブルを作るときに重宝しますね。
IMSIN関数の実務活用例
活用例1: IMCOSとの関係を検算する
複素数のサインとコサインには三平方の関係 sin²(z) + cos²(z) = 1 が成り立ちます。IMSIN・IMCOS・IMPRODUCT・IMSUMで自動チェックを仕込んでおくと、入力ミスにも気付きやすくなりますよ。
A2に「1.5+0.7i」が入っているとします。
B2: =IMSIN(A2) ← サインを直接計算
C2: =IMCOS(A2) ← コサインを計算
D2: =IMPRODUCT(B2, B2) ← sin²(z)
E2: =IMPRODUCT(C2, C2) ← cos²(z)
F2: =IMSUM(D2, E2) ← sin² + cos²(≈ 1+0i のはず)
F2が「ほぼ 1+0i」になっていれば、IMSIN関数とIMCOS関数が定義どおり動いている証拠ですね。シート上で自動チェックを仕込んでおくと、入力ミスにも気付きやすくなりますよ。
活用例2: 複素三角関数テーブルを作る
複素三角関数の挙動を学習するときは、IMSIN・IMCOS・IMSEC・IMCSC・IMTAN・IMCOTを並べた一覧表があると便利ですよね。
A2: 0.5+0.5i
B2: =IMSIN(A2) ← サイン
C2: =IMCOS(A2) ← コサイン
D2: =IMSEC(A2) ← セカント
E2: =IMCSC(A2) ← コセカント
F2: =IMTAN(A2) ← タンジェント
G2: =IMCOT(A2) ← コタンジェント
A列に複素数を並べておけば、複素関数の値を一気に俯瞰できます。複素解析の学習教材として、教科書の例題を確認するのにぴったりですね。
活用例3: 信号処理のサイン応答を確認する
アナログフィルタや伝達関数の検討で H(s) = sin(s) のような形が登場することがあります。s = σ + jω に IMSIN を適用すれば、シート上で値の挙動を確認できますよ。
A2: =COMPLEX(0.1, 1.0, "j") ← s = 0.1+1.0j
B2: =IMSIN(A2) ← H(s) = sin(s)
C2: =IMABS(B2) ← |H(s)|(ゲイン)
D2: =IMARGUMENT(B2) ← arg H(s)(位相)
電気工学の慣習に合わせて虚数単位を「j」にしたい場合は、COMPLEX関数の第3引数で指定できますね。教科書のボード線図と見比べる用途に向いています。
活用例4: 複素関数の値を可視化するシートを作る
複素関数の値を可視化したいときは、x = -π〜π を細かく刻み、それぞれに IMSIN を適用してから絶対値や実部・虚部を別列に取り出します。
A2: -3.14
A3: =A2+0.1 ← 0.1刻みで増やす
B2: =IMSIN(COMPLEX(A2, 0.5)) ← 虚部固定でサインを評価
C2: =IMREAL(B2) ← 実部
D2: =IMAGINARY(B2) ← 虚部
E2: =IMABS(B2) ← 絶対値
C列〜E列をグラフ化すれば、IMSINの実部・虚部・絶対値の振る舞いが一目で分かりますね。複素三角関数の学習用シートとして再利用しやすい形です。
活用例5: IMSINHとの関係を確認する
複素双曲線正弦 sinh(z) と複素正弦 sin(z) には sinh(z) = -i·sin(iz) という関係があります。純虚数を入れると sin(bi) = i·sinh(b) になるので、IMSIN・IMSINHを並べると関係が一目で分かりますよ。
A2: =COMPLEX(0, 1) ← z = 0+1i
B2: =IMSIN(A2) ← sin(i) = i·sinh(1) ≈ 0+1.1752i
C2: =IMSINH(COMPLEX(1, 0)) ← sinh(1) ≈ 1.1752+0i
D2: =IMAGINARY(B2) ← B2の虚部 ≈ 1.1752
E2: =IMREAL(C2) ← C2の実部 ≈ 1.1752
D2とE2が一致すれば、複素三角関数と複素双曲線関数の橋渡しができていますね。複素関数論の教科書で出てくる定義式を、シート上で実感しやすい組み方です。
IMSIN関数とCOMPLEX関数群の関係
複素数を扱う関数群の中で、IMSIN関数の位置づけを整理しておきましょう。
| 関数 | 入力 | 出力 | 役割 |
|---|---|---|---|
| COMPLEX | 実数 a, b | 複素数 a+bi | 複素数を作る |
| IMREAL | 複素数 a+bi | 実数 a | 実部を取り出す |
| IMAGINARY | 複素数 a+bi | 実数 b | 虚部を取り出す |
| IMABS | 複素数 a+bi | 実数 √(a²+b²) | 大きさを取り出す |
| IMARGUMENT | 複素数 a+bi | 実数 atan2(b,a) | 偏角を取り出す |
| IMSIN | 複素数 z | 複素数 sin(z) | サインを計算する |
| IMCOS | 複素数 z | 複素数 cos(z) | コサインを計算する |
| IMSEC | 複素数 z | 複素数 1/cos(z) | セカントを計算する |
| IMCSC | 複素数 z | 複素数 1/sin(z) | コセカントを計算する |
| IMSINH | 複素数 z | 複素数 sinh(z) | 双曲線正弦を計算する |
IMSINは「複素数から複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。
たとえば三平方の関係 sin²(z) + cos²(z) = 1 を IMPRODUCT・IMSUM で組めば、IMSIN・IMCOS の動作確認シートを作れますね。
=IMSUM(IMPRODUCT(IMSIN("1+1i"), IMSIN("1+1i")), IMPRODUCT(IMCOS("1+1i"), IMCOS("1+1i")))
結果はほぼ「1+0i」になるので、複素数でも三平方の関係が成り立っていることをシート上で確認できますよ。
双曲線版の正弦(sinh(z))が必要な場合は、専用のIMSINH関数を使うと意図が明確になりますよ。
IMSIN関数のよくあるエラーと対処法
#NUM! エラー(複素数の形式エラー)
複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。
=IMSIN("1+1I") → #NUM!(大文字のIは不可)
=IMSIN("1+1k") → #NUM!(i・j以外は不可)
=IMSIN("1+1i") → #NUM!(全角文字は不可)
対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。
スペースが入っている場合(例: "1 + 1i")も認識できないことがあるので、余計な空白を除いておくと安心です。
#VALUE! エラー(引数の型エラー)
引数に論理値や、複素数として解釈できない値を渡したときに発生します。
=IMSIN(TRUE) → #VALUE!(論理値は不可)
=IMSIN(#N/A) → #N/A(エラー値はそのまま伝播)
対処法は、引数を必ず複素数文字列または数値、もしくは複素数を返す関数の結果として渡すことです。他システムからコピーした値はテキスト扱いになっていることがあるので、=ISTEXT(A2) や =ISNUMBER(A2) でチェックしておくと安心ですよ。
結果の桁が大きすぎる(虚部が大きい複素数)
複素数のサインは sin(a)·cosh(b) + i·cos(a)·sinh(b) という構造のため、虚部 b が大きくなると cosh(b)・sinh(b) が指数関数的に増大します。結果の絶対値もあわせて急増するので、桁あふれや浮動小数点誤差の影響を受けやすくなりますよ。
=IMSIN("0+10i") → 約 0+11013.23i(sinh(10)≈11013)
=IMSIN("0+20i") → 約 0+2.4×10⁸i(sinh(20)≈2.4億)
対処法は、入力する虚部の範囲を必要十分なところに絞ることです。グラフを描くときは虚部の絶対値が3〜5を超えると一気に値が跳ね上がります。軸スケールを対数にするか、IMABSで規格化してから描画しましょう。
結果の符号が想定と違う
複素数の正弦は実部方向に周期 2π を持ちつつ、虚部 b の符号で sinh(b) の符号が変わります。「なぜマイナスになるのか」と迷ったら、実部 a と虚部 b の値を確認しつつ、定義式に当てはめて符号を追ってみましょう。
=IMSIN("2+3i") → 約 9.1545-4.1689i
このケースでは cos(2) が約 -0.4161 と負の値です。そのため虚部「cos(2)·sinh(3) ≈ -0.4161 × 10.0179 ≈ -4.169」も負になっていますね。実数の cos(2) の符号を先に確認すれば、虚部の符号も納得できますよ。
IFERRORでまとめてエラーを吸収する
入力データの信頼性が低い場合は、IFERROR関数(エラー時に代替値を返す関数)で包んでおくとシート全体の集計が止まりません。
=IFERROR(IMSIN(A2), "形式エラー")
エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。
IMSIN関数とExcelの互換性
GoogleスプレッドシートのIMSIN関数は、ExcelのIMSIN関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。
ExcelファイルをGoogleスプレッドシートで開いてもIMSIN関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。
ExcelのIMSIN関数は、Excel 2013以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。Excel 2010以前のバージョンとファイルを共有する予定がある場合は、IMSUM・IMPRODUCT・IMEXP・IMDIVの組み合わせで代替する必要があるので、お使いのバージョンが対応しているか確認しておきましょう。
複素数関連の関数一覧
IMSIN関数と一緒に使うことが多い、複素数関連の関数をまとめました。
| 関数名 | 機能 |
|---|---|
| COMPLEX | 実数と虚数から複素数を作成する |
| IMREAL | 複素数の実数係数を返す |
| IMAGINARY | 複素数の虚数係数を返す |
| IMABS | 複素数の絶対値(大きさ)を返す |
| IMARGUMENT | 複素数の偏角(角度)をラジアンで返す |
| IMCONJUGATE | 共役複素数を返す |
| IMSUM | 複素数の合計(足し算)を返す |
| IMSUB | 複素数の差(引き算)を返す |
| IMPRODUCT | 複素数の積(掛け算)を返す |
| IMDIV | 複素数の商(割り算)を返す |
| IMPOWER | 複素数のべき乗を返す |
| IMSQRT | 複素数の平方根を返す |
| IMEXP | 複素数の指数関数を返す |
| IMLN | 複素数の自然対数を返す |
| IMSIN | 複素数のサイン(正弦)を返す |
| IMCOS | 複素数のコサインを返す |
| IMSEC | 複素数のセカント(正割)を返す |
| IMCSC | 複素数のコセカント(余割)を返す |
| IMSINH | 複素数の双曲線正弦を返す |
| IMSECH | 複素数の双曲線セカントを返す |
IMSIN関数は、これら複素数関数群の中で「サイン(正弦)を計算する」役割を担います。COMPLEXで作り、IMSINでサインを取り、IMABS・IMARGUMENTで絶対値と偏角を確認するのが基本パターンですね。
まとめ
GoogleスプレッドシートのIMSIN関数は、複素数の正弦(サイン)を返す関数です。信号処理のサイン応答、電気工学の交流回路解析、複素解析の学習教材、特殊関数の評価など、複素三角関数が必要な場面で欠かせない関数ですよ。
- 構文は
=IMSIN(複素数)で引数は1つだけ必須 - 「a+bi」を渡すと sin(a+bi) = sin(a)·cosh(b) + i·cos(a)·sinh(b) が返る
- 「a+bj」のような工学系表記もそのまま受け付ける
- 実部・虚部の単位はラジアン(度数の場合はRADIANS関数で変換)
- COMPLEX関数の結果やセル参照、複素数演算の結果からサインを計算できる
- 純虚数 0+bi の場合は i·sinh(b) と同値(IMSINHと密接な関係)
- 三平方の関係 sin²(z) + cos²(z) = 1 で IMCOS との検算ができる
- 虚部 b が大きいと cosh(b)・sinh(b) で絶対値が指数関数的に急増する
- ARRAYFORMULAで複数の複素数を一括処理できる
- 大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー
- 引数に論理値を渡すと #VALUE! エラー
- ExcelのIMSIN関数と完全互換(Excel 2013以降)
複素数の正弦が必要になったら、IMSIN関数の出番ですよ。COMPLEX関数で複素数を作り、IMSINでサインを取り、IMABS・IMARGUMENT・IMCOSで結果を検算する流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。
