Python|複素数を計算する:complex

1. はじめに

Pythonでは複素数(complex number)の計算が簡単に行えることをご存じでしょうか?

本記事では、Pythonで複素数を扱うためのcomplex型の基本から応用的な計算方法までを、コード例とともに丁寧に解説します。

数学的な処理や工学シミュレーション、信号処理などの分野で必要となる複素数ですが、Pythonでは標準機能で扱うことができます。

この記事を読めば、Python初心者〜中級者でもcomplex型の使い方を理解し、実務や学習に活かすことができるでしょう。

 

2. Pythonにおける複素数(complex)の基本

複素数とは?

複素数は、実数と虚数(iまたはj)を組み合わせた数です。Pythonでは虚数単位に j を使用します。

例えば「3 + 4j」は、実部3と虚部4の複素数です。

complex型の作成

Pythonでは、complex()関数を使って複素数を作成できます。

# 複素数を直接記述
z1 = 3 + 4j

# complex関数を使って作成
z2 = complex(5, -2)

print("z1 =", z1)
print("z2 =", z2)

実行結果:

z1 = (3+4j)
z2 = (5-2j)

実部と虚部の取得

複素数から実部(real)と虚部(imag)を取り出すには以下のようにします。

print("z1の実部:", z1.real)
print("z1の虚部:", z1.imag)

実行結果:

z1の実部: 3.0
z1の虚部: 4.0

 

3. よくある使い方・応用例

複素数の演算(加減乗除)

複素数は加算・減算・乗算・除算が可能です。通常の数値と同様に演算子を使うだけでOKです。

a = 2 + 3j
b = 1 - 4j

print("加算:", a + b)
print("減算:", a - b)
print("乗算:", a * b)
print("除算:", a / b)

実行結果:

加算: (3-1j)
減算: (1+7j)
乗算: (14-5j)
除算: (-0.5882352941176471+0.6470588235294118j)

絶対値(複素数の大きさ)を求める

abs()関数を使うことで、複素数の絶対値(原点からの距離)を求められます。

z = 3 + 4j
print("絶対値:", abs(z))  # √(3^2 + 4^2) = 5

実行結果:

絶対値: 5.0

複素共役(conjugate)を求める

複素共役は虚部の符号を反転させた複素数で、conjugate()メソッドで求められます。

z = 3 + 4j
print("共役複素数:", z.conjugate())

実行結果:

共役複素数: (3-4j)

cmathモジュールでより高度な操作

Pythonのcmathモジュールを使うと、三角関数や対数などの高度な演算も複素数で扱えます。

import cmath

z = 1 + 1j
print("偏角(位相):", cmath.phase(z))
print("極座標表現:", cmath.polar(z))

実行結果:

偏角(位相): 0.7853981633974483
極座標表現: (1.4142135623730951, 0.7853981633974483)

 

4. 注意点・エラー対策

虚数単位は「i」ではなく「j」

Pythonでは電気・電子工学の慣習に従い、虚数単位は j を使います。i と書いても認識されません。

文字列から複素数に変換する際の注意

文字列を複素数に変換する場合、正しい形式でなければ ValueError が発生します。

s = "3+4j"
z = complex(s)  # 正常に変換される

s2 = "3 + 4j"   # 空白を含むとエラー
z2 = complex(s2)  # ValueError発生

実行結果:

ValueError: complex() arg is a malformed string

floatと混在する演算は注意

複素数と実数(float)の演算は基本的に可能ですが、複雑な式では型変換に注意しましょう。

 

5. まとめ

  • Pythonでは標準で複素数(complex型)を扱うことができる
  • 演算や絶対値、共役など、基本的な複素数処理が簡単に行える
  • 高度な数学演算はcmathモジュールで対応
  • 実部・虚部・極座標への変換など、数値解析に便利

複素数は理系分野だけでなく、画像処理やシミュレーションでも活用される重要な数値型です。Pythonを使って複素数を自在に扱えるようになると、数値処理の幅が大きく広がるでしょう。

実務でも複雑な数値処理や信号解析をする場面で活躍するので、学習初期の段階で慣れておくと安心です!

タイトルとURLをコピーしました