<complex>
Define o modelo de classes do contêiner complex
e seus modelos de suporte.
Requisitos
Cabeçalho: <complex>
Namespace: std
Comentários
Um número complexo é um par ordenado de números reais. Em termos puramente geométricos, o plano complexo é o plano real bidimensional. As qualidades especiais do plano complexo que o diferencial do plano real acontecem devido a ele ter uma estrutura algébrica adicional. Essa estrutura algébrica tem duas operações fundamentais:
Além disso, definido como (a, b) + (c, d) = (a + c, b + d)
Multiplicação definida como (a, b) * (c, d) = (ac - bd, ad + bc)
O conjunto de números complexos com as operações de adição e multiplicação complexas é um campo no sentido algébrico padrão:
As operações de adição e multiplicação são comutativas e associativas e a multiplicação se distribui sobre a adição exatamente como ocorre com a adição e a multiplicação reais no campo de números reais.
O número complexo (0, 0) é a identidade de adição e (1, 0) é a identidade de multiplicação.
O inverso de adição para um número complexo (a, b) is (-a, -b) e o inverso de multiplicação para todos esses números complexos, exceto (0, 0) é
(a/(a2 + b2), -b/(a2 + b2))
Ao representar um número complexo z = (a, b) na forma z = a + bi, onde i2 = -1, as regras de álgebra do conjunto de números reais podem ser aplicadas ao conjunto de números complexos e aos seus componentes. Por exemplo:
(1 + 2i) * (2 + 3i) = 1 * (2 + 3i) + 2i * (2 + 3i) = (2 + 3i) + (4i + 6i2) = (2 - 6) + (3 + 4)i = -4 + 7i
O sistema de números complexos é um campo, mas não é um campo ordenado. Não há nenhuma ordenação dos números complexos como há para o campo de números reais e seus subconjuntos. Dessa forma, as desigualdades não podem ser aplicadas a números complexos como são aplicadas a números reais.
Há três formas comuns de representar um número complexo z:
Cartesiano: z = a + bi
Polar: z = r (cos p + i sin p)
Exponencial: z = r * eip
Os termos usados nessas representações padrão de um número complexo são referidas como o seguinte:
O componente cartesiano real ou parte real a.
O componente cartesiano imaginário ou parte imaginária b.
O módulo ou valor absoluto de um número complexo r.
O argumento ou o ângulo de fase p em radianos.
A menos que especificado em contrário, as funções que podem retornar vários valores devem retornar um valor de entidade de segurança para seus argumentos maiores que -π e menores ou iguais a -π para mantê-los com um valor único. Todos os ângulos precisam ser expressos em radianos, em que há radianos 2-π (360 graus) em um círculo.
Membros
Funções
Nome | Descrição |
---|---|
abs |
Calcula o módulo de um número complexo. |
acos |
|
acosh |
|
arg |
Extrai o argumento de um número complexo. |
asin |
|
asinh |
|
atan |
|
atanh |
|
conj |
Retorna o conjugado complexo de um número complexo. |
cos |
Retorna o cosseno de um número complexo. |
cosh |
Retorna o cosseno hiperbólico de um número complexo. |
exp |
Retorna a função exponencial de um número complexo. |
imag |
Extrai o componente imaginário de um número complexo. |
log |
Retorna o logaritmo natural de um número complexo. |
log10 |
Retorna o logaritmo de base 10 de um número complexo. |
norm |
Extrai a norma de um número complexo. |
polar |
Retorna o número complexo, que corresponde a um módulo e um argumento especificado, na forma cartesiana. |
pow |
Avalia o número complexo obtido elevando uma base que é um número complexo à potência de outro número complexo. |
proj |
|
real |
Extrai o componente real de um número complexo. |
sin |
Retorna o seno de um número complexo. |
sinh |
Retorna o seno hiperbólico de um número complexo. |
sqrt |
Retorna a raiz quadrada de um número complexo. |
tan |
Retorna a tangente de um número complexo. |
tanh | Retorna a tangente hiperbólica de um número complexo. |
Operadores
Nome | Descrição |
---|---|
operator!= |
Testa a desigualdade entre dois números complexos, um ou ambos podem pertencer ao subconjunto do tipo das partes reais e imaginárias. |
operator* |
Multiplica dois números complexos, um ou ambos podem pertencer ao subconjunto do tipo das partes reais e imaginárias. |
operator+ |
Adiciona dois números complexos, um ou ambos podem pertencer ao subconjunto do tipo das partes reais e imaginárias. |
operator- |
Subtrai dois números complexos, um ou ambos podem pertencer ao subconjunto do tipo das partes reais e imaginárias. |
operator/ |
Divide dois números complexos, um ou ambos podem pertencer ao subconjunto do tipo das partes reais e imaginárias. |
operator<< |
Uma função de modelo que insere um número complexo no fluxo de saída. |
operator== |
Testa a igualdade entre dois números complexos, um ou ambos podem pertencer ao subconjunto do tipo das partes reais e imaginárias. |
operator>> |
Uma função de modelo que extrai um valor complexo do fluxo de entrada. |
Classes
Nome | Descrição |
---|---|
complex<double> |
O modelo de classe explicitamente especializado que descreve um objeto que armazena um par de objetos, ambos do tipo double , onde o primeiro representa a parte real de um número complexo e o segundo representa a parte imaginária. |
complex<float> |
O modelo de classe explicitamente especializado que descreve um objeto que armazena um par de objetos, ambos do tipo float , onde o primeiro representa a parte real de um número complexo e o segundo representa a parte imaginária. |
complex<long double> |
O modelo de classe explicitamente especializado que descreve um objeto que armazena um par de objetos, ambos do tipo long double , onde o primeiro representa a parte real de um número complexo e o segundo representa a parte imaginária. |
complex |
O modelo de classe descreve um objeto usado para representar o sistema de números complexos e efetuar operações aritméticas complexas. |
Literais
O cabeçalho <complexo> define os literais definidos pelo usuário conforme abaixo: Os literais criam um número complexo com uma parte real de zero e uma parte imaginária que tem o valor do parâmetro de entrada.
Declaração | Descrição |
---|---|
constexpr complex<long double> operator""il(long double d) constexpr complex<long double> operator""il(unsigned long long d) |
Retorna: 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) |
Retorna: 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) |
Retorna: complex<float>{0.0f, static_cast<float>(d)} . |
Confira também
Referência de arquivos de cabeçalho
Acesso thread-safe na biblioteca C++ Standard