「スプレッドシートで複素数のべき乗を計算したいけど、(a+bi)を何度も掛け算するのは面倒…」
スプレッドシートで複素数を扱っていると、2乗や3乗、平方根といったべき乗計算が必要になる場面がありますよね。実部と虚部を展開して i² = -1 で整理し、最後に再び複素数の形に戻す…という手順を毎回踏むのはちょっと大変です。
そんなときに頼りになるのがGoogleスプレッドシートのIMPOWER関数です。複素数と指数を渡すだけでべき乗の値を一発で返してくれるので、ド・モアブルの定理やフラクタル計算の数式が一気にすっきりしますよ。
ExcelのIMPOWER関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのままべき乗を計算できます。
この記事では、スプレッドシートのIMPOWER関数の基本構文と実務での活用例を解説します。ド・モアブルの定理に基づく内部計算の仕組みや、よくあるエラーと対処法もしっかり紹介していきますよ。
スプレッドシートのIMPOWER関数とは?
GoogleスプレッドシートのIMPOWER関数(イマジナリー・パワー関数)は、複素数のべき乗(n乗)を返す関数です。エンジニアリング関数(電気・物理・工学系の計算で使う関数群)のひとつに分類されますよ。
読み方は「イマジナリー・パワー」または「アイエム・パワー」で、英語の「imaginary number(虚数)」の「power(べき乗)」に由来します。複素数「a+bi」と指数nに対して、(a+bi)のn乗を返してくれるのが役割ですね。
そもそも複素数のべき乗とは、実数のべき乗を複素数全体に拡張したものです。極形式とド・モアブルの定理から導かれる定義式は次のようになります。
(r(cosθ + i sinθ))^n = r^n × (cos(nθ) + i sin(nθ))
絶対値はn乗、偏角(角度)はn倍されるというシンプルなルールですね。指数nには整数だけでなく、小数や負の数も指定できるので、平方根や逆数の計算にも使えるのが特徴です。
| 複素数(z)と指数(n) | IMPOWER(z,n)の結果 | 内部計算 |
|---|---|---|
| (2+3i)^2 | -5+12i | (2+3i)×(2+3i) を展開 |
| (1+1i)^3 | -2+2i | 絶対値√2を3乗、偏角π/4を3倍 |
| (3+4i)^(-1) | 0.12-0.16i | 逆数(共役/絶対値の2乗) |
| (-1+0i)^0.5 | 約 0+1i | √(-1) = i |
| (8+0i)^(1/3) | 2+0i | 立方根 |
IMPOWER関数を使えば、この表の右側にある「複素数のべき乗」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2007以降のすべてのバージョンに対応していますよ。
複素数のべき乗は、電気工学のインピーダンス計算・信号処理のフーリエ変換・制御工学の極零解析・フラクタル(マンデルブロ集合)など、複素数演算が必要な場面で活躍する基礎パーツですね。
IMPOWER関数の書き方(構文と引数)
基本構文
=IMPOWER(複素数, 指数)
引数は2つあり、どちらも必須です。
引数の詳細
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 複素数(inumber) | 必須 | べき乗を求めたい複素数。文字列またはセル参照で指定する |
| 指数(number) | 必須 | 何乗するかを示す数値。整数・小数・負の数が指定できる |
引数1には「”2+3i”」や「”2+3j”」のような複素数文字列を直接渡せます。COMPLEX関数(実数と虚数から複素数を作成する関数)の結果や、複素数が入ったセルの参照も指定できますよ。
虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMPOWER関数はどちらでも同じように動作してくれます。
TIP
戻り値は元の入力と同じ虚数単位で返されます。「1+1i」を渡せば「i」付きで、「1+1j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。
引数2の指数には、2のような整数のほか、0.5(平方根)、-1(逆数)、1/3(立方根)といった任意の実数を指定できます。文字列ではなく数値として渡す点に注意してくださいね。
IMPOWER関数の基本的な使い方
文字列で複素数を直接指定する
複素数文字列をそのまま引数に渡してみましょう。
=IMPOWER("2+3i", 2)
結果は「-5+12i」になります。手計算で確認すると (2+3i)² = 4 + 12i + 9i² = 4 + 12i – 9 = -5 + 12i なので、計算が合っていますね。
実部だけの複素数(虚部0)を渡すと、通常のべき乗と同じ結果になります。
=IMPOWER("2+0i", 3)
結果は「8」です。2の3乗 = 8 という基本的な値が返ってきますね。
虚部だけの純虚数を渡すと、i のべき乗の循環が確認できます。
=IMPOWER("0+1i", 2)
=IMPOWER("0+1i", 3)
=IMPOWER("0+1i", 4)
結果はそれぞれ「-1」「-i」「1」になります。i² = -1、i³ = -i、i⁴ = 1 という有名な循環パターンですね。
セル参照で複素数を指定する
実務ではセルに入った複素数を扱う場面が多いですよね。A2に「1+2i」、B2に「3」が入っている場合は次のように書きます。
=IMPOWER(A2, B2)
結果は「-11-2i」になります。セル参照を渡すだけで、入っている複素数のべき乗を取り出せますよ。
COMPLEX関数と組み合わせる
COMPLEX関数で作った複素数のべき乗を、その場で計算することもできます。
=IMPOWER(COMPLEX(2, 3), 2)
結果は「-5+12i」、つまり「IMPOWER(“2+3i”, 2)」と同じですね。COMPLEX(2, 3)が内部で「2+3i」を作り、IMPOWER関数がそのべき乗を返してくれます。
実部と虚部がセルに分かれているデータを扱うときに便利な書き方ですよ。
平方根として使う(指数に 0.5)
指数を 0.5 にすると、複素数の平方根を計算できます。
=IMPOWER("-1+0i", 0.5)
結果は「6.12…E-17+1i」、つまりほぼ「i」ですね。√(-1) = i という有名な関係式が確認できます。
ただし複素数の平方根を求めたいだけなら、専用のIMSQRT関数の方が意図が明確で読みやすくなりますよ。
逆数を求める(指数に -1)
指数に -1 を指定すると、複素数の逆数を計算できます。
=IMPOWER("3+4i", -1)
結果は「0.12-0.16i」になります。手計算で確認すると 1/(3+4i) = (3-4i)/((3+4i)(3-4i)) = (3-4i)/25 = 0.12-0.16i なので、共役複素数を使った計算結果と一致しますね。
立方根を求める(指数に 1/3)
指数に 1/3 を指定すると、立方根が得られます。
=IMPOWER("8+0i", 1/3)
結果は「2」です。8の立方根 = 2 ですね。負の実数の立方根でも動作するので、実数の世界では解けない方程式も複素数平面上で解けます。
ARRAYFORMULAで複数行を一括処理する
複素数のリストから一気にべき乗の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数(数式を範囲全体に展開する関数)と組み合わせます。
=ARRAYFORMULA(IMPOWER(A2:A10, 2))
A列に並んだ複素数から、対応する2乗の値をB列に一発で展開できますよ。フーリエ変換の回転因子を一括で計算するときに重宝しますね。
IMPOWER関数の実務活用例
活用例1: ド・モアブルの定理で検算する
複素数のべき乗は、極形式 r(cosθ + i sinθ) で表すと「絶対値はn乗、偏角はn倍」というシンプルな式になります。IMABS関数(絶対値)とIMARGUMENT関数(偏角)を組み合わせて、IMPOWERの結果を検算してみましょう。
A2に「2+3i」が入っているとします。
B2: =IMABS(A2) ← 元の絶対値(√13 ≈ 3.6056)
C2: =IMARGUMENT(A2) ← 元の偏角(≈ 0.9828)
D2: =IMABS(IMPOWER(A2, 2)) ← 2乗後の絶対値(13 ≈ 3.6056²)
E2: =IMARGUMENT(IMPOWER(A2, 2)) ← 2乗後の偏角(≈ 1.9656 = 0.9828×2)
D2が元の絶対値の2乗、E2が元の偏角の2倍になっていれば、ド・モアブルの定理どおりに計算されている証拠ですね。シート上で自動チェックを仕込んでおくと、入力ミスにも気付きやすくなりますよ。
活用例2: 電気回路のインピーダンス計算
交流回路のインピーダンスは複素数で表され、共振周波数近傍のスイープ計算では (R + jωL + 1/(jωC))^n のようなべき乗式が頻繁に登場します。IMPOWER関数を使えば、Excelシートに直接落とし込めますよ。
抵抗R=10Ω、リアクタンスX=20Ω のインピーダンスZ=10+20j を2乗するなら、こう書きます。
A2: =COMPLEX(10, 20, "j") ← Z = 10+20j
B2: =IMPOWER(A2, 2) ← Z² = -300+400j
C2: =IMABS(B2) ← |Z²| = 500
電気工学の慣習に合わせて虚数単位を「j」にしたい場合は、COMPLEX関数の第3引数で指定できますね。
活用例3: フラクタル(マンデルブロ集合)の反復計算
マンデルブロ集合の漸化式は z[n+1] = z[n]² + c という形をしています。IMPOWERとIMSUMを組み合わせれば、1セルで1ステップの計算を表現できますよ。
c = -0.5+0.5i、初期値 z[0] = 0+0i から3ステップ進めるなら、こう書きます。
A2: 0+0i ← z[0]
A3: =IMSUM(IMPOWER(A2, 2), "-0.5+0.5i") ← z[1]
A4: =IMSUM(IMPOWER(A3, 2), "-0.5+0.5i") ← z[2]
A5: =IMSUM(IMPOWER(A4, 2), "-0.5+0.5i") ← z[3]
各ステップで絶対値が2を超えなければ「集合に含まれる」と判定する流れですね。学習用のシミュレーションシートとして使えるパターンです。
活用例4: 離散フーリエ変換の回転因子
離散フーリエ変換(DFT)では、回転因子 W = e^(-2πi/N) のべき乗 W^k を並べる計算が登場します。IMPOWERとCOMPLEX、IMEXP(複素指数関数)を組み合わせれば、シート上に並べられますよ。
N=8の場合、回転因子の基本値とそのk乗はこう書けます。
A2: =IMEXP(COMPLEX(0, -2*PI()/8)) ← W = e^(-πi/4)
B2: 0
B3: 1
B4: 2
C2: =IMPOWER($A$2, B2) ← W^0 = 1
C3: =IMPOWER($A$2, B3) ← W^1 = √2/2 - i√2/2
C4: =IMPOWER($A$2, B4) ← W^2 = -i
DFTの教材や、信号処理の学習シートで使える書き方ですね。
活用例5: 制御工学の極の安定性確認
制御工学では、離散時間系の極 z = re^(iθ) を n ステップ進めた z^n の挙動から系の安定性を確認します。極が単位円内にあれば z^n は0に収束、外にあれば発散しますね。
極 z = 0.8+0.4i を10ステップ進めるなら、こう書きます。
A2: 0.8+0.4i ← 極 z
B2: =IMPOWER(A2, 10) ← z^10
C2: =IMABS(B2) ← |z^10|
|z|=√(0.8²+0.4²) ≈ 0.894 < 1 なので、ステップを進めるほど絶対値は小さくなり、系は安定と判断できますね。
IMPOWER関数とCOMPLEX関数群の関係
複素数を扱う関数群の中で、IMPOWER関数の位置づけを整理しておきましょう。
| 関数 | 入力 | 出力 | 役割 |
|---|---|---|---|
| COMPLEX | 実数 a, b | 複素数 a+bi | 複素数を作る |
| IMREAL | 複素数 a+bi | 実数 a | 実部を取り出す |
| IMAGINARY | 複素数 a+bi | 実数 b | 虚部を取り出す |
| IMABS | 複素数 a+bi | 実数 √(a²+b²) | 大きさを取り出す |
| IMARGUMENT | 複素数 a+bi | 実数 atan2(b,a) | 偏角を取り出す |
| IMPOWER | 複素数 z, 指数 n | 複素数 z^n | べき乗を計算する |
| IMPRODUCT | 複素数 z1, z2, … | 複素数 z1×z2×… | 積を計算する |
| IMSQRT | 複素数 z | 複素数 √z | 平方根を計算する |
IMPOWERは「複素数から複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。
たとえば (a+bi)² を IMPRODUCT で代用すると、こう書けます。
=IMPRODUCT("2+3i", "2+3i")
=IMPOWER("2+3i", 2)
どちらも結果は「-5+12i」で同じですね。ただし指数が大きくなるとIMPRODUCTのネストが煩雑になるので、3乗以上はIMPOWERの方が圧倒的に読みやすくなります。
平方根だけを求めたい場合は、専用のIMSQRT関数を使うと意図が明確になりますよ。
IMPOWER関数のよくあるエラーと対処法
#NUM! エラー(複素数の形式エラー)
複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。
=IMPOWER("1+1I", 2) → #NUM!(大文字のIは不可)
=IMPOWER("1+1k", 2) → #NUM!(i・j以外は不可)
=IMPOWER("1+1i", 2) → #NUM!(全角文字は不可)
対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。
スペースが入っている場合(例: "1 + 1i")も認識できないことがあるので、余計な空白を除いておくと安心です。
#VALUE! エラー(引数の型エラー)
指数に文字列や論理値を渡したときに発生します。
=IMPOWER("1+1i", "2") → 場合により #VALUE!(指数は数値型で渡す)
=IMPOWER("1+1i", TRUE) → #VALUE!(論理値は不可)
=IMPOWER("1+1i", #N/A) → #N/A(エラー値はそのまま伝播)
対処法は、指数を数値として渡すことです。他システムからコピーした数値はテキスト扱いになっていることがあるので、=ISNUMBER(B2) でチェックしておくと安心ですよ。
結果が極端な値になる
指数が極端に大きいと、絶対値がオーバーフローしたり数値誤差で不安定になることがあります。
=IMPOWER("2+3i", 100) → 絶対値が膨大になり誤差が大きくなる
対処法は、指数を必要な範囲に抑えることです。フラクタル計算なら脱出判定(|z|>2)で打ち切る、制御解析なら安定性が確認できる範囲で止める、といった工夫が必要ですね。
結果の符号が想定と違う
複素数の偏角は -π 〜 π の範囲で扱われるため、べき乗の結果が想定と符号違いになるケースがあります。「なぜマイナスになるのか」と迷ったら、IMARGUMENT関数で偏角を確認してみましょう。
=IMARGUMENT("2+3i") ← 元の偏角を確認
=IMARGUMENT(IMPOWER("2+3i",2)) ← 2乗後の偏角を確認
ド・モアブルの定理どおり、偏角がn倍になっているかをチェックすると原因が見えてきますよ。
IFERRORでまとめてエラーを吸収する
入力データの信頼性が低い場合は、IFERROR関数(エラー時に代替値を返す関数)で包んでおくとシート全体の集計が止まりません。
=IFERROR(IMPOWER(A2, B2), "形式エラー")
エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。
IMPOWER関数とExcelの互換性
GoogleスプレッドシートのIMPOWER関数は、ExcelのIMPOWER関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。
ExcelファイルをGoogleスプレッドシートで開いてもIMPOWER関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。
ExcelのIMPOWER関数は、Excel 2007以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。古い環境とファイルを共有する場合でも、安心して使える関数ですね。
複素数関連の関数一覧
IMPOWER関数と一緒に使うことが多い、複素数関連の関数をまとめました。
| 関数名 | 機能 |
|---|---|
| COMPLEX | 実数と虚数から複素数を作成する |
| IMREAL | 複素数の実数係数を返す |
| IMAGINARY | 複素数の虚数係数を返す |
| IMABS | 複素数の絶対値(大きさ)を返す |
| IMARGUMENT | 複素数の偏角(角度)をラジアンで返す |
| IMCONJUGATE | 共役複素数を返す |
| IMPOWER | 複素数のべき乗を返す |
| IMSQRT | 複素数の平方根を返す |
| IMSUM | 複素数の合計(足し算)を返す |
| IMSUB | 複素数の差(引き算)を返す |
| IMPRODUCT | 複素数の積(掛け算)を返す |
| IMDIV | 複素数の商(割り算)を返す |
| IMEXP | 複素数の指数関数を返す |
| IMLN | 複素数の自然対数を返す |
| IMCOS | 複素数のコサインを返す |
| IMSIN | 複素数のサインを返す |
IMPOWER関数は、これら複素数関数群の中で「べき乗を計算する」役割を担います。COMPLEXで作り、IMPOWERでべき乗を取り、IMABS・IMARGUMENTで絶対値と偏角を確認するのが基本パターンですね。
まとめ
GoogleスプレッドシートのIMPOWER関数は、複素数のべき乗(n乗)を返す関数です。電気工学のインピーダンス計算、信号処理のフーリエ変換、制御工学の極零解析、フラクタルの反復計算など、複素数のべき乗が必要な場面で欠かせない関数ですよ。
- 構文は
=IMPOWER(複素数, 指数)で引数は2つとも必須 - 「a+bi」とn乗の指数を渡すと、(a+bi)^n が返る
- 「a+bj」のような工学系表記もそのまま受け付ける
- 指数には整数のほか、0.5(平方根)・-1(逆数)・1/3(立方根)も指定できる
- 内部的にはド・モアブルの定理に従って計算される
- COMPLEX関数の結果やセル参照、複素数演算の結果からべき乗を計算できる
- IMABS・IMARGUMENTと組み合わせて結果を検算できる
- 平方根専用ならIMSQRT、掛け算ならIMPRODUCTと使い分ける
- ARRAYFORMULAで複数の複素数を一括処理できる
- 大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー
- 指数に論理値や非数値文字列を渡すと #VALUE! エラー
- 偏角は -π 〜 π の範囲なので、結果の符号はIMARGUMENTで確認
- ExcelのIMPOWER関数と完全互換(Excel 2007以降)
複素数のべき乗が必要になったら、IMPOWER関数の出番ですよ。COMPLEX関数で複素数を作り、IMPOWERでべき乗を取り、IMABS・IMARGUMENTで絶対値と偏角を検算する流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。
