<complex>
コンテナーのクラス テンプレート complex
とそのサポート用テンプレートを定義します。
要件
ヘッダー: <complex>
名前空間: std
解説
複素数は、順序付けされた実数のペアです。 純粋に幾何学的な見地からすれば、複素平面は実数からなる 2 次元平面です。 複素平面には代数構造が加えられているため、実数平面とは異なる特殊な性質を持ちます。 この代数構造には次の 2 つの基本的な演算が含まれます。
(a, b) + (c, d) = (a + c, b + d) として定義される加算
(a, b) * (c, d) = (ac - bd, ad + bc) として定義される乗算
複素数の加算や乗算を伴う複素数の集合は、標準の代数学的な意味での体 (field) です。
実数の体 (field) における実数の加算や乗算と全く同様、加算や乗算の演算には交換法則や結合法則が成り立ち、加法に対する乗法の分配法則も成り立ちます。
複素数 (0, 0) が加法の単位元であり、(1, 0) が乗法の単位元です。
複素数 (a, b) の加法逆元は (-a, -b) で、(0, 0) 以外のすべての複素数の乗法逆元は次のとおりに定義されます。
(a/(a2 + b2), -b/(a2 + b2))
複素数 z = (a, b) を、形式 z = a + bi で表し、ここで i2 = -1 である場合、実数集合の代数演算規則が複素数集合とその要素にも当てはまります。 次に例を示します。
(1 + 2i) * (2 + 3i) = 1 * (2 + 3i) + 2i * (2 + 3i) = (2 + 3i) + (4i + 6i2) = (2 - 6) + (3 + 4)i = -4 + 7i
複素数系は体 (field) ですが、順序体 (ordered field) ではありません。 複素数には、実数とその部分集合の場合に存在するような順序がありません。このため、実数の場合のような不等式は成り立ちません。
複素数 z を表す形式としては、次の 3 つが一般的です。
デカルト: z = a + bi
極座標: z = r (cos p + i sin p)
指数: z = r * eip
これらの標準的な複素数の表現で使用される用語は、次のように呼ばれます。
デカルト形式の実数要素、または実数部 a。
デカルト形式の虚数要素、または虚数部 b。
複素数 r の係数または絶対値。
ラジアン内の引数またはフェーズ アングル p。
特に指定しない場合、複数の値を返すことができる関数は、-π より大きく +π 以下であるような引数の主値を返し、一価にしておく必要があります。 角度はすべてラジアンで指定する必要があります。1 周は 2 π ラジアン (360°) です。
メンバー
関数
名前 | 説明 |
---|---|
abs |
複素数の係数を計算します。 |
acos |
|
acosh |
|
arg |
複素数から偏角を抽出します。 |
asin |
|
asinh |
|
atan |
|
atanh |
|
conj |
複素数の複素共役を返します。 |
cos |
複素数のコサインを返します。 |
cosh |
複素数のハイパーボリック コサインを返します。 |
exp |
複素数の指数関数を返します。 |
imag |
複素数の虚数部を抽出します。 |
log |
複素数の自然対数を返します。 |
log10 |
複素数の底 10 の対数を返します。 |
norm |
複素数のノルムを抽出します。 |
polar |
デカルト形式で、指定した係数と偏角に対応する複素数を返します。 |
pow |
複素数の底を、別の複素数で累乗することによって得られる複素数を評価します。 |
proj |
|
real |
複素数の実数部を抽出します。 |
sin |
複素数のサインを返します。 |
sinh |
複素数のハイパーボリック サインを返します。 |
sqrt |
複素数の平方根を返します。 |
tan |
複素数のタンジェントを返します。 |
tanh | 複素数のハイパーボリック タンジェントを返します。 |
演算子
名前 | 説明 |
---|---|
operator!= |
2 つの複素数の間の非同等性をテストします。その一方または両方が実数部と虚数部の型のサブセットに属している場合があります。 |
operator* |
2 つの複素数を乗算します。その一方または両方が実数部と虚数部の型のサブセットに属している場合があります。 |
operator+ |
2 つの複素数を加算します。その一方または両方が実数部と虚数部の型のサブセットに属している場合があります。 |
operator- |
2 つの複素数を減算します。その一方または両方が実数部と虚数部の型のサブセットに属している場合があります。 |
operator/ |
2 つの複素数を除算します。その一方または両方が実数部と虚数部の型のサブセットに属している場合があります。 |
operator<< |
出力ストリームに複素数を挿入するテンプレート関数。 |
operator== |
2 つの複素数の間の同等性をテストします。その一方または両方が実数部と虚数部の型のサブセットに属している場合があります。 |
operator>> |
入力ストリームから複素数を抽出するテンプレート関数。 |
クラス
名前 | 説明 |
---|---|
complex<double> |
明示的に特殊化されたこのクラス テンプレートは、順序付けされたオブジェクトのペア (いずれも double 型) を格納するオブジェクトを記述します。ここで、最初のオブジェクトが複素数の実数部、2 番目のオブジェクトが虚数部を表します。 |
complex<float> |
明示的に特殊化されたこのクラス テンプレートは、順序付けされたオブジェクトのペア (いずれも float 型) を格納するオブジェクトを記述します。ここで、最初のオブジェクトが複素数の実数部、2 番目のオブジェクトが虚数部を表します。 |
complex<long double> |
明示的に特殊化されたこのクラス テンプレートは、順序付けされたオブジェクトのペア (いずれも long double 型) を格納するオブジェクトを記述します。ここで、最初のオブジェクトが複素数の実数部、2 番目のオブジェクトが虚数部を表します。 |
complex |
このクラス テンプレートは、複素数の算術演算に使用する複素数系を表すオブジェクトを記述します。 |
リテラル
<complex> ヘッダーは、次のユーザー定義リテラルを定義します。 リテラルは、ゼロの実数部と、入力パラメーターの値を持つ虚数部を持つ複素数を作成します。
宣言 | 説明 |
---|---|
constexpr complex<long double> operator""il(long double d) constexpr complex<long double> operator""il(unsigned long long d) |
結果: complex<long double>{0.0L, static_cast<long double>(d)} |
constexpr complex<double> operator""i(long double d) constexpr complex<double> operator""i(unsigned long long d) |
complex<double>{0.0, static_cast<double>(d)} を返します。 |
constexpr complex<float> operator""if(long double d) constexpr complex<float> operator""if(unsigned long long d) |
complex<float>{0.0f, static_cast<float>(d)} を返します。 |