Excelで複素数の対数を求めたいとき、「底が2の場合はどうすればいいんだろう?」と迷うことはありませんか。通常のLOG関数は実数にしか対応していないので、複素数を渡すとエラーになってしまいます。
そんなときに使えるのが IMLOG2関数 です。複素数を渡すだけで、2を底とする対数(log2(z))の結果を複素数で返してくれますよ。
この記事では、IMLOG2関数の基本的な書き方から実践的な活用例、よくあるエラーの対処法まで、サンプルデータ付きでわかりやすく解説します。
ExcelのIMLOG2関数とは?
IMLOG2関数は、複素数 z に対して 2を底とする対数(log2(z)) を複素数で返すExcelのエンジニアリング関数です。
読み方は 「イマジナリー・ログ・ツー」 です。「IM」は Imaginary(虚数・複素数)、「LOG2」は base-2 Logarithm(2を底とする対数)を意味しています。
底2対数とは?
対数(ログ)は「ある数を何乗したらその値になるか」を求める演算です。底2対数の場合は「2を何乗したらその値になるか」を計算します。
たとえば log2(8) = 3 は、「2を3乗すると8になる」ということです。情報理論やコンピュータサイエンスではビット数の計算に底2対数が使われるため、なじみのある方も多いかもしれませんね。
IMLOG2関数はこの底2対数を複素数の世界に拡張したものです。数学的には、複素数 z の底2対数は次の式で定義されます。
log2(z) = ln(z) / ln(2)
ここで ln は自然対数です。手計算だと面倒ですが、IMLOG2関数を使えば一発で求められますよ。
入力と出力のイメージ
- 入力: 複素数(例: “1+2i”)
- 出力: log2(z) の結果を複素数で(例: “1.16096404744368+1.59727796468811i”)
結果も複素数で返ってくるのがポイントです。実数のLOG関数は正の値にしか使えませんが、IMLOG2関数は負の数や虚数を含む複素数にも対応しています。
IMLOG2関数の書き方(構文と引数)
基本構文
=IMLOG2(複素数)
引数は1つだけなので、とてもシンプルです。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 複素数 | 必須 | 2を底とする対数を求めたい複素数。”x+yi” または “x+yj” のテキスト形式で指定します |
引数には、次のいずれかの方法で値を渡せます。
- 文字列で直接指定:
=IMLOG2("3+4i") - セル参照:
=IMLOG2(A1)(A1セルに複素数が入っている場合) - COMPLEX関数の結果:
=IMLOG2(COMPLEX(3,4))
COMPLEX関数を使えば、実部と虚部を別々に指定して複素数を作れます。セルの値を組み合わせたいときに便利ですよ。
ExcelでのIMLOG2関数の基本的な使い方
実際にIMLOG2関数を使ってみましょう。
例1: セルの複素数から底2対数を求める
セルA1に「3+4i」が入っているとします。
=IMLOG2(A1)
結果: 2.32192809488736+1.33780421245098i
log2(5) は約2.32ですが、虚部の影響で結果は複素数になります。実部は複素数の絶対値の底2対数に近い値になっていますよ。
例2: 関数内に直接値を指定する
セル参照を使わず、テキストで複素数を直接指定することもできます。
=IMLOG2("8")
結果: 3
8は実数なので、結果はシンプルに3です。2^3 = 8 ですから、底2対数は3になるわけですね。
例3: COMPLEX関数と組み合わせる
実部と虚部を別々のセルで管理している場合は、COMPLEX関数と組み合わせると便利です。
セルA1に「1」、B1に「1」が入っているとき:
=IMLOG2(COMPLEX(A1, B1))
結果: 0.5+1.13309003611042i
COMPLEX関数が「1+i」を作成し、IMLOG2関数が底2対数に変換する流れです。
例4: 純虚数を渡した場合
純虚数(実部がゼロの複素数)を渡すこともできます。
=IMLOG2("4i")
結果: 2+2.26618007222084i
実部の2は「4の底2対数 = 2」に対応し、虚部は i の偏角(pi/2)を ln(2) で割った値です。ちょっとむずかしく見えますが、IMLOG2関数に渡すだけで自動計算してくれるので安心してくださいね。
IMLOG2関数の実践的な活用例
複数の複素数の底2対数を一括計算する
複素数がA1:A5に並んでいる場合、B1にIMLOG2関数を入力してB5までコピーすれば、まとめて底2対数を求められます。
=IMLOG2(A1)
| セル | 複素数(A列) | log2(z) の結果(B列) |
|---|---|---|
| 1行目 | 2 | 1 |
| 2行目 | 4+3i | 2.32192809488736+0.89853614163399i |
| 3行目 | 1+i | 0.5+1.13309003611042i |
| 4行目 | -1 | 0+4.53236014444168i |
| 5行目 | 8i | 3+2.26618007222084i |
4行目の log2(-1) は実部が0、虚部が pi/ln(2) になる点に注目してください。負の実数の対数も複素数として計算できるのがIMLOG2関数の強みですよ。
IMEXP関数と組み合わせて検算する
IMLOG2関数で求めた対数を使って、元の複素数に戻してみましょう。底2対数の逆演算は「2のz乗」です。
セルA1に「3+4i」が入っているとき:
=IMPOWER("2", IMLOG2(A1))
結果: 3+4i(元の値に戻る)
IMPOWER関数で2をIMLOG2の結果乗すると、もとの複素数に戻ります。計算結果の検算に使えるので覚えておくと便利ですよ。
IMLN関数・IMLOG10関数と底を変換する
底の変換公式を使うと、IMLOG2関数の結果からIMLN(自然対数)やIMLOG10(常用対数)の値を求められます。
log2(z) = ln(z) / ln(2) = log10(z) / log10(2)
つまり、次の3つの関数は底が違うだけで同じ対数を異なるスケールで表しています。
底が大きいほど値が小さくなるイメージです。用途に応じて使い分けてくださいね。
よくあるエラーと対処法
#NUM! エラー
引数に有効な複素数として認識できない値を渡すと、#NUM! エラーが表示されます。
よくある原因と対処法:
| 原因 | 例 | 対処法 |
|---|---|---|
| 複素数のテキスト形式が正しくない | =IMLOG2(“3+4”) | 虚数単位の「i」または「j」を末尾に付ける |
| 数値の間にスペースが入っている | =IMLOG2(“3 + 4i”) | スペースをすべて削除する |
| 全角文字が混在している | =IMLOG2(“3+4i”) | 半角英数字で入力し直す |
| ゼロ(0)を渡した | =IMLOG2(“0”) | log2(0) は数学的に定義されない。0以外の値を指定する |
虚数単位の「i」を付け忘れるケースが一番多いので、気を付けてくださいね。また、ゼロの対数は定義されないため、引数に0を渡してもエラーになります。
#VALUE! エラー
引数が数値でもテキストでもない場合(論理値や空のセルなど)に、#VALUE! エラーが発生します。
=IMLOG2(TRUE) → #VALUE!エラー
=IMLOG2("") → #VALUE!エラー
セル参照を使う場合は、参照先に正しい複素数テキストが入っているか確認してみてください。
#NAME? エラー
関数名のスペルミスで発生します。「IMLOG2」を「IMLOG」などと書いていないか確認しましょう。また、Excel 2007より前のバージョンではIMLOG2関数が使えない場合があります。お使いのバージョンが対応しているか、確認しておきましょう。
似た関数との違い・使い分け
IMLOG2関数と一緒に使うことが多い関連関数を整理しておきましょう。
| 関数名 | 機能 | 使用例 |
|---|---|---|
| LOG | 実数の対数を指定した底で求める | =LOG(8,2) → 3 |
| IMLN | 複素数の自然対数を求める | =IMLN(“3+4i”) → 1.609…+0.927…i |
| IMLOG10 | 複素数の常用対数を求める | =IMLOG10(“3+4i”) → 0.698…+0.402…i |
| IMEXP | 複素数の指数関数(e^z)を求める | =IMEXP(“1+2i”) |
| IMPOWER | 複素数のべき乗を求める | =IMPOWER(“2+3i”,2) |
| COMPLEX | 実部と虚部から複素数を作成 | =COMPLEX(3,4) → “3+4i” |
| IMABS | 複素数の絶対値を求める | =IMABS(“3+4i”) → 5 |
| IMARGUMENT | 複素数の偏角を求める | =IMARGUMENT(“3+4i”) → 0.927… |
LOG関数との違い: LOG関数は正の実数にしか使えませんが、IMLOG2関数は複素数にも対応しています。実数だけを扱う場面ではLOG関数で十分です。複素数のデータを含む場面ではIMLOG2関数を使い分けてくださいね。
まとめ
IMLOG2関数は、複素数の2を底とする対数(log2(z))を返すExcelのエンジニアリング関数です。
この記事のポイントをおさらいしましょう。
- IMLOG2関数は複素数を渡すだけで底2対数を複素数で返してくれる
- 引数は1つだけ。”x+yi” 形式のテキストで複素数を渡す
- 数学的には ln(z) / ln(2) を計算している
- IMPOWER(“2”, IMLOG2(z)) で元の値に戻せるので検算に使える
- IMLN(自然対数)やIMLOG10(常用対数)とは底が違うだけ
- エラーが出たら、虚数単位(i / j)の付け忘れやゼロ入力をチェック
複素数の底2対数をExcelで効率的に計算したい方は、ぜひ活用してみてくださいね。
