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 型のデータの初期化とフォーマットについて説明しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門