スプレッドシートのIMARGUMENT関数の使い方|複素数の偏角(位相角)を度で求める式

スポンサーリンク

「交流回路のインピーダンスをスプレッドシートで計算したら、偏角が 0.9273 と出た。これって何度?」

Googleスプレッドシートで複素数を扱っていると、こんな場面に出会いますよね。IMARGUMENT関数は複素数の偏角(位相角)を求める関数ですが、答えはラジアンで返ってきます。

しかも実軸より下側の複素数では、マイナスの角度が返るのが厄介なところ。報告書に「-53.1°」と書くべきか「306.9°」と書くべきか、迷った人も多いはずです。

結論から言うと、角度を度で欲しいなら次の 1 行で足ります。

=DEGREES(IMARGUMENT(A2))

この記事では、この式の意味と 0〜360° にそろえる補正をまず解説します。そのうえで、IMABS と組み合わせた「50.00∠53.1°」の極形式表示まで進む流れです。4 象限の早見表も付けたので、検算用にも使ってみてください。

スプレッドシートのIMARGUMENT関数とは?偏角(位相角)をラジアンで返す

IMARGUMENT(イマジナリー・アーギュメント)は、複素数の偏角を返す関数です。複素数 a+bi を平面上の点 (a, b) とみなし、原点から見た角度を求めます。

この角度は、数学では「偏角」、電気の分野では「位相角」と呼ばれます。名前の argument は英語で「偏角」の意味。実軸(横軸)のプラス方向を 0 として、そこから何ラジアン回った位置にあるかを表す値です。

結論:度で欲しいなら =DEGREES(IMARGUMENT(A2))

IMARGUMENT の答えはラジアン(一周を 2π とする角度の単位)です。度に直すには DEGREES関数 で包みましょう。

=IMARGUMENT("3+4i")            → 0.9273(ラジアン)
=DEGREES(IMARGUMENT("3+4i"))   → 53.1301(度)

A2 に複素数が入っているなら =DEGREES(IMARGUMENT(A2)) と書くだけ。ほとんどの場面は、この形で片づきます。

構文と引数(i / j どちらも可)

構文は引数 1 つだけのシンプルな形です。

=IMARGUMENT(数値)
引数内容
数値偏角を求めたい複素数。「3+4i」のような文字列、セル参照、COMPLEX 関数の結果を指定できる

虚数単位は小文字の i と j のどちらでもかまいません。数学では i、電気工学では j を使うことが多いので、手元の表記に合わせてください。

実部と虚部が別々のセルにあるなら、COMPLEX関数で組み立ててから渡すと入力ミスが減ります。Google の公式ヘルプには、次の計算例が載っています。

=IMARGUMENT(COMPLEX(0,1))   → 1.570796327(π/2)
=IMARGUMENT(1)              → 0
=IMARGUMENT("1+1i")         → 0.7853981634(π/4)

IMSQRT などほかの IM 系関数は、答えを「a+bi」の形で返します。一方、IMARGUMENT が返すのは角度ひとつ。DEGREES や MOD にそのまま渡して、計算を続けられます。

戻り値の範囲は -π より大きく π 以下

偏角は、反時計回りをプラス、時計回りをマイナスとして測ります。数学上の規約(atan2 と同じ考え方)では、範囲は -π より大きく π 以下です。度で言えば、-180° より大きく 180° 以下になります。

つまり実軸より下側(虚部がマイナス)の複素数では、マイナスの角度が返るということ。なお Google の公式ヘルプには「ラジアンで返す」とあるだけで、範囲の記載はありません。

偏角を「度」で表示する方法

DEGREES 関数(または *180/PI())で度に直す

ラジアンを度に直す計算は「×180÷π」です。DEGREES 関数を使わずに、次のように書いても同じ結果になります。

=DEGREES(IMARGUMENT(A2))
=IMARGUMENT(A2)*180/PI()

どちらを選んでも答えは変わりません。式の意味がひと目でわかる DEGREES のほうが、あとから見返したときに迷わずに済むでしょう。

4象限+軸上の早見表(ラジアン・度・0〜360°補正後)

象限ごとに、IMARGUMENT の値と度、0〜360° に補正した値を並べました。値は小数第 4 位までの表示です。

複素数位置IMARGUMENT(rad)DEGREES(度)MOD 補正後(度)
3+4i第1象限0.927353.130153.1301
-3+4i第2象限2.2143126.8699126.8699
-3-4i第3象限-2.2143-126.8699233.1301
3-4i第4象限-0.9273-53.1301306.8699
0+1i虚軸のプラス側1.57089090
0-1i虚軸のマイナス側-1.5708-90270
-1実軸のマイナス側3.1416 ※180 ※180

※ -1 の値は、上で触れた数学上の規約(-π より大きく π 以下)に従った場合のものです。

第3・第4象限と虚軸のマイナス側で、度がマイナスになっていますよね。3+4i と 3-4i のように虚部の符号だけが違う複素数は、角度の符号もちょうど反転します。

マイナスの角度を 0〜360° にそろえる(MOD 補正)

マイナスの角度をなくしたいときは、MOD 関数(割り算の余りを返す関数)で 360 の余りを取ります。

=MOD(DEGREES(IMARGUMENT(A2)),360)

スプレッドシートの MOD は、割る数(ここでは 360)と同じ符号で余りを返します。そのため -53.1301 は 306.8699 に変わり、プラスの角度はそのまま残る仕組みです。

ラジアンのまま 0〜2π にそろえたいなら、割る数を 2*PI() にします。

=MOD(IMARGUMENT(A2),2*PI())

どちらの範囲で書くかは用途しだい。交流のフェーザ(大きさと角度で表した矢印)では ±180° の表記がよく使われます。方位のように一周で数えたい場面なら、0〜360° のほうが読みやすいでしょう。

IMABSと組み合わせて極形式(r∠θ°)で表示する

複素数は、大きさ r と角度 θ を使った「極形式」でも書けます。大きさを返すのが IMABS関数、角度を返すのが IMARGUMENT。この 2 つを並べれば、r∠θ° の形が作れます。

1セルで「50.00∠53.1°」と表示する式

A2 に複素数が入っているとして、次の式を入れます。

=TEXT(IMABS(A2),"0.00")&"∠"&TEXT(DEGREES(IMARGUMENT(A2)),"0.0")&"°"

A2 が 30+40i なら、結果は「50.00∠53.1°」になる計算です。ポイントは TEXT 関数で桁をそろえていること。& でつなぐだけだと、53.1301… の後ろに長い小数がそのまま並んでしまいます。

できあがるのは文字列なので、この結果を使った計算はできません。計算に使う値は、別の列に数値のまま残しておきましょう。

交流回路のインピーダンス(R=30Ω・X=40Ω)の例

インピーダンスは、交流での電流の流れにくさを表す複素数です。抵抗 R=30Ω、リアクタンス X=40Ω の回路なら、Z=30+j40Ω と書けます。

B2 に 30、C2 に 40 を入れて、各セルに次の式を入れてみてください。

D2: =COMPLEX(B2,C2)                         → 30+40i
E2: =IMABS(D2)                              → 50
F2: =DEGREES(IMARGUMENT(D2))                → 53.1301
G2: =TEXT(E2,"0.00")&"∠"&TEXT(F2,"0.0")&"°"  → 50.00∠53.1°

大きさは √(30²+40²)=50Ω で、位相角は約 53.1° です。X がプラス(誘導性)なので、電流が電圧より約 53.1° 遅れる回路だと読み取れます。

列を分けて一覧を一括処理する(ARRAYFORMULA)

複数の複素数をまとめて処理するなら、ARRAYFORMULA(数式を範囲全体に広げる関数)が便利です。A2:A4 に複素数が並んでいるとして、B2・C2・D2 に 1 つずつ式を入れます。

B2: =ARRAYFORMULA(IMABS(A2:A4))
C2: =ARRAYFORMULA(DEGREES(IMARGUMENT(A2:A4)))
D2: =ARRAYFORMULA(TEXT(B2:B4,"0.00")&"∠"&TEXT(C2:C4,"0.0")&"°")

できあがる一覧は次のとおり。

A: 複素数B: 大きさC: 偏角(度)D: 極形式
30+40i5053.130150.00∠53.1°
40+30i5036.869950.00∠36.9°
50-50i70.7107-4570.71∠-45.0°

数値の B・C 列を残しておけば、あとから比較や並べ替えにも使えます。表示用の列と計算用の列を分けるのがコツ。

行が増えていく表なら、範囲を A2:A に広げて空白行を IF で除いておくと安心です。

=ARRAYFORMULA(IF(A2:A="","",DEGREES(IMARGUMENT(A2:A))))

ATAN2関数との関係と引数順の注意

偏角は、実部と虚部から逆正接(アークタンジェント)で求める値です。そのため、スプレッドシートの ATAN2関数 でも同じ角度を計算できます。

IMARGUMENT と ATAN2 の対応表(同じ値になる組み合わせ)

ATAN2 の公式の構文は ATAN2(x, y) です。x に実部、y に虚部を渡せば、IMARGUMENT と同じ値になるはず。対応を並べると次のとおりです。

複素数IMARGUMENT の式ATAN2 の式値(rad)
3+4i=IMARGUMENT("3+4i")=ATAN2(3,4)0.9273
-3+4i=IMARGUMENT("-3+4i")=ATAN2(-3,4)2.2143
3-4i=IMARGUMENT("3-4i")=ATAN2(3,-4)-0.9273

複素数が 1 つのセルに入っているなら、実部と虚部を取り出してから ATAN2 に渡します。実部は IMREAL関数、虚部は IMAGINARY関数 の担当です。

=ATAN2(IMREAL(A2),IMAGINARY(A2))

とはいえ、この形なら IMARGUMENT を 1 回書くほうが短く済みます。使い分けの目安は次のとおりです。

  • 複素数が 1 セルにある:IMARGUMENT
  • 実部と虚部が別の列にある:ATAN2

スプレッドシートの ATAN2 は (x, y) の順

気をつけたいのが引数の順番です。スプレッドシートの ATAN2 は、x(横)が先で y(縦)が後。Python の math.atan2(y, x) など、多くのプログラミング言語は y が先なので順番が逆になります。

プログラムの式をそのまま移すと、角度がずれてしまうので要注意。たとえば =ATAN2(4,3) は 0.6435 ラジアン(36.8699°)です。3+4i の偏角 53.1301° にはなりません。

IMARGUMENT なら引数が「a+bi」の 1 つだけなので、この取り違えは起こりません。順番に自信がないときこそ、IMARGUMENT を使うのがおすすめです。

IMARGUMENT関数のよくあるエラーと注意点

IMARGUMENT のエラーは、IM 系のほかの関数と同じ規則で起こります。入力の例と結果を表にまとめました。

入力の例結果対処
"1 + 1i"(半角の空白入り)空白なしと同じ値そのままでよい
"3 + 4i"(全角の空白入り)#NUM!空白を半角にするか削る
"3+4I"(大文字の I)#NUM!小文字の i / j に直す
"3+4i"(全角の数字)#NUM!半角で入力し直す
"3+4k"・"hello"#NUM!「a+bi」の形に直す
TRUE / FALSE(論理値)#NUM!複素数のセルを参照する
#N/A などのエラー値#N/A がそのまま返る参照先のエラーを先に直す
"0"・COMPLEX(0,0)エラー(公式ヘルプに記載)IFERROR などで除外する

公式ヘルプの使用例には、大文字の I を使った「2+3I」という書き方も載っています。ただ、IM 系の関数では大文字の I は #NUM! になる扱いです。例をコピーするときは、小文字の i に直しておきましょう。

0 については、公式ヘルプに「複素数として 0 を指定した場合はエラーを返す」とあります。原点には向きがないので、角度が決まらないためです。

0 が混じりそうな表では、IFERROR で空欄にしておくと一覧が崩れません。

=IFERROR(DEGREES(IMARGUMENT(A2)),"")

ただし IFERROR は、大文字の I などの入力ミスも一緒に隠してしまいます。空欄が出たら、元のデータを一度見直してみてください。

まとめ

スプレッドシートの IMARGUMENT関数は、複素数の偏角(位相角)をラジアンで返す関数です。押さえておきたいポイントは次のとおり。

  • 度で欲しいなら =DEGREES(IMARGUMENT(A2))
  • マイナスの角度を 0〜360° にそろえるなら =MOD(DEGREES(IMARGUMENT(A2)),360)
  • IMABS と TEXT を組み合わせれば「50.00∠53.1°」の極形式で表示できる
  • ATAN2(実部, 虚部) でも同じ角度を求められる。引数は (x, y) の順
  • 虚数単位は小文字の i / j。大文字や全角は #NUM!

逆に、極形式から a+bi の形へ戻したいときは、オイラーの公式を使う IMEXP関数 の出番です。

また、複素数を n 乗すると偏角は n 倍になります(ド・モアブルの定理)。気になる人は IMPOWER関数 で 1+1i を 2 乗し、45° が 90° になる様子を試してみてください。

Excel で同じ計算をしたい人は、ExcelのIMARGUMENT関数の使い方が参考になります。まずは手元の複素数で =DEGREES(IMARGUMENT(A2)) を入れて、何度になるかを確かめるところから始めてみましょう。

タイトルとURLをコピーしました