「スプレッドシートで複素数の指数関数を計算したいけど、オイラーの公式を毎回手で書き下すのは面倒…」
スプレッドシートで複素数を扱っていると、e^(a+bi)の値が必要になる場面がありますよね。実部と虚部に分けて三角関数で計算して、最後にCOMPLEXで合体させて…という手順を毎回踏むのは結構大変です。
そんなときに頼りになるのがGoogleスプレッドシートのIMEXP関数です。複素数を1つ渡すだけで「eのその複素数乗」を一発で返してくれるので、フェーザ表現や波動関数の数式が一気にすっきりしますよ。
ExcelのIMEXP関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのまま指数関数に渡せます。
この記事では、スプレッドシートのIMEXP関数の基本構文と実務での活用例を解説します。オイラーの公式との関係や、よくあるエラーと対処法もしっかり紹介していきますよ。
スプレッドシートのIMEXP関数とは?
GoogleスプレッドシートのIMEXP関数は、複素数のeべき乗(指数関数 e^z)を返す関数です。エンジニアリング関数(電気・物理・工学系の計算で使う関数群)のひとつに分類されますよ。
読み方は「イマジナリー・エクスポーネンシャル」または「アイエム・エクスプ」です。英語の「imaginary(虚数の)」と「exponential(指数)」を組み合わせた名前ですね。複素数「a+bi」を肩に乗せたeの値を、複素数として返してくれるのが役割です。
そもそも複素数の指数関数は、オイラーの公式から導かれます。定義式は次のようになりますよ。
e^(a+bi) = e^a × (cos(b) + i × sin(b))
実部は「e^a × cos(b)」、虚部は「e^a × sin(b)」となり、結果も複素数で返るのが特徴ですね。bの単位はラジアンなので、度数で考えていると結果がズレる点も覚えておきましょう。
| 複素数(z) | IMEXP(z)の結果 | 内部計算 |
|---|---|---|
| 0+0i | 1 | e^0 = 1 |
| 1+0i | 2.71828… | e^1(自然対数の底) |
| 0+πi(≈3.14159i) | -1 | オイラーの等式 e^(iπ) = -1 |
| 0+(π/2)i | i | e^(iπ/2) = i |
| 1+1i | 1.4687+2.2874i | e × (cos1 + i×sin1) |
| 2+0i | 7.389… | e^2 |
IMEXP関数を使えば、この表の右側にある「複素数のeべき乗」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2007以降のすべてのバージョンに対応していますよ。
複素数の指数関数は、交流回路のフェーザ表現・量子力学の波動関数・フーリエ解析の基底などで活躍します。複素数を「振幅と位相」で扱う場面で欠かせない基礎パーツですね。
IMEXP関数の書き方(構文と引数)
基本構文
=IMEXP(複素数)
引数は1つで、肩に乗せる複素数を渡す形ですよ。
引数の詳細
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 複素数(inumber) | 必須 | eの肩に乗せる複素数。文字列またはセル参照で指定する |
引数には「”1+2i”」や「”1+2j”」のような複素数文字列を直接渡せます。COMPLEX関数(実数と虚数から複素数を作成する関数)の結果や、複素数が入ったセルの参照も指定できますよ。
虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMEXP関数はどちらでも同じように動作してくれます。
TIP
虚部bの単位はラジアンです。度数(°)で考えていると結果が大きくズレるので、度数を渡したいときはRADIANS関数で変換してから渡しましょう。
引数に実数だけを渡せば、通常の指数関数EXPと同じ結果になります。「IMEXP(“2”)」も「EXP(2)」もどちらも約7.389ですね。違いは戻り値が複素数文字列になるか実数になるかだけですよ。
IMEXP関数の基本的な使い方
文字列で複素数を直接指定する
複素数文字列をそのまま引数に渡してみましょう。
=IMEXP("1+1i")
結果は「1.46869393991589+2.28735528717884i」になります。実部・虚部それぞれが小数で返ってきますね。
実部だけの複素数を渡すと、通常のEXP関数と同じ結果になります。
=IMEXP("1")
=IMEXP("1+0i")
どちらも結果は約「2.71828」、つまり自然対数の底eですよ。実数の世界の指数関数と一致しますね。
純虚数を渡すと、結果は単位円上の点になります。
=IMEXP("0+1i")
結果は「0.5403…+0.8415…i」になります。これは「cos(1) + i×sin(1)」と同じ値で、複素平面上で半径1の単位円上に乗っている点ですね。
オイラーの等式を確認する
数学で最も美しい等式と呼ばれる「e^(iπ) = -1」をスプレッドシートで確認してみましょう。
=IMEXP(COMPLEX(0, PI()))
結果は「-1+1.22e-16i」のような値になりますよ。実部は-1、虚部はほぼ0(浮動小数点の丸め誤差)で、オイラーの等式が確かに成り立っていますね。教育用の教材として使えるパターンです。
セル参照で複素数を指定する
実務ではセルに入った複素数を扱う場面が多いですよね。A2に「1+1i」が入っている場合は次のように書きます。
=IMEXP(A2)
結果は「1.46869…+2.28735…i」になります。セル参照を渡すだけで、入っている複素数のeべき乗を取り出せますよ。
COMPLEX関数と組み合わせる
COMPLEX関数で作った複素数を、その場でIMEXPに渡すこともできます。
=IMEXP(COMPLEX(1, 1))
結果は「1.46869…+2.28735…i」、つまり「IMEXP(“1+1i”)」と同じですね。COMPLEX(1, 1)が内部で「1+1i」を作り、IMEXP関数がその指数関数値を返してくれます。
数値で実部と虚部を渡したいときに便利な書き方ですよ。
ARRAYFORMULAで複数行を一括処理する
複素数のリストに対して一気にeべき乗の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数(数式を範囲全体に展開する関数)と組み合わせます。
=ARRAYFORMULA(IMEXP(A2:A10))
A列の複素数を順番に肩に乗せて、対応するeべき乗をB列に一発で展開できますよ。フェーザ表現の周波数特性を一括計算するときに重宝しますね。
IMEXP関数の実務活用例
活用例1: 実部と虚部に分解して可視化する
IMEXP関数の戻り値は複素数なので、グラフにしたいときは実部と虚部に分けて取り出します。IMREAL関数とIMAGINARY関数を組み合わせる流れですよ。
A列に複素数が並んでいるとしましょう。
B2: =IMEXP(A2) ← 複素数のeべき乗
C2: =IMREAL(B2) ← 実部
D2: =IMAGINARY(B2) ← 虚部
C列を実部、D列を虚部としてプロットすれば、複素平面上での挙動が一目で分かりますね。複素関数の振る舞いを学ぶ教材や、解析結果の可視化レポートで使えるパターンです。
活用例2: 交流回路のフェーザ表現を計算する
電気回路では、交流の電圧や電流を「フェーザ(複素振幅)」として扱います。振幅Aと位相θを使った A×e^(iθ) という形で書けますね。
たとえば振幅10V、位相30°(π/6 rad)の電圧フェーザは、IMEXP関数を使うとこう書けます。
A2: 10 ← 振幅
B2: =RADIANS(30) ← 位相(度→ラジアン変換)
C2: =IMPRODUCT(A2, IMEXP(COMPLEX(0, B2))) ← フェーザ
C2の結果は「8.66…+5i」になります。実部が瞬時値の余弦成分、虚部が正弦成分ですね。電力解析や回路シミュレーションで活躍するパターンですよ。
TIP
度数で位相を扱うときは、必ずRADIANS関数でラジアンに変換してからIMEXPに渡しましょう。直接度数を渡すと結果がまったく違う値になります。
活用例3: 単位円上の点を等間隔で生成する
複素平面の単位円上に等間隔の点を並べたいときも、IMEXP関数が役立ちます。N等分の点はe^(2πik/N)で表せますよ。
A2: 1 ← 等分する位置(k)
B2: 8 ← 全体の分割数(N)
C2: =IMEXP(COMPLEX(0, 2*PI()*A2/B2)) ← 単位円上の点
A列のkを1〜8まで並べると、円周上に8等分された点が得られますね。1のN乗根の可視化や、離散フーリエ変換の基底関数の計算でそのまま使える書き方です。
活用例4: 量子力学の時間発展演算子を計算する
量子力学では、状態の時間発展を「e^(-iEt/ℏ)」という形の位相因子で表現します。IMEXP関数を使えば、この位相因子をそのまま計算できますよ。
エネルギーE=2、時間t=1、ℏ=1(自然単位系)の場合、次のように書けます。
A2: 2 ← エネルギー E
B2: 1 ← 時間 t
C2: =IMEXP(COMPLEX(0, -A2*B2)) ← 位相因子 e^(-iEt)
D2: =IMABS(C2) ← 振幅の大きさ(常に1)
E2: =IMARGUMENT(C2) ← 位相(ラジアン)
D2は常に1(時間発展は確率を保存する)、E2が位相としてマイナス2ラジアンになりますよ。波動関数の時間変化を追うシートで使える書き方ですね。
活用例5: フーリエ級数の基底関数を生成する
フーリエ解析では、基底関数 e^(i n ωt) が頻繁に登場します。IMEXP関数を使うと、各時刻における基底関数の値が手軽に計算できますよ。
角周波数ω=2π、次数n=2、時刻t=0.25の場合は次のように書きます。
A2: 0.25 ← 時刻 t
B2: 2 ← 次数 n
C2: 2*PI() ← 角周波数 ω
D2: =IMEXP(COMPLEX(0, B2*C2*A2)) ← 基底関数 e^(inωt)
D2の結果は「-1+0i」になります(n×ω×t = 2×2π×0.25 = π なので e^(iπ) = -1)。フーリエ係数の計算や、信号合成のシミュレーションで使える基本パターンですね。
IMEXP関数とCOMPLEX関数群の関係
複素数を扱う関数群の中で、IMEXP関数の位置づけを整理しておきましょう。
| 関数 | 入力 | 出力 | 役割 |
|---|---|---|---|
| COMPLEX | 実数 a, b | 複素数 a+bi | 複素数を作る |
| IMREAL | 複素数 a+bi | 実数 a | 実部を取り出す |
| IMAGINARY | 複素数 a+bi | 実数 b | 虚部を取り出す |
| IMABS | 複素数 a+bi | 実数 √(a²+b²) | 大きさを取り出す |
| IMARGUMENT | 複素数 a+bi | 実数(ラジアン) | 偏角を取り出す |
| IMEXP | 複素数 z | 複素数 e^z | 指数関数 |
| IMLN | 複素数 z | 複素数 ln(z) | 自然対数(IMEXPの逆関数) |
| IMPOWER | 複素数 z, 実数 n | 複素数 z^n | べき乗 |
| IMSQRT | 複素数 z | 複素数 √z | 平方根 |
IMEXP関数とIMLN関数は互いに逆関数の関係です。「IMLN(IMEXP(z)) = z」が成り立ちますよ(厳密には主値の範囲で)。
たとえば定義式どおりにe^(a+bi)を手動で組み立てると次のようになります。
=COMPLEX(EXP(IMREAL(A2))*COS(IMAGINARY(A2)), EXP(IMREAL(A2))*SIN(IMAGINARY(A2)))
これはIMEXPと同じ結果になりますが、オイラーの公式を毎回手書きする必要がありますよね。IMEXPを使えば1関数で済むので、数式が読みやすくなります。
IMEXP関数のよくあるエラーと対処法
#NUM! エラー(複素数の形式エラー)
複素数として認識できない文字列を渡したときに発生します。
=IMEXP("1+1I") → #NUM!(大文字のIは不可)
=IMEXP("1+1k") → #NUM!(i・j以外は不可)
=IMEXP("1 + 1i") → #NUM!(途中の空白は不可)
対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。
文字列内に空白が混じっていると認識できません。TRIM関数で前後の空白を取り除くか、入力時に空白を入れないルールにしておくと安心ですよ。
#VALUE! エラー(引数の型エラー、または虚数単位の混在)
引数に論理値やエラー値を渡したときに発生します。IMEXPは引数が1つなので、他の複素数関数で起きがちな虚数単位(i/j)の混在エラーは発生しません。
=IMEXP(TRUE) → #VALUE!(論理値は不可)
=IMEXP(#N/A) → #VALUE!(エラー値は不可)
対処法は、正しい複素数文字列または数値・セル参照を渡すことです。入力元のセルがエラーになっている場合は、そのエラーを先に解消する必要がありますよ。
結果がオーバーフローする場合
実部aが非常に大きい複素数を渡すと、e^aの値がスプレッドシートの数値範囲を超えてオーバーフローします。上限はおよそ1.79×10^308ですね。
=IMEXP("1000+0i") → 計算不能になる可能性あり
実部が709を超えると倍精度浮動小数点の上限に近づくので注意してくださいね。実用上は実部が±数十程度の範囲で使うのが安全です。
IFERRORでまとめてエラーを吸収する
入力データの信頼性が低い場合は、IFERROR関数(エラー時に代替値を返す関数)で包んでおきましょう。シート全体の集計が止まらず安心です。
=IFERROR(IMEXP(A2), "計算不可")
エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。
IMEXP関数とExcelの互換性
GoogleスプレッドシートのIMEXP関数は、ExcelのIMEXP関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。
ExcelファイルをGoogleスプレッドシートで開いてもIMEXP関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。
ExcelのIMEXP関数は、Excel 2007以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。古いExcelファイルとの互換性も心配いりません。
複素数関連の関数一覧
IMEXP関数と一緒に使うことが多い、複素数関連の関数をまとめました。
| 関数名 | 機能 |
|---|---|
| COMPLEX | 実数と虚数から複素数を作成する |
| IMREAL | 複素数の実数係数を返す |
| IMAGINARY | 複素数の虚数係数を返す |
| IMABS | 複素数の絶対値(大きさ)を返す |
| IMARGUMENT | 複素数の偏角(角度)をラジアンで返す |
| IMCONJUGATE | 共役複素数を返す |
| IMSUM | 複素数の合計(足し算)を返す |
| IMSUB | 複素数の差(引き算)を返す |
| IMPRODUCT | 複素数の積(掛け算)を返す |
| IMDIV | 複素数の商(割り算)を返す |
| IMEXP | 複素数の指数関数(eべき乗)を返す |
| IMLN | 複素数の自然対数を返す(IMEXPの逆関数) |
| IMPOWER | 複素数のべき乗を返す |
| IMSQRT | 複素数の平方根を返す |
| IMCOS | 複素数のコサインを返す |
| IMSIN | 複素数のサインを返す |
IMEXP関数は、これら複素数関数群の中で「指数関数」を担う基本関数ですね。COMPLEXで複素数を作り、IMEXPで指数関数値を求めるのが基本の流れです。最後はIMREAL・IMAGINARYで実部と虚部に分けて可視化しましょう。フェーザや波動関数の解析シートを軽快に組み立てられますよ。
まとめ
GoogleスプレッドシートのIMEXP関数は、複素数のeべき乗(指数関数 e^z)を返す関数です。フェーザ表現・波動関数・フーリエ解析など、複素数を「振幅と位相」で扱う場面で欠かせない関数ですよ。
- 構文は
=IMEXP(複素数)で複素数を1つ渡すだけ - 「e^(a+bi) = e^a × (cos(b) + i × sin(b))」がオイラーの公式に基づく内部計算式
- 「a+bi」と「a+bj」のどちらの表記もそのまま受け付ける
- 虚部bの単位はラジアン(度数を渡すときはRADIANSで変換)
- 実部だけの複素数を渡すと通常のEXP関数と同じ結果になる
- 純虚数を渡すと単位円上の点になる(e^(iπ) = -1 のオイラーの等式)
- COMPLEX関数の結果やセル参照、複素数演算の結果も渡せる
- ARRAYFORMULAで複数の複素数を一括処理できる
- IMLN関数とは互いに逆関数の関係
- 大文字の「I」「J」やi・j以外の単位は #NUM! エラー
- 論理値やエラー値を渡すと #VALUE! エラー
- 実部が大きすぎるとオーバーフローする(実部709付近が上限)
- ExcelのIMEXP関数と完全互換(Excel 2007以降)
複素数の指数関数が必要になったら、IMEXP関数の出番ですよ。COMPLEX関数で複素数を作り、IMEXPで指数関数値を取りましょう。最後にIMREAL・IMAGINARYで成分を分解すれば、エンジニアリング系のシートを軽快に組み立てられますね。
