情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Pythonで複素数を扱う

Pythonでは複素数を扱うことができます。

Pythonの複素数はcomplex型(複素数型)となります。

複素数の表現

Pythonで複素数を表現するには実部と虚部を+で結合します。実部と虚部はそれぞれ浮動小数点数または整数として表現します。ただし、虚部の末尾にはjまたはJを付加します。

例:

>>> 2.4 + 3j
(2.4+3j)
>>> 2.4 + 3.1J
(2.4+3.1j)

複素数の実部と虚部

複素数の実部はrealプロパティによって得られ、虚部はimagプロパティによって得られます。これらの値は必ず浮動小数点数として得られます。

例:

>>> c = 2.4 + 3j
>>> c.real
2.4
>>> c.imag
3.0

なお、複素数の実部や虚部を変更することはできません。実部や虚部を変更しようとした場合にはAttributeErrorエラーが発生します。

例:

>>> c = 2.4 + 3j
>>> c.real = 3.4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: readonly attribute
>>> c.imag = 4.4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: readonly attribute

複素数の計算

Pythonでは複素数を使って様々な計算をすることができます。

主に下のような種類の計算をすることができます。

  • 足し算(加算)・・・足し算は+演算子を使って(2.4 + 3j) + (5 - 1j)のように行います。
  • 引き算(減算)・・・引き算は-演算子を使って(2.4 + 3j) - (5 - 1j)のように行います。
  • 掛け算(乗算)・・・掛け算は*演算子を使って(2.4 + 3j) * (5 - 1j)のように行います。
  • 割り算(除算)・・・割り算は/演算子を使って(15 + 12.6j) / (5 - 1j)のように行います。
  • 累乗・・・累乗の計算は**演算子を使って(2.4 + 3j) ** (5 - 1j)のように行うか、pow関数を使ってpow(2.4 + 3j, 5 - 1j)のように行います。
  • 複素共役・・・複素共役はconjugateメソッドを使って(2.4 + 3j).conjugate()のようにして得られます。
  • 絶対値・・・絶対値はabs関数を使ってabs(2.4 + 3j)のようにして得られます。

例:

>>> (2.4 + 3j) + (5 - 1j)
(7.4+2j)
>>> (2.4 + 3j) - (5 - 1j)
(-2.6+4j)
>>> (2.4 + 3j) * (5 - 1j)
(15+12.6j)
>>> (15 + 12.6j) / (5 - 1j)
(2.4+3j)
>>> (2.4 + 3j) ** (5 - 1j)
(-2050.4836295448813+14.919869908796512j)
>>> pow(2.4 + 3j, 5 - 1j)
(-2050.4836295448813+14.919869908796512j)
>>> (2.4 + 3j).conjugate()
(2.4-3j)
>>> abs(2.4 + 3j)
3.8418745424597094

複素数の比較

Pythonでは2つの複素数を比較することができます。

主に下のような種類の比較を行うことができます。

  • ~と等しい・・・==演算子を使って1 + 2j == 1 + 2jのように行います。
  • ~と等しくない・・・!=演算子を使って1 + 2j != 5 + 7jのように行います。

例:

>>> 1 + 2j == 1 + 2j
True
>>> 1 + 2j != 5 + 7j
True
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-python