「スプレッドシートで共役複素数を作りたいけど、虚部の符号を反転させる式を毎回書くのは面倒…」
スプレッドシートで複素数を扱っていると、「a+bi」から「a-bi」への変換、つまり共役複素数を作りたい場面がよくありますよね。IMREAL関数とIMAGINARY関数で実部と虚部を取り出して符号を反転させ、COMPLEX関数で組み立て直す…という手順を毎回踏むのはちょっと大変です。
そんなときに頼りになるのがGoogleスプレッドシートのIMCONJUGATE関数です。複素数を渡すだけで共役複素数を一発で返してくれるので、信号処理や電気回路解析の数式が一気にすっきりしますよ。
ExcelのIMCONJUGATE関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのまま共役を取り出せます。
この記事では、スプレッドシートのIMCONJUGATE関数の基本構文と実務での活用例を解説します。絶対値の二乗を求めるテクニックや、よくあるエラーと対処法もしっかり紹介していきますよ。
スプレッドシートのIMCONJUGATE関数とは?
GoogleスプレッドシートのIMCONJUGATE関数(イマジナリー・コンジュゲート関数)は、複素数の共役複素数を返す関数です。エンジニアリング関数(電気・物理・工学系の計算で使う関数群)のひとつに分類されますよ。
読み方は「イマジナリー・コンジュゲート」または「アイエム・コンジュゲート」で、英語の「imaginary number(虚数)」の「conjugate(共役)」に由来します。複素数「a+bi」に対して、虚部の符号だけを反転させた「a-bi」を返してくれるのが役割ですね。
そもそも共役複素数とは、複素数の虚部の符号を反転させた数のことです。複素平面上では、元の点を実軸(横軸)に対して鏡映した位置にあたりますね。元の数を z と書くと、共役は z̄(zバー)と表記され、z = a+bi なら z̄ = a-bi となります。
| 複素数(z) | 共役複素数(z̄) | 複素平面上の位置 |
|---|---|---|
| 3+4i | 3-4i | 実軸対称 |
| 1+1i | 1-1i | 実軸対称 |
| -2+5i | -2-5i | 実軸対称 |
| 5(実数) | 5 | 実軸上で変化なし |
| 0+3i(純虚数) | 0-3i | 実軸対称 |
| -1-1i | -1+1i | 実軸対称 |
IMCONJUGATE関数を使えば、この表の右側にある「共役複素数」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2007以降のすべてのバージョンに対応していますよ。
共役複素数は、複素数の絶対値の二乗(z × z̄ = |z|²)を求めたり、複素数の割り算(分母の有理化)に使ったりと、複素数演算の基礎パーツとして欠かせない存在ですね。
IMCONJUGATE関数の書き方(構文と引数)
基本構文
=IMCONJUGATE(複素数)
引数は1つだけのシンプルな関数です。
引数の詳細
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 複素数(inumber) | 必須 | 共役を求めたい複素数。文字列またはセル参照で指定する |
引数には「”3+4i”」や「”3+4j”」のような複素数文字列を直接渡せます。COMPLEX関数(実数と虚数から複素数を作成する関数)の結果や、複素数が入ったセルの参照も指定できますよ。
虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMCONJUGATE関数はどちらでも同じように動作してくれます。
TIP
戻り値は元の入力と同じ虚数単位で返されます。「3+4i」を渡せば「3-4i」、「3+4j」を渡せば「3-4j」が返るので、表記の統一性も保たれますよ。
IMCONJUGATE関数の基本的な使い方
文字列で複素数を直接指定する
複素数文字列をそのまま引数に渡してみましょう。
=IMCONJUGATE("3+4i")
結果は「3-4i」になります。実部の3はそのまま、虚部の符号だけが反転していますね。
虚部がもともとマイナスの場合は、符号が反転してプラスになります。
=IMCONJUGATE("3-4i")
結果は「3+4i」です。共役を2回取ると元に戻る、という性質を確認できますね。
実数(虚部が0)を渡すと、変化なしでそのまま返ります。
=IMCONJUGATE("5")
=IMCONJUGATE("5+0i")
どちらも結果は「5」です。実数は虚部が0なので、符号を反転しても変わらないんですね。
セル参照で複素数を指定する
実務ではセルに入った複素数を扱う場面が多いですよね。A2に「1+1i」が入っている場合は次のように書きます。
=IMCONJUGATE(A2)
結果は「1-1i」になります。セル参照を渡すだけで、入っている複素数の共役を取り出せますよ。
COMPLEX関数と組み合わせる
COMPLEX関数で作った複素数の共役を、その場で取り出すこともできます。
=IMCONJUGATE(COMPLEX(2, 3))
結果は「2-3i」、つまり実部2・虚部-3の複素数ですね。COMPLEX(2, 3)が内部で「2+3i」を作り、IMCONJUGATE関数がその共役を返してくれます。
複素数の作成と共役計算を一気にやりたいときに便利な書き方ですよ。
純虚数の共役
純虚数(実部が0で虚部だけある複素数)を渡すと、虚部の符号だけが反転します。
=IMCONJUGATE("3i")
結果は「-3i」です。虚軸上の点が、原点を挟んだ反対側に移動するイメージですね。電気工学のリアクタンス(虚部のみのインピーダンス)を扱うときに登場するパターンです。
ARRAYFORMULAで複数行を一括処理する
複素数のリストから一気に共役の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数(数式を範囲全体に展開する関数)と組み合わせます。
=ARRAYFORMULA(IMCONJUGATE(A2:A10))
A列に並んだ複素数から、対応する共役複素数をB列に一発で展開できますよ。共役のリストを作るときに重宝しますね。
IMCONJUGATE関数の実務活用例
活用例1: 絶対値の二乗(|z|²)を求める
複素数の絶対値の二乗は「z × z̄ = a² + b²」という性質があります。IMPRODUCT関数(複素数の掛け算)とIMCONJUGATE関数を組み合わせれば、シンプルに計算できますよ。
セルA2に「3+4i」が入っているとしましょう。
=IMREAL(IMPRODUCT(A2, IMCONJUGATE(A2)))
結果は「25」です。3² + 4² = 9 + 16 = 25 という計算ですね。z × z̄ は実数になるので、IMREAL関数(複素数の実数部を返す関数)で実部を取り出して数値として扱います。
IMABS関数で =IMABS(A2)^2 と書く方法もありますが、共役を使った形は数学的な定義そのままなので、計算プロセスを示したい資料では好まれますよ。
活用例2: 信号処理でのパワースペクトル
信号処理のフーリエ変換(信号を周波数成分に分解する手法)では、各周波数成分が複素数で出力されます。パワースペクトル(周波数ごとのエネルギー強度)は「X × X̄」つまり複素数とその共役の積で求められますね。
A列にフーリエ変換結果の複素数が並んでいるとします。
B2: =IMCONJUGATE(A2) ← 共役
C2: =IMREAL(IMPRODUCT(A2, B2)) ← パワー(|X|²)
各周波数のパワーを取り出せれば、ノイズ解析や音声・画像処理の前処理に活用できますよ。数値計算ソフトで出した複素スペクトルをスプレッドシートに貼り付けて分析するときの定番パターンですね。
活用例3: 複素数の割り算(分母の有理化)
複素数の割り算は、分子と分母の両方に分母の共役を掛けて分母を実数化する、というのが定番手法です。IMDIV関数を使えば一発ですが、内部で行われている計算を可視化したいときにIMCONJUGATEが活躍しますよ。
たとえば「(1+2i) ÷ (3+4i)」を共役を使って計算する流れはこうなります。
A2: 1+2i ← 分子
B2: 3+4i ← 分母
C2: =IMCONJUGATE(B2) ← 分母の共役 → 3-4i
D2: =IMPRODUCT(A2, C2) ← 分子に掛ける → 11+2i
E2: =IMREAL(IMPRODUCT(B2, C2)) ← 分母×共役 → 25(実数化)
F2: =COMPLEX(IMREAL(D2)/E2, IMAGINARY(D2)/E2) ← 最終結果 → 0.44+0.08i
最終結果はIMDIVで =IMDIV(A2, B2) と書いた場合と一致しますよ。複素数の割り算を学ぶ場面や、計算過程を見せたいレポートで便利なパターンですね。
活用例4: 電気回路の電力計算(皮相電力)
交流回路の皮相電力は「S = V × Ī」という式で求められます。電圧Vと電流Iの共役の積を取ると、有効電力(実部)と無効電力(虚部)に分解できる便利な性質ですよ。
セルA2に電圧「100+0i」、B2に電流「8+6i」が入っているとしましょう。
=IMPRODUCT(A2, IMCONJUGATE(B2))
結果は「800-600i」になります。実部の800が有効電力(W)、虚部の-600が無効電力(var)ですね。電力会社や工場の電気設備を扱う現場で登場する基本式です。
各成分を取り出すならこう書けます。
有効電力: =IMREAL(IMPRODUCT(A2, IMCONJUGATE(B2)))
無効電力: =IMAGINARY(IMPRODUCT(A2, IMCONJUGATE(B2)))
皮相電力: =IMABS(IMPRODUCT(A2, IMCONJUGATE(B2)))
皮相電力の大きさ、有効電力、無効電力を一気に把握できますよ。電力分析シートを作るときの定番セットですね。
活用例5: 二次方程式の複素解の対応関係チェック
実数係数の二次方程式が複素解を持つ場合、2つの解は必ず共役の関係になります。スプレッドシートで解を求めた後、共役の関係になっているか確認したいときに使えますね。
A2に1つ目の解「2+3i」、B2に2つ目の解「2-3i」が入っているとします。
=IF(IMCONJUGATE(A2)=B2, "共役の関係です", "共役ではありません")
数式処理ソフトで求めた解をスプレッドシートに貼り付けて、自動チェックする使い方ができますよ。教育用の教材や、検算シートを作るときに重宝しますね。
IMCONJUGATE関数とCOMPLEX関数群の関係
複素数を扱う関数群の中で、IMCONJUGATE関数の位置づけを整理しておきましょう。
| 関数 | 入力 | 出力 | 役割 |
|---|---|---|---|
| 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 | 共役を作る |
IMREALやIMABSが「複素数から実数を取り出す」のに対して、IMCONJUGATE関数は「複素数から複素数を作る」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。
たとえばIMREALとIMAGINARYで分解してCOMPLEXで組み直す書き方をすると次のようになります。
=COMPLEX(IMREAL(A2), -IMAGINARY(A2))
これはIMCONJUGATEと同じ結果になりますが、3つの関数を組み合わせる必要がありますよね。IMCONJUGATEを使えば1関数で済むので、数式が読みやすくなります。
IMCONJUGATE関数のよくあるエラーと対処法
#NUM! エラー(複素数の形式エラー)
複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。
=IMCONJUGATE("3+4I") → #NUM!(大文字のIは不可)
=IMCONJUGATE("3+4k") → #NUM!(i・j以外は不可)
=IMCONJUGATE("3+4i") → #NUM!(全角文字は不可)
対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。
スペースが入っている場合(例: "3 + 4i")も認識できないことがあるので、余計な空白を除いておくと安心です。
#VALUE! エラー(引数の型エラー)
引数に論理値やエラー値を渡したときに発生します。
=IMCONJUGATE(TRUE) → #VALUE!(論理値は不可)
=IMCONJUGATE(#N/A) → #VALUE!(エラー値は不可)
対処法は、正しい複素数文字列または数値・セル参照を渡すことです。入力元のセルがエラーになっている場合は、そのエラーを先に解消する必要がありますよ。
数値そのものを渡した場合
数値(虚部0の実数)を渡すと、共役は同じ実数なのでそのまま返ります。
=IMCONJUGATE(5) → "5"
=IMCONJUGATE(0) → "0"
エラーにはなりませんが、戻り値は文字列として扱われる点に注意してくださいね。後続の数値計算で使う場合は、IMREAL関数を被せて数値に戻す必要があるかもしれません。
IFERRORでまとめてエラーを吸収する
入力データの信頼性が低い場合は、IFERROR関数(エラー時に代替値を返す関数)で包んでおくとシート全体の集計が止まりません。
=IFERROR(IMCONJUGATE(A2), "形式エラー")
エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。
IMCONJUGATE関数とExcelの互換性
GoogleスプレッドシートのIMCONJUGATE関数は、ExcelのIMCONJUGATE関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。
ExcelファイルをGoogleスプレッドシートで開いてもIMCONJUGATE関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。
ExcelのIMCONJUGATE関数は、Excel 2007以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。プラットフォーム間で挙動が同じだと、ファイル共有のときにも安心です。
複素数関連の関数一覧
IMCONJUGATE関数と一緒に使うことが多い、複素数関連の関数をまとめました。
| 関数名 | 機能 |
|---|---|
| COMPLEX | 実数と虚数から複素数を作成する |
| IMREAL | 複素数の実数係数を返す |
| IMAGINARY | 複素数の虚数係数を返す |
| IMABS | 複素数の絶対値(大きさ)を返す |
| IMARGUMENT | 複素数の偏角(角度)をラジアンで返す |
| IMCONJUGATE | 共役複素数を返す |
| IMSUM | 複素数の合計(足し算)を返す |
| IMSUB | 複素数の差(引き算)を返す |
| IMPRODUCT | 複素数の積(掛け算)を返す |
| IMDIV | 複素数の商(割り算)を返す |
| IMEXP | 複素数の指数関数を返す |
| IMLN | 複素数の自然対数を返す |
| IMSQRT | 複素数の平方根を返す |
IMCONJUGATE関数は、これら複素数関数群の中で「共役を作る」役割を担います。COMPLEXで作り、IMCONJUGATEで共役を取り、IMPRODUCTと組み合わせて絶対値の二乗やパワーを計算するのが基本パターンですね。
まとめ
GoogleスプレッドシートのIMCONJUGATE関数は、複素数の共役複素数を返す関数です。信号処理のパワースペクトル計算や、電気回路の電力解析、複素数の割り算など、複素数演算の基礎パーツとして欠かせない関数ですよ。
- 構文は
=IMCONJUGATE(複素数)で引数は1つだけのシンプルな関数 - 「a+bi」を渡すと「a-bi」が返る(虚部の符号が反転する)
- 「a+bj」のような工学系表記もそのまま受け付ける
- 共役を2回取ると元の複素数に戻る
- 実数(虚部0)を渡すと変化なしで同じ値が返る
- COMPLEX関数の結果やセル参照、複素数演算の結果から共役を取り出せる
- IMPRODUCTと組み合わせると絶対値の二乗(|z|² = z × z̄)が求まる
- 信号処理のパワースペクトル(X × X̄)を計算できる
- 電気回路の皮相電力(V × Ī)の計算でも活躍する
- ARRAYFORMULAで複数の複素数を一括処理できる
- 大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー
- 論理値やエラー値を渡すと #VALUE! エラー
- ExcelのIMCONJUGATE関数と完全互換(Excel 2007以降)
複素数の共役が必要になったら、IMCONJUGATE関数の出番ですよ。COMPLEX関数で複素数を作り、IMCONJUGATEで共役を取り、IMPRODUCTで絶対値の二乗やパワーを計算する流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。
