京都工芸繊維大学工芸科学部 生命物質科学域高分子機能工学部門 高分子物性工学研究室

  • JP
  • EN
  • menu

    複素数の取り扱い

    IGORでは、A + i B といった複素数を扱う事ができる。 まず、これまでと同様に、「実数部」と「虚数部」を表す wave を作成してみよう。これらはまだ通常の実数 wave だ。

    ・Make/D/O realWave,imagWave

    今回は実数部および虚数部に対して以下のようなデータをセットしてみた。

    ・realWave=-p
    ・imagWave=p+1

    次のコマンドにより、表に出してみよう。

    ・Edit realWave,imagWave

    ■さて、IGORで複素数を表す wave をどのようにして作成したらいいのだろうか。それは、メニューのMake waves … コマンドを呼び出した後、「Complex」にチェックを入れておけばよい。

    これをコマンドで表すと以下のようになる。

    ・Make/D/C/O amp

    ごらんの通り複素数を表すフラッグは、/Cだ。
    さて、複素数 wave に値を代入するためにはどうしたらいいのだろうか。それは、cmplx関数を用いる。

    ・amp=cmplx(realWave,imagWave); edit amp

    すでに作成した二つの実数 wave realWaveとimagWaveを、複素数 wave であるampに代入する命令だ。

    edit命令によって、以下のような表が作成されるはずだ。

    ここでこの表は、real および cmplxの2列からなる表である事がわかる。

    続いて、amp の複製 wave として、intを作成しよう。

    ・Duplicate/O amp int
    ・int=amp*conj(amp)
    ・Edit int

    ■新たな命令として、上ではconj 関数を用いた。これは複素共役を意味し、
    Amplitude = REAL + i IMAGINARY

    Intensity = Amplitude x Amplitude* = ( REAL + i IMAGINARY ) x ( REAL – i IMAGINARY )
    = REAL^2 + IMAGINARY ^2

    ような感じでフーリエ振幅や強度の計算に用いられる。

    まだこの段階では、wave には実数部のみが残ったとはいえ、wave の型は以下の図のような「複素数型」だ。

    そこで、実数型 wave に変換しよう。これは、IGOR の Dataメニューにある、Redimension waves … から行える。real から complex へ wave のType を変更しよう。ここでは様々な wave のタイプ変換が行える。

    上記の操作をコマンドで表すと以下のようになる。コマンドラインでこれを打ち込んでもOKだ。

    ・Redimension/R int