そもそもボード線図って何?エクセルで複素数計算をどう行う?

温度を一定に保ちたい!など,何らかの制御対象に対して制御を行う制御工学という学問において,その制御系が安定であるか?を見る一つの方法としてボード線図というものがあります.

ボード線図は周波数ー位相特性と周波数ー利得(大きさ)の2つのグラフをセットでボード線図と言います.ボード線図を描くための元のグラフの関数(伝達関数)は複素数であり,その複素数を実部と虚部に分け,大きさと偏角(位相)を周波数を変数として変化させてプロットすることになります.

しかし,エクセルに複素数を直接入力することはできません.例えば,1+iとセルに入力すると数値データではなく文字データとして認識されるために通常のように計算を行うことができません.

この記事では,エクセルで複素数を操る方法とボード線図の書き方を説明します.

複素数の表現方法と四則演算

複素数計算では通常の計算のように*/+-は使うことができません.セルに表示されている複素数データは文字データとしてエクセルが認識しているからです.これを四則演算するには以下の関数を用います.

以下,複素数と記載がある部分において複素数を入力する際"1+i"のようにダブルクオーテーションでくくって入力します.複素数データのあるセルを入力する場合そのままB35のように入力します.

  • エクセル上での複素数の表現

関数:=COMPLEX(実部,虚部,"j")
[入力例]=COMPLEX(3,4,"j")→[表示例]3+4j

"j"の項に"i"か"j"を入力することで虚部のjかiを選択.入力しない場合iになる.

  • 複素数の和を計算

関数:=IMSUM(複素数1,複素数2,複素数3,....)→(複素数1)+(複素数2)+(複素数3)
[入力例]=IMSUM("1+i",B45,D12)→[表示例]4+3j

複素数を直接入力する場合は"  "でくるる.B45やD12のように複素数データのあるセルを指定もできる.

  • 複素数の差を計算

関数:=IMSUB(複素数1,複素数2)→(複素数1)-(複素数2)
[入力例]=IMSUB("5+3j","2+j")→[表示例]3+2j

  • 複素数の積を計算

関数:IMPRODUCT(複素数1,複素数2)→(複素数1)*(複素数2)
[入力例]=IMPRODUCT("5+3j","1+2j")→[表示例]-1+13j

  • 複素数の商を計算

関数:=IMDIV(複素数1,複素数2)→(複素数1)/(複素数2)
[入力例]=IMDIV("5+2i","1+i")→[表示例]3.5-1.5i

  • 複素数のべき乗を計算

関数:=IMPOWER(複素数,数値)→(複素数)^(数値)
[入力例]=IMPOWER("1+j",3)→[表示例]-2+2j

  • 複素数の平方根を計算

関数:IMSQRT(複素数)→√(複素数)
[入力例]=IMSQRT("3+4j")→[表示例]2+j

複素数の大きさと位相を求める

複素数の計算が完了し(X+Yj)の形になったら,その複素数の大きさと位相を求めましょう.

  • 複素数の大きさを求める

関数:=IMABS(複素数)
[入力例]IMABS("1+j")→[表示例]√2

ここで,ボード線図の横軸は対数を取るので
[入力例]=20*LOG10(IMABS(A10)) のようにすると対数をとった大きさを求められます.

  • 複素数の位相(偏角)を求める:ラジアン

関数:=IMARGUMENT(複素数)
[入力例]=IMARGUMENT("1+i")→[表示例]0.785(ラジアン表示)

ここで,DEGREE(°)表示に変換する場合,以下のように入力します.
[入力例]=DEGREES(IMARGUMENT("1+j"))→[表示例]45

おまけ:複素数の実部と虚部を取り出す

  • 複素数から実部を取り出す

関数:=IMREAL(複素数)
[入力例]=IMREAL("2+i")→[表示例]2

  • 複素数から虚部を取り出す

関数:=IMAGINARY(複素数)
[入力例]=IMAGINARY(COMPLEX(2,1))→[表示例]1