Trabalhando com números complexos

C#:
Trabalhando com números complexos

Como:

C# possui uma estrutura integrada System.Numerics.Complex para processar números complexos. Aqui está um rápido passo a passo:

using System;
using System.Numerics;

class ExemploNumeroComplexo
{
    static void Main()
    {
        // Criando números complexos
        Complex c1 = new Complex(4, 5); // 4 + 5i
        Complex c2 = Complex.FromPolarCoordinates(1, Math.PI / 4); // 1 * e^(iπ/4)

        // Operações básicas
        Complex soma = c1 + c2;
        Complex diferenca = c1 - c2;
        Complex produto = c1 * c2;
        Complex quociente = c1 / c2;

        // Exibindo resultados
        Console.WriteLine($"Soma: {soma}");
        Console.WriteLine($"Diferença: {diferenca}");
        Console.WriteLine($"Produto: {produto}");
        Console.WriteLine($"Quociente: {quociente}");
        Console.WriteLine($"Magnitude de c1: {c1.Magnitude}");
        Console.WriteLine($"Fase de c1: {c1.Phase}");
    }
}

E isso produzirá:

Soma: (4.70710678118655, 5.70710678118655)
Diferença: (3.29289321881345, 4.29289321881345)
Produto: (-1.00000000000001, 9)
Quociente: (0.6, 0.8)
Magnitude de c1: 6.40312423743285
Fase de c1: 0.896055384571344

Aprofundamento

Números complexos, consistindo de uma parte real e uma imaginária (frequentemente notados como a + bi), existem desde o século 17. O matemático italiano Gerolamo Cardano é creditado com seu desenvolvimento inicial. Em programação, lidar com números complexos envolve compreensão e gestão dessas duas partes distintas.

Enquanto o System.Numerics.Complex do C# é robusto e integrado à linguagem, outras linguagens como Python oferecem funcionalidades semelhantes com cmath ou bibliotecas de terceiros. E se você está trabalhando em uma versão antiga do C# ou uma versão do .NET que não suporta System.Numerics, talvez tenha que criar sua própria classe de número complexo ou encontrar uma biblioteca.

Internamente, as operações em números complexos usam aritmética de ponto flutuante, o que pode introduzir erros de arredondamento. Portanto, ao implementar algoritmos que usam extensivamente números complexos, é fundamental lembrar disso e considerar o impacto na precisão e acurácia.

Veja Também

  1. Referência do C# para System.Numerics.Complex: https://learn.microsoft.com/en-us/dotnet/api/system.numerics.complex
  2. Um mergulho profundo na matemática dos números complexos: https://mathworld.wolfram.com/ComplexNumber.html
  3. Para implementações alternativas e bibliotecas, confira Math.NET Numerics: https://numerics.mathdotnet.com/