Trabajando con números complejos

C#:
Trabajando con números complejos

Cómo hacerlo:

C# tiene una estructura integrada System.Numerics.Complex para procesar números complejos. Aquí tienes un rápido recorrido:

using System;
using System.Numerics;

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

        // Operaciones básicas
        Complex suma = c1 + c2;
        Complex diferencia = c1 - c2;
        Complex producto = c1 * c2;
        Complex cociente = c1 / c2;

        // Mostrar resultados
        Console.WriteLine($"Suma: {suma}");
        Console.WriteLine($"Diferencia: {diferencia}");
        Console.WriteLine($"Producto: {producto}");
        Console.WriteLine($"Cociente: {cociente}");
        Console.WriteLine($"Magnitud de c1: {c1.Magnitude}");
        Console.WriteLine($"Fase de c1: {c1.Phase}");
    }
}

Y eso producirá:

Suma: (4.70710678118655, 5.70710678118655)
Diferencia: (3.29289321881345, 4.29289321881345)
Producto: (-1.00000000000001, 9)
Cociente: (0.6, 0.8)
Magnitud de c1: 6.40312423743285
Fase de c1: 0.896055384571344

Análisis Detallado

Los números complejos, que consisten en una parte real y una imaginaria (a menudo notados como a + bi), existen desde el siglo XVII. Al matemático italiano Gerolamo Cardano se le atribuye su desarrollo inicial. En la programación, tratar con números complejos implica entender y manejar estas dos partes distintas.

Aunque System.Numerics.Complex de C# es robusto e integrado en el lenguaje, otros lenguajes como Python ofrecen funcionalidad similar con cmath o bibliotecas de terceros. Y si estás trabajando en una versión antigua de C# o una versión de .NET que no admite System.Numerics, es posible que tengas que crear tu propia clase de número complejo o encontrar una biblioteca.

Internamente, las operaciones sobre números complejos utilizan aritmética de punto flotante, lo que puede introducir errores de redondeo. Por lo tanto, al implementar algoritmos que usan números complejos extensivamente, es clave recordar esto y considerar el impacto en la precisión y exactitud.

Ver También

  1. Referencia de C# para System.Numerics.Complex: https://learn.microsoft.com/en-us/dotnet/api/system.numerics.complex
  2. Un análisis más profundo de la matemática de los números complejos: https://mathworld.wolfram.com/ComplexNumber.html
  3. Para implementaciones alternativas y bibliotecas, consulta Math.NET Numerics: https://numerics.mathdotnet.com/