なんちゃってプログラマーの勉強部屋

自分が学んだ諸々を備忘録的に公開します。

たとえば複素数

高校で出てくる「あい」がある奴です。
数字の世界は、拡張していくと、いちばん大きい集合が複素数らしい。
ところで、複素数ってのは、虚数単位 $i$ (物理では $i$ は電流をさすので、$j$ を使うらしい)が出てくるが、それをどうやって扱おうか、という話。
ちなみに、ある複素数 $x$ において、実部 ($a + bi$ の $a$ のほう)は、共役複素数 $\bar{x}$ を使って Re$(x) = \cfrac{x + \bar{x}}{2}$ と、虚部は Im$(x) = \cfrac{x - \bar{x}}{2}$ とすれば求めることができるが、それを、プログラムのことあるごとに使っていたらかなり面倒だ。そこで、複素数を構造体にしてしまえば、扱いが楽になりそうだ。もっとも、人が扱う数学では、分数が一般でも、プログラムではそうもいかないので、とりあえず、小数で扱うことにする。そうすれば、あとは簡単だろう。

struct complex
{
    double real;
    double imaginary;
}
typedef struct complex complex;

さらに、typedef しておくと便利だ。
なお、複素数の積は、原点と複素数が表す点の長さを何倍かして、ある角度だけ回転させるものを意味する。でも、一般的にはベクトルか行列でそういう処理はするのかもしれない。