電気回路や制御工学のレポートをExcelでまとめていると、複素数のまま対数計算をしたい場面に出くわします。そんなときに役立つのが IMLOG10関数 です。実数に変換することなく、複素数のまま常用対数(底10の対数)を求められるので、計算式がシンプルにまとまります。
この記事では、IMLOG10関数の読み方や構文の基本から、デシベル計算・ボード線図といった実務での使いどころ、よくあるエラーの直し方、そしてIMLN・IMLOG2との使い分けまでまとめて解説します。
IMLOG10関数とは?
読み方と語源
IMLOG10関数の読み方は「イマジナリー・ログ・テン」です。関数名は「IM(Imaginary=虚数の)+ LOG10(底10の対数)」に由来します。先頭のIMがついているので、「複素数版のLOG10関数」と覚えるとイメージしやすいでしょう。
Excelの関数分類では「エンジニアリング関数」に含まれています。IMSUM・IMPRODUCT・IMABS・IMLN など、複素数を扱う関数群(IMファミリー)の一員です。
できること
IMLOG10関数は、指定した 複素数の常用対数(10を底とする対数) を返します。数学的には、複素数 z = x + yi に対して log₁₀(z) を計算し、結果を "a+bi" の形式の 文字列 で返す関数です。
具体的には次の関係式に基づいて計算されます。
log₁₀(z) = log₁₀|z| + (arg(z) / ln(10)) * i
つまり、実部に「絶対値の常用対数」、虚部に「偏角を自然対数の10で割った値」を入れた複素数を返してくれる、というわけです。手で計算しようとするとそれなりに面倒な変換ですが、IMLOG10関数なら1行で済みます。
複素数の常用対数は、デシベル計算(音圧・電圧比)やボード線図の作図など、信号処理・電気工学の現場でよく登場します。Excelだけで一連の処理を済ませたいときに便利な関数です。
なお、計算対象となる複素数は COMPLEX関数 を使って 実部+虚部i の形式で作成できます。
IMLOG10関数の構文
=IMLOG10(複素数)
引数は1つだけで、省略はできません。
| 引数 | 必須 | 内容 |
|---|---|---|
| 複素数 | 必須 | 常用対数を求めたい複素数を "x+yi" または "x+yj" の形式で指定 |
ポイントは、引数は文字列として扱われるということ。セルに -4+6i と入力しておけば、そのセル参照をそのまま渡せます。i の代わりに j を使う電気工学系の記法(虚数単位として j を採用)にも対応しているのが地味に便利です。
戻り値も同じく文字列形式の複素数です。そのまま四則演算には使えないので、数値として扱いたい場合は実部・虚部を分けて取り出す必要があります(後述)。
IMLOG10関数の使い方(具体例)
例1: 関数内に直接複素数を指定する
=IMLOG10("-4+6i")
この式は、複素数 -4+6i の常用対数を計算し、0.858...+0.878...i のような文字列を返します。複素数を文字列リテラルで指定するときは、ダブルクォーテーションで囲むのを忘れないようにしましょう。
例2: セル参照で指定する
A1セルに 3+4i と入力しておき、別のセルで次のように記述します。
=IMLOG10(A1)
結果は 0.698...+0.402...i となり、A1の値を書き換えるだけで再計算できます。複数の複素数をまとめて処理したい場合は、この形でオートフィルするのがおすすめです。
例3: COMPLEX関数と組み合わせる
実部・虚部が別々のセルに入っている場合は、COMPLEX関数で複素数を組み立ててから渡します。
=IMLOG10(COMPLEX(A2, B2))
A2に実部、B2に虚部が入っていれば、この1本の式で常用対数まで一気に求められます。データ表が「実部列・虚部列」で構成されているときに重宝するパターンです。
例4: 実部・虚部を取り出して数値として扱う
IMLOG10の結果は文字列なので、その先のグラフ化や数式に使うときは IMREAL関数 と IMAGINARY関数 で実部と虚部を抽出します。
=IMREAL(IMLOG10(A1)) → 実部(log₁₀|z|)
=IMAGINARY(IMLOG10(A1)) → 虚部(arg(z)/ln(10))
実部だけ取り出せば、そのままデシベル計算(後述)に流せます。虚部は位相情報を表すので、ボード線図の位相遅れと組み合わせるときに使います。
実務での活用シーン
デシベル計算の補助
電圧比や電力比を複素数のまま扱いたいときに、実数変換を経由せず 20*log₁₀|H| の計算に持ち込めます。たとえば伝達関数 H = 3+4i のゲインを求めたい場合、次の流れで計算できます。
=20 * IMREAL(IMLOG10(COMPLEX(3, 4)))
IMLOG10 で複素数のまま常用対数を取り、IMREAL で実部(つまり log₁₀|H|)を取り出し、20倍してデシベルにする、という1本の式です。IMABS を使って =20*LOG10(IMABS("3+4i")) と書いても同じ結果が得られますが、IMLOG10を経由するとそのまま位相情報(虚部)も同じセル系で扱えるのがメリットです。
伝達関数の解析・ボード線図
制御工学のボード線図では、各周波数 ω における伝達関数 H(jω) の値からゲイン(dB)と位相(度)を求めます。Excel上で周波数列・実部列・虚部列を並べたデータシートを用意し、次のように計算するとボード線図用のデータが一発で揃います。
ゲイン[dB] = 20 * IMREAL(IMLOG10(COMPLEX(実部, 虚部)))
位相[rad] = IMARGUMENT(COMPLEX(実部, 虚部))
ゲインの式で IMLOG10 を使うと、絶対値を経由せずに log₁₀|H| が取り出せます。LN(10)で割る必要もないので、手計算より見通しが良くなります。
学習・レポート作成
大学の電気回路・信号処理の課題で、Excelだけで計算過程を示したいときにも便利です。複素数の対数を手で展開してレポートに書く代わりに、IMLOG10で求めた値を表組みで提示すれば、計算ミスのリスクも減らせます。
特に、虚部を含んだままログを取りたいケースでは、わざわざ絶対値と偏角に分解しなくて済むのが大きなメリットです。
実数変換した場合との比較
「結局、LOG10(IMABS(z)) で済むのでは?」と思うかもしれません。確かにゲインだけが欲しいならその通りです。しかし、IMLOG10には「位相情報を同じ式で扱える」という強みがあります。
| 求めたいもの | 実数変換ルート | IMLOG10ルート |
|---|---|---|
| ゲインのみ | =LOG10(IMABS(z)) | =IMREAL(IMLOG10(z)) |
| 位相情報も同時に | 別途 IMARGUMENT(z)/LN(10) | =IMAGINARY(IMLOG10(z)) |
| 複素対数全体を1セルで保持 | 不可(文字列で組み直す必要あり) | 可能(文字列のまま保持) |
ボード線図のような「ゲイン+位相をペアで管理する」用途では、IMLOG10で1度計算しておくと、実部・虚部の取り出しだけで両方の値が揃います。途中計算を1セルにまとめておきたい場合に向いた関数です。
よくあるエラーと対処法
| エラー | 原因 | 対処 |
|---|---|---|
#NUM! | 複素数 0+0i を指定した(log₁₀(0) は定義されない) | 0以外の複素数を指定する |
#VALUE! | "x+yi" の形式になっていない/全角文字が混ざっている | 半角英数字で -4+6i のように入力し直す |
| 文字列として表示される | 結果はあくまで文字列。そのまま四則演算できない | 実部は IMREAL関数、虚部は IMAGINARY関数 で取り出す |
#NAME? | 関数名のスペルミス(IMLOG・IMLOG_10 など) | IMLOG10(途中にアンダースコアやスペースなし)で入力する |
引数に整数(例: =IMLOG10(100))を渡した場合は、100+0i として扱われ、通常の常用対数 2 が返ります。実数のみを対象にしたいなら、標準の LOG10関数 のほうが軽くて扱いやすいので使い分けましょう。
また、Excelの仕様上、複素数の文字列に空白を含めるとエラーになります。"-4 + 6i" ではなく "-4+6i" のように、スペースを入れずに記述してください。
関連関数との使い分け
複素数の対数まわりには、底ちがいの関数がそろっています。用途に応じて選んでください。
セットで使うことが多い関数も合わせて覚えておくと便利です。
- IMABS関数: 複素数の絶対値(モジュラス)を求める
- IMARGUMENT関数: 複素数の偏角(アーギュメント)を求める
- COMPLEX関数: 実部と虚部から複素数を作成する
- IMREAL関数 / IMAGINARY関数: 結果から実部・虚部を取り出す
「ゲインだけ欲しい」ならIMABS+LOG10、「位相も合わせて1セルで管理したい」ならIMLOG10、というように目的に合った関数を選びましょう。
まとめ
IMLOG10関数は、複素数を複素数のまま常用対数に変換できる便利なエンジニアリング関数です。
- 構文は
=IMLOG10(複素数)とシンプル - 引数は
"x+yi"形式の文字列またはセル参照(j表記もOK) - 結果は文字列。実部は IMREAL、虚部は IMAGINARY で取り出す
0+0iを渡すと#NUM!エラー- 実数だけなら LOG10、自然対数なら IMLN、底2なら IMLOG2 と使い分ける
- デシベル計算・ボード線図のゲイン算出と相性がよい
電気・制御・信号処理のレポートをExcelだけで完結させたいときに、頭の片隅に置いておくと役立つ一本です。COMPLEX関数やIMREAL/IMAGINARY関数と組み合わせて、複素数計算のワークフローを組み立ててみてください。