Python の複素数型
Python の complex 型
Python では数値型のひとつとして複素数型 (complex)が使えます。 complex クラスはビルトインのデータ型なので特に何も import などをせずに使えます 。
複素数は実部と虚部の組み合わせですが、虚部を表す虚数単位 (2乗すると -1 になる値) は j で記述します。
数学では虚数単位は通常虚数部 (imaginary part) の頭文字をとって i で記述されますが、工学では i は他の量を表すのに使われる場合が多いため しばしば j が使われます。
complex 型のデータは実部と虚部の組み合わせで、次のように初期化できます。
>>> c = complex(1, 2)
>>> c
(1+2j)
また j を含む文字列を渡すことでも初期化できます。
>>> c = complex('2+3j')
>>> c
(2+3j)
尚、符号の前後に空白をいれてはいけません。空白文字が入るなどすると、次のようなフォーマットエラーになります。
c = complex('2 + 3j')
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
c = complex('2 + 3j')
ValueError: complex() arg is a malformed string
計算も通常の数値型のように実行可能です。
c1 = complex('1+2j')
c2 = complex('3+5j')
c3 = c1 + c2
print(c3) # (4+7j)
Python の complex 型のフォーマット
上でみたように、complex 型のデータをそのまま print に渡して出力すると、 (a+bj) という形式で出力されます。
自前でフォーマットすることもできます。
complex データの実部は .real として取得できます。また、虚部は imag でアクセスできます。
c1 = complex('1+2j')
print('{0.real}+{0.imag}i'.format(c1)) # 1.0+2.0i
実部、虚部の値は float 型で取得されるので、そのまま出力すると1.0 のように小数点以下がつきます。
数値の一般表記 (フォーマット g) や小数点以下の長さの指定は次のようにします。
c1 = complex('1+2.3j')
c2 = c1 + complex(3.1, 5.1)
print('c1={a.real:g}+{a.imag:g}i'.format(a=c1))
# c1=1+2.3i
print('c2={b.real:.1f}+{b.imag:.1f}i'.format(b=c2))
# c2=4.1+7.4i
その他、書式指定全般については「Python 文字列の書式指定とフォーマット」を参考にしてください。
ここでは format 関数で書式文字列内での名前を与えることで、インデックスではなく a.real とか b.imag のように名前でアクセスしています。
以上、ここでは complex 型のデータの初期化とフォーマットについて説明しました。