<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