共用方式為


<complex>

定義容器類別範本 complex 及其支援的範本。

需求

標頭: <複雜>

命名空間:std

備註

複數是已排序的實陣列。 在純粹幾何方面, 複雜平面 是真正的二維平面。 區別複數平面和實數平面最特別的特質在於,是因為它有額外的代數結構。 此代數結構有兩種基本運算:

  • 加法,定義為 (a, b) + (c, d) = (a + cb + d)

  • 乘法,定義為 (a, b) * (cd) = (ac - bdad + bc)

具有複雜加法和複數乘法運算的複數集合是 標準代數意義上的字段

  • 加法和乘法運算是可交換和可結合的,且乘法可分配到加法,和實數體上的實數加法與乘法如出一轍。

  • 複數 (0, 0) 為加法單位元素,而 (1, 0) 為乘法單位元素。

  • 複數的加法反數 (a, b) 為 (-a, -b), 和除 (0, 0) 以外的所有複數乘法反乘

    a/(a2 b2 + ), -b/(a2 + b2))

藉由以 z = a + bi 形式表示複數 z = (ab),其中 i2 = -1,實數集合代數的規則可以套用至複數集合和其元件。 例如:

(1 + 2i) * (2 + 3i) = 1 * (2 + 3i) + 2i * (2 + 3 i) = (2 + 3 i) + (4i + 6 i 2) = (2 - 6) + (3 + 4)i = -4 + 7 i

複數系統是欄位,但不是已排序的欄位。 沒有複數的順序,因為實數的欄位及其子集沒有順序,因此不平等無法套用至複數,因為它們是實數。

有三種常用來表示複數 z 的形式:

  • 笛卡兒: z = a + bi

  • 極地: z = r (cos p + i sin p)

  • 指數:z = r * e ip

這些複數標準表示法所使用的術語可參考如下:

  • 實數的笛卡兒座標分量,或實數部分 a

  • 虛數的笛卡兒座標分量,或虛數部分 b

  • 複數 r 的模數或絕對值。

  • 自變數或階段角度 p 以弧度為單位。

除非另有指定,否則必須傳回多個值的函式,才能傳回大於 -π 且小於或等於 +π的自變數主體值,以保留單一值。 所有角度都必須以弧度表示,其中圓形中有 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!= 測試兩個複數間的不相等比較,其中一個或兩個皆可能屬於實數和虛數部分的類型子集。
operator* 將兩個複數相乘,其中之一或兩者都可能屬於實部和虛部類型的子集。
operator+ 將兩個複數相加,其中之一或兩者都可能屬於實部和虛部類型的子集。
operator- 將兩個複數相減,其中之一或兩者都可能屬於實部和虛部類型的子集。
operator/ 將兩個複數相除,其中之一或兩者都可能屬於實部和虛部類型的子集。
operator<< 將複數插入至輸出資料流的範本函式。
operator== 測試兩個複數間的相等比較,其中一個或兩個皆可能屬於實數和虛數部分的類型子集。
operator>> 從輸入資料流擷取複數值的範本函式。

類別

名稱 描述
complex<double> 明確特製化的類別範本描述一個物件,該物件會儲存一組已排序的物件,這兩者都是 型 double別,其中第一個代表複數的實際部分,而第二個代表虛數部分。
complex<float> 明確特製化的類別範本描述一個物件,該物件會儲存一組已排序的物件,這兩者都是 型 float別,其中第一個代表複數的實際部分,而第二個代表虛數部分。
complex<long double> 明確特製化的類別範本描述一個物件,該物件會儲存一組已排序的物件,這兩者都是 型 long double別,其中第一個代表複數的實際部分,而第二個代表虛數部分。
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)}

另請參閱

標頭文件參考
C++標準連結庫中的線程安全性