2008年5月27日火曜日

複素数をFORTRANで使う

今日は珍しく午前中にFORTRANで
プログラムを書いてみた.
これが人にいうのも恥ずかしいくらい
初歩的なもので,
ボード線図を描くプログラムである.

ただ初めて「複素数」という型を使った.
複素数は,実部と虚部の二つの数によって
構成されている.

!-----
REAL a, b
COMPLEX z

z = CMPLX(a,b)

!-----
と型の宣言をして値を代入をすると,

z=a + jb (ただしjは虚数単位)

が実現できる.
(実際は倍精度複素数を用いているけど)
そして,これらの値を用いて
複素数の和,積,除などの計算が
できることを確認した.
今更ながらに良くできていると感心する.

これまでずいぶんFORTRAN(あるいはC)言語を
用いて数々のプログラムを作ったきたけれど,
複素数型をものは初めてである.
(フーリエ変換などはあらかじめ
実部と虚部を分けて計算していた)

しかし,電気工学の世界は複素数でいっぱいである.
もちろん現実世界に虚数があるわけではない.
交流というものを考えるとき,
振幅と位相を同時に考えなければならないために
虚数を導入し,フェーザという概念を
用いているのである.
そしてそれは,交流回路理論には
不可欠なツールなのである.
(今回は制御工学で必要だったのだけれど)

そう考えると,これまで複素数のプログラムを
作らなかったのは,私の不勉強のせいかと思う.
ボード線図もできあわせのプログラムなどを用いて
プロットしていた.
今日はもうちょっと細かいことがやりたくて,
いろいろと自分で作ってみた.
思いのほか簡単であった.
もっと早くから自分でやればよかったと反省.

「複素数」ということで,
ちょっと敷居が高かったが,
やってみれば案外に簡単である.
みんな使っているのだろうか?
そもそもFORTRANに複素数という型があるということを
知っている人がどれだけいるだろう?
(FORTRANはもはや廃れた言語?)

使わない人はもったいない.
電気工学や制御工学の分野の人は
もっともっと使ってもいいかもしれないと思う.
(って,使わなかったのは私だけ?)

0 件のコメント:

コメントを投稿

アイアンマン2

 「アイアンマン」を観た あとに 「アイアンマン2」(2010年) を観た。「アイアンマン」がヒット作となり,続編が作られた。だいたい続編というのは面白さがいくぶん減るのだけれど,この続編は1作目に負けないくらい面白かった。 敵役を演じるのがなんといってもミッキー・ロークなのであ...