Pythonのcomplex()とは?複素数を作成する方法を初心者向けに解説

Pythonのcomplex()は、複素数を作成したり、数値や文字列を複素数へ変換したりする組み込み関数です。
Pythonでは複素数を3 + 4jのように表現します。complex()を使うことで、実部と虚部を指定して複素数を作成できます。(Python documentation)
この記事では、Python初心者向けにcomplex()の基本的な使い方、引数、文字列からの変換、注意点まで解説します。
complex()とは?
complex()は、Pythonで複素数を作成するための組み込み関数です。
基本的な書き方は次のとおりです。
complex(実部, 虚部)
例えば、次のコードでは3 + 4jという複素数を作成しています。
z = complex(3, 4)
print(z)
実行結果:
(3+4j)
Pythonでは数学でiと表記する虚数単位を、jで表現します。(Python documentation)
complex()の基本構文
complex()には、主に次の使い方があります。
complex()
complex(real)
complex(real, imag)
complex(string)
それぞれの意味は次のとおりです。
| 書き方 | 意味 |
|---|---|
complex() |
0jを作成 |
complex(real) |
実部を指定 |
complex(real, imag) |
実部と虚部を指定 |
complex(string) |
文字列から複素数を作成 |
Python公式ドキュメントでも、数値や文字列から複素数を作成できる関数として定義されています。(Python documentation)
complex()で複素数を作る
最も基本的な使い方は、実部と虚部を指定する方法です。
z = complex(3, 4)
print(z)
実行結果:
(3+4j)
この場合、
-
実部:3
-
虚部:4
となります。
数学的には、
3 + 4i
に相当します。
Pythonではiではなくjを使うため、
3 + 4j
と表記します。
complex()の実部だけを指定する
第1引数だけを指定すると、その値が実部になり、虚部は0になります。
z = complex(5)
print(z)
実行結果:
(5+0j)
つまり、
complex(5)
は、
5 + 0j
という複素数を作成します。
complex()を引数なしで使う
引数を指定しない場合は0jになります。
z = complex()
print(z)
実行結果:
0j
Python公式ドキュメントでも、すべての引数を省略した場合は0jが返るとされています。(GitHub)
complex()で負の虚部を指定する
虚部には負の数も指定できます。
z = complex(3, -4)
print(z)
実行結果:
(3-4j)
これは、
3 - 4j
を意味します。
文字列から複素数を作る
complex()には文字列を渡すこともできます。
z = complex("3+4j")
print(z)
実行結果:
(3+4j)
例えば次のような文字列も使用できます。
print(complex("5"))
print(complex("5j"))
print(complex("3+4j"))
print(complex("3-4j"))
実行結果:
(5+0j)
5j
(3+4j)
(3-4j)
文字列として渡す場合は、real+imagjのような複素数として解釈できる形式にする必要があります。(Python documentation)
complex(“3 + 4j”)はエラーになる
文字列から複素数へ変換するときには注意点があります。
例えば、次のコードです。
z = complex("3 + 4j")
これはValueErrorになります。
ValueError
一方、
z = complex("3+4j")
なら正常に変換できます。
(3+4j)
+や-の周囲に空白を入れないことがポイントです。先頭や末尾の空白、括弧は許容されますが、数値と符号の間などに空白を入れることはできません。(Python documentation)
complex()と直接書く方法の違い
Pythonでは、complex()を使わなくても複素数を作成できます。
z = 3 + 4j
print(z)
実行結果:
(3+4j)
このため、
complex(3, 4)
と
3 + 4j
は、どちらも3+4jという複素数を作成します。
complex()を使うケース
例えば、実部と虚部が変数に入っている場合にはcomplex()が便利です。
real = 3
imag = 4
z = complex(real, imag)
print(z)
実行結果:
(3+4j)
complex型かどうか確認する
type()を使うと、作成した値が複素数であることを確認できます。
z = complex(3, 4)
print(type(z))
実行結果:
<class 'complex'>
Pythonにはint、float、complexなどの数値型があります。complex型は実部と虚部を持つ数値型です。(Python documentation)
複素数の実部を取得する
複素数の.realを使うと実部を取得できます。
z = complex(3, 4)
print(z.real)
実行結果:
3.0
複素数の虚部を取得する
.imagを使うと虚部を取得できます。
z = complex(3, 4)
print(z.imag)
実行結果:
4.0
つまり、
z = complex(3, 4)
print(z.real)
print(z.imag)
とすると、
3.0
4.0
となります。Pythonの複素数型では、.realと.imagで実部と虚部を取得できます。(Python documentation)
complex()で文字列を数値に変換する
complex()は、文字列として保存されている複素数を数値として扱いたい場合にも利用できます。
例えば、
value = "10+5j"
z = complex(value)
print(z)
print(z.real)
print(z.imag)
実行結果:
(10+5j)
10.0
5.0
ユーザーから入力された値などを複素数として扱う場合に利用できます。
complex()とfloat()の違い
float()も文字列などを数値へ変換する関数ですが、complex()とは変換後の型が異なります。
例えば、
print(float("3.14"))
実行結果:
3.14
一方、
print(complex("3.14"))
実行結果:
(3.14+0j)
float()は浮動小数点数、complex()は複素数を作成します。
complex()で計算する
作成した複素数は、通常の数値と同じように計算できます。
a = complex(2, 3)
b = complex(4, 5)
print(a + b)
実行結果:
(6+8j)
掛け算もできます。
a = complex(2, 3)
b = complex(4, 5)
print(a * b)
実行結果:
(-7+22j)
Pythonは複素数を組み込みでサポートしており、複素数と実数を組み合わせた演算にも対応しています。(Python documentation)
complex()の注意点
文字列の形式に注意する
次のコードは正常です。
complex("1+2j")
しかし、次のコードはエラーになります。
complex("1 + 2j")
文字列から変換するときは、+や-の周囲に不要な空白を入れないようにしましょう。(Python documentation)
虚部にはjを使う
Pythonでは、
3 + 4i
ではなく、
3 + 4j
と書きます。
例えば、
z = 3 + 4j
が正しい書き方です。
complex()まとめ
Pythonのcomplex()は、複素数を作成・変換するための組み込み関数です。
基本的な使い方を覚えておきましょう。
# 引数なし
complex()
# 実部だけ
complex(3)
# 実部と虚部
complex(3, 4)
# 文字列から変換
complex("3+4j")
実行結果はそれぞれ、
0j
(3+0j)
(3+4j)
(3+4j)
となります。
特に重要なのは、Pythonでは虚数単位をiではなくjで表すことです。
複素数を扱う機会は一般的な業務プログラミングではそれほど多くありませんが、数学、信号処理、科学技術計算、電気・電子工学などでは重要なデータ型です。
あわせて読みたい
complex()は、Pythonの組み込み関数の1つです。ほかの関数・メソッドとあわせて確認したい方は、次の一覧ページをご覧ください。



