Работа с комплексными числами

C#:
Работа с комплексными числами

Как это сделать:

C# имеет встроенную структуру System.Numerics.Complex для обработки комплексных чисел. Вот краткое руководство:

using System;
using System.Numerics;

class ComplexNumberExample
{
    static void Main()
    {
        // Создание комплексных чисел
        Complex c1 = new Complex(4, 5); // 4 + 5i
        Complex c2 = Complex.FromPolarCoordinates(1, Math.PI / 4); // 1 * e^(iπ/4)

        // Базовые операции
        Complex sum = c1 + c2;
        Complex difference = c1 - c2;
        Complex product = c1 * c2;
        Complex quotient = c1 / c2;

        // Вывод результатов
        Console.WriteLine($"Сумма: {sum}");
        Console.WriteLine($"Разность: {difference}");
        Console.WriteLine($"Произведение: {product}");
        Console.WriteLine($"Частное: {quotient}");
        Console.WriteLine($"Модуль c1: {c1.Magnitude}");
        Console.WriteLine($"Фаза c1: {c1.Phase}");
    }
}

И это выведет:

Сумма: (4.70710678118655, 5.70710678118655)
Разность: (3.29289321881345, 4.29289321881345)
Произведение: (-1.00000000000001, 9)
Частное: (0.6, 0.8)
Модуль c1: 6.40312423743285
Фаза c1: 0.896055384571344

Глубокое погружение

Комплексные числа, состоящие из действительной и мнимой части (часто обозначаемые как a + bi), существуют с 17 века. Итальянский математик Джероламо Кардано приписывают начальное развитие этого направления. В программировании работа с комплексными числами включает понимание и управление этими двумя отличными частями.

Хотя System.Numerics.Complex в C# является надежной и интегрированной в язык, другие языки, такие как Python, предлагают аналогичную функциональность с cmath или сторонними библиотеками. И если вы работаете в старой версии C# или версии .NET, которая не поддерживает System.Numerics, возможно, вам придется создать свой собственный класс комплексных чисел или найти библиотеку.

Внутренне операции с комплексными числами используют арифметику с плавающей запятой, которая может вводить ошибки округления. Поэтому при реализации алгоритмов, широко использующих комплексные числа, важно помнить об этом и учитывать влияние на точность и аккуратность.

Смотрите также

  1. Справочник C# по System.Numerics.Complex: https://learn.microsoft.com/en-us/dotnet/api/system.numerics.complex
  2. Более глубокое изучение математики комплексных чисел: https://mathworld.wolfram.com/ComplexNumber.html
  3. Для альтернативных реализаций и библиотек ознакомьтесь с Math.NET Numerics: https://numerics.mathdotnet.com/