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

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

Как работать:

В Java нет встроенной поддержки комплексных чисел, но мы можем создать свой собственный класс или использовать библиотеку. Вот быстрый пример того, как создать простой класс ComplexNumber и использовать его:

public class ComplexNumber {
    private double real;
    private double imaginary;

    public ComplexNumber(double real, double imaginary) {
        this.real = real;
        this.imaginary = imaginary;
    }

    public ComplexNumber add(ComplexNumber other) {
        return new ComplexNumber(this.real + other.real, this.imaginary + other.imaginary);
    }

    // ToString для отображения комплексных чисел в форме a + bi
    @Override
    public String toString() {
        return String.format("%.1f + %.1fi", real, imaginary);
    }

    // Быстрый тест
    public static void main(String[] args) {
        ComplexNumber c1 = new ComplexNumber(2, 3);
        ComplexNumber c2 = new ComplexNumber(1, 4);

        System.out.println("Сумма: " + c1.add(c2));
    }
}

Пример вывода для основного метода будет:

Сумма: 3.0 + 7.0i

Подробнее

До появления высокоуровневых языков, таких как Java, программисты работали непосредственно с математическими библиотеками на языках, таких как Fortran или C, чтобы управлять комплексными операциями. Концепция восходит к 16 веку, за что благодарность принадлежит математикам вроде Джероламо Кардано и Рафаэля Бомбелли.

В Java java.lang.Math является основой для всего необходимого, но пропускает комплексные числа, возможно, потому что не каждый программист их использует. Альтернативы? Использовать библиотеки. Apache Commons Math предоставляет класс Complex, насыщенный методами для манипуляции. Вот почему создание своего собственного класса может быть удобно: легковесность, точное соответствие вашим потребностям, и отсутствие накладных расходов библиотеки.

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

См. также

Для более глубокого изучения и более сложных операций обратите внимание: