Excelで複素数を扱っていると、「この複素数のコサインってどう計算するんだろう?」と悩む場面がありますよね。通常のCOS関数は実数にしか対応していないので、複素数を渡すとエラーになってしまいます。
そんなときに使えるのが IMCOS関数 です。複素数を渡すだけで、そのコサイン(余弦)を複素数の形でサッと返してくれますよ。
この記事では、IMCOS関数の基本的な書き方から、電気工学や信号処理など実務での活用例、IMSIN・IMTAN との使い分け、よくあるエラーの対処法まで、サンプルデータ付きでわかりやすく解説します。
ExcelのIMCOS関数とは?
IMCOS関数は、指定した複素数の コサイン(余弦) を複素数で返すExcelのエンジニアリング関数です。
読み方は 「イマジナリー・コサイン」 です。「IM」は Imaginary(虚数・複素数)、「COS」は Cosine(余弦)を意味しています。
複素数のコサインとは?
実数のコサイン(COS関数)はなじみがある方も多いと思います。複素数のコサインは、その考え方を複素数の世界に拡張したものです。
数学的には、複素数 z のコサインは次の公式で定義されます。
cos(z) = (e^(iz) + e^(-iz)) / 2
ここで e は自然対数の底(ネイピア数)、i は虚数単位です。この公式はオイラーの公式から導かれます。実部と虚部を分けると、次のように表せます。
cos(x+yi) = cos(x)cosh(y) – i*sin(x)sinh(y)
手計算だとかなり面倒ですが、IMCOS関数を使えば一発で求められるので便利ですよ。
入力と出力のイメージ
- 入力: 複素数(例: “1+2i”)
- 出力: 複素数のコサイン(例: “2.03272300701967-3.0518977991518i”)
結果も複素数で返ってくるのがポイントです。実数のCOS関数のように -1 から 1 の範囲には収まりません。虚部が大きくなるほど cosh(y)・sinh(y) が指数関数的に増大するため、出力の絶対値もぐんぐん大きくなっていきます。
IMCOS関数が使えるバージョン
IMCOS関数は Excel 2013以降 で利用できます。Microsoft 365・Excel 2016/2019/2021 はもちろん、Excel for the web や Excel for Mac でも使えますよ。Excel 2010 以前では #NAME? エラーが発生するので、使いたい場合はバージョンアップを検討してみてください。
IMCOS関数の書き方(構文と引数)
基本構文
=IMCOS(複素数)
引数は1つだけなので、とてもシンプルです。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 複素数 | 必須 | コサインを求めたい複素数。”x+yi” または “x+yj” のテキスト形式で指定します |
引数には、次のいずれかの方法で値を渡せます。
- 文字列で直接指定:
=IMCOS("1+2i") - セル参照:
=IMCOS(A1)(A1セルに複素数が入っている場合) - COMPLEX関数の結果:
=IMCOS(COMPLEX(1,2))
COMPLEX関数を使えば、実部と虚部を別々に指定して複素数を作れます。セルの値を組み合わせたいときに便利ですよ。
なお、虚数単位は i でも j でも構いません(電気工学では電流 i との混同を避けるため j を使うのが一般的です)。ただし同じ数式内では表記を統一する必要がある点だけ注意してください。
IMCOS関数の基本的な使い方
実際にIMCOS関数を使ってみましょう。
例1: セルの複素数からコサインを求める
セルA1に「1+2i」が入っているとします。
=IMCOS(A1)
結果: 2.03272300701967-3.0518977991518i
実部が約2.03、虚部が約-3.05の複素数が返ります。実数のコサインとは違い、値が1を超えることがあるのが特徴ですね。
例2: 関数内に直接値を指定する
セル参照を使わず、直接テキストで複素数を指定することもできます。
=IMCOS("3+4i")
結果: -27.0349456030742-3.85115333481178i
実部の絶対値がかなり大きくなっていますよね。虚部が大きい複素数ほど、コサインの結果も大きくなる傾向があります。直接指定するときは、ダブルクォーテーション(”)で囲むのを忘れないでくださいね。
例3: COMPLEX関数と組み合わせる
実部と虚部を別々のセルで管理している場合は、COMPLEX関数と組み合わせると便利です。
セルA1に「1」、B1に「2」が入っているとき:
=IMCOS(COMPLEX(A1, B1))
結果: 2.03272300701967-3.0518977991518i
COMPLEX関数が「1+2i」を作り、それをIMCOSがコサインに変換する流れです。実部と虚部をそれぞれ独立したセルで管理できるので、パラメータを動かしながらシミュレーションするときに特に重宝しますよ。
例4: 実数を渡した場合
実数(虚部がゼロの複素数)を渡すと、通常のCOS関数と同じ結果が返ります。
=IMCOS("0")
結果: 1(cos(0) = 1)
=IMCOS("3.141592653589793")
結果: -1(cos(π) = -1)
実数しか扱わない場面では通常のCOS関数で十分ですが、実数と複素数が混在するデータをまとめて処理したいときにはIMCOS関数が役立ちますよ。
IMCOS関数の実務での活用例
ここからは、複素数のコサインが実務でどう使われるかを具体的なシーンごとに紹介します。
活用例1: 交流回路の電圧波形解析(電気工学)
交流回路の解析では、電圧・電流・インピーダンスをすべて 複素数(フェーザ) で表現します。抵抗・インダクタ・キャパシタが複合した回路では、角周波数 ω と時間項を複素指数で表し、必要に応じて三角関数で実部・虚部の瞬時値を取り出します。
たとえば、複素角 z = ωt + φi のような時間変化を含む量について、コサイン成分(実部に対応する瞬時値)を取り出したいときに IMCOS関数 が使えます。
=IMCOS(COMPLEX(角周波数*時間, 減衰項))
減衰振動(e^(-αt) cos(ωt))のような波形を、実部・虚部を自在にコントロールして表形式でシミュレートできるので、手計算よりずっと楽ですよ。
活用例2: 信号処理・フーリエ解析
信号処理では、時間領域の信号を周波数領域に変換するフーリエ変換が基本になります。変換の中身は exp(-iωt) = cos(ωt) - i*sin(ωt) という複素指数の積分なので、コサイン成分を切り出す場面が頻繁に登場します。
Excel で小規模な離散フーリエ変換(DFT)を手組みする場合、各周波数ビンでの基底関数の値を IMCOS と IMSIN関数 で作れば、仕組みの理解がぐっと深まります。学習用途や検証用のミニDFTには十分使えますよ。
活用例3: 物理シミュレーション(波動・減衰振動)
減衰振動の変位は、複素数を使うと z(t) = A * exp((-γ + iω)t) のような一本の式で書けます。実際の変位はこの実部、すなわちコサイン側の値で表されます。
IMCOS関数を使えば、時間 t を縦方向に展開した表の各行で =IMCOS(COMPLEX(ωt, -γt)) のように書くだけで、減衰しながら振動する波形のコサイン成分を一括で出せます。グラフ化すれば、減衰のかかり具合を視覚的に確認できますよ。
活用例4: 複数の複素数のコサインを一括計算する
複素数がA1:A5に並んでいる場合、B1にIMCOS関数を入力してB5までコピーすれば、まとめてコサインを求められます。
=IMCOS(A1)
| セル | 複素数(A列) | コサイン(B列) |
|---|---|---|
| 1行目 | 1+i | 0.833730025131149-0.988897705762865i |
| 2行目 | 2+3i | -4.18962569096881-9.10922789375534i |
| 3行目 | 0+i | 1.54308063481524 |
| 4行目 | 3-2i | -3.72454550491532+0.511822569987385i |
| 5行目 | 1 | 0.540302305868140 |
3行目のように純虚数(実部がゼロ)を渡すと、結果が実数になる点に注目してください。cos(yi) = cosh(y) なので、IMCOSH関数と同じ値になりますよ。
活用例5: IMSIN関数と組み合わせて恒等式を検証する
三角関数には「sin^2(z) + cos^2(z) = 1」という恒等式があります。複素数でもこれが成り立つか、Excelで確かめてみましょう。
セルA1に「2+3i」が入っているとき:
=IMSUM(IMPRODUCT(IMSIN(A1),IMSIN(A1)),IMPRODUCT(IMCOS(A1),IMCOS(A1)))
結果: 1(実数の1が返る)
IMSIN関数でサインを求め、IMPRODUCT関数で2乗してからIMSUM関数で足し合わせています。複素数でも恒等式がしっかり成り立つのは面白いですよね。数値誤差の検証や、複素関数の公式を授業や研修で説明するときにも使えますよ。
IMSIN・IMTAN・COSとの使い分け
複素三角関数は似た関数が複数あって混乱しやすいので、使い分けの目安を整理しておきましょう。
| シーン | 使う関数 | 理由 |
|---|---|---|
| 実数 x だけを扱う | COS(x) | 引数が実数ならCOSで十分。計算も速い |
| 複素数 z の余弦成分が必要 | IMCOS(z) | 複素数対応の唯一の選択肢 |
| 複素数 z の正弦成分が必要 | IMSIN(z) | コサインと対になる関数 |
| 複素数 z の tan が必要 | IMTAN(z) | 内部的には IMSIN÷IMCOS に相当 |
| 振幅(絶対値)が知りたい | IMABS(IMCOS(z)) | コサインの大きさだけ欲しいとき |
| 位相(偏角)が知りたい | IMARGUMENT(IMCOS(z)) | コサインの位相だけ欲しいとき |
COS関数との違い: COS関数は実数のみ対応で、結果は -1 から 1 の範囲になります。IMCOS関数は複素数に対応し、結果も複素数で返ります。実数だけを扱う場面ではCOS関数、複素数を含むデータを扱う場面ではIMCOS関数を使い分けてくださいね。
IMTAN と組み合わせて使うコツ: IMTAN(z) は内部的に IMSIN(z) / IMCOS(z) の関係にあります。IMCOS(z) がゼロに近い値を返す複素数を渡すと、IMTAN は巨大な値になって誤差が増えるので、場合によっては IMCOS と IMSIN を別々に計算してチェックした方が安全ですよ。
よくあるエラーと対処法
IMCOS関数でよく出るエラーと、その対処法をまとめました。
#NUM! エラー
引数に有効な複素数として認識できない値を渡すと、#NUM! エラーが表示されます。
よくある原因と対処法:
| 原因 | 例 | 対処法 |
|---|---|---|
| 複素数のテキスト形式が正しくない | =IMCOS(“1+2”) | 虚数単位の「i」または「j」を末尾に付ける |
| 数値の間にスペースが入っている | =IMCOS(“1 + 2i”) | スペースをすべて削除する |
| 全角文字が混在している | =IMCOS(“1+2i”) | 半角英数字で入力し直す |
| i と j を混在させた | =IMCOS(“1+2i+3j”) | どちらか一方に統一する |
| 虚数単位が大文字 | =IMCOS(“1+2I”) | 小文字の i または j にする |
虚数単位の「i」を付け忘れるケースが一番多いので、気を付けてくださいね。外部データから複素数を読み込んだときは、TRIM関数や SUBSTITUTE関数でスペース・全角文字を除去してから IMCOS に渡すと、エラーを防ぎやすくなりますよ。
#VALUE! エラー
引数が数値でもテキストでもない場合(論理値や空のセルなど)に、#VALUE! エラーが発生します。
=IMCOS(TRUE) → #VALUE!エラー
=IMCOS("") → #VALUE!エラー
セル参照を使う場合は、参照先に正しい複素数テキストが入っているか確認してみてください。空欄になる可能性があるなら、=IF(A1="","",IMCOS(A1)) のように IF で包んでおくと安全です。
#NAME? エラー
関数名のスペルミスで発生します。「IMCOS」を「IMCOSINE」などと書いていないか確認しましょう。また、Excel 2010 以前のバージョンでは IMCOS関数 そのものが未実装なので、この場合も #NAME? エラーになります。お使いのバージョンが対応しているか、確認しておきましょう。
意図しない大きな値が返る場合
エラーではないものの、「値が急に大きくなってビックリする」ケースもあります。
=IMCOS("1+10i")
結果: 5950.65522831798-9267.34335971235i
これはバグではなく、cos(x+yi) = cos(x)cosh(y) – i*sin(x)sinh(y) の cosh(y)・sinh(y) が y=10 のときすでに 1万前後まで膨らんでいるためです。虚部の大きい複素数を扱うときは、結果が指数的に大きくなることを念頭に置いておきましょう。
似た関数との違い・使い分け
IMCOS関数と一緒に使うことが多い関連関数を整理しておきましょう。
| 関数名 | 機能 | 使用例 |
|---|---|---|
| COS | 実数のコサインを求める | =COS(1) → 0.5403… |
| IMSIN | 複素数のサインを求める | =IMSIN(“1+2i”) → 3.165…+1.959…i |
| IMTAN | 複素数のタンジェントを求める | =IMTAN(“1+2i”) |
| IMCOT | 複素数のコタンジェントを求める | =IMCOT(“1+2i”) |
| IMSEC | 複素数のセカントを求める | =IMSEC(“1+2i”) |
| IMCSC | 複素数のコセカントを求める | =IMCSC(“1+2i”) |
| IMCOSH | 複素数の双曲線コサインを求める | =IMCOSH(“1+2i”) |
| COMPLEX | 実部と虚部から複素数を作成 | =COMPLEX(1,2) → “1+2i” |
| IMABS | 複素数の絶対値を求める | =IMABS(“3+4i”) → 5 |
| IMARGUMENT | 複素数の偏角を求める | =IMARGUMENT(“3+4i”) → 0.927… |
| IMEXP | 複素数の指数関数を求める | =IMEXP(“1+2i”) |
まとめ
IMCOS関数は、複素数のコサイン(余弦)を返すExcelのエンジニアリング関数です。
この記事のポイントをおさらいしましょう。
- IMCOS関数は複素数を渡すだけでコサインを複素数で返してくれる
- 引数は1つだけ。”x+yi” 形式のテキストで複素数を渡す
- 結果は複素数になる(実数のCOS関数とは範囲が異なる)
- 電気工学の交流回路解析、信号処理のフーリエ変換、物理シミュレーションの減衰振動など実務で活躍する
- COMPLEX関数やIMSIN関数と組み合わせて使うのが実践的
- 純虚数のコサインは IMCOSH関数の結果と一致する
- エラーが出たら、虚数単位(i / j)の付け忘れ・スペース・全角文字・大文字をチェック
- 虚部が大きい複素数は結果が指数的に大きくなる点に注意
複素数の三角関数をExcelで効率的に計算したい方は、ぜひ活用してみてくださいね。
