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
, насыщенный методами для манипуляции. Вот почему создание своего собственного класса может быть удобно: легковесность, точное соответствие вашим потребностям, и отсутствие накладных расходов библиотеки.
Один важный момент: следите за точностью с плавающей точкой. Компьютеры не могут точно представить некоторые числа, что приводит к ошибкам округления. При выполнении повторяющихся комплексных операций эти ошибки могут накапливаться!
См. также
Для более глубокого изучения и более сложных операций обратите внимание:
- Apache Commons Math
- Complex class от JScience
- Учебные пособия Oracle по арифметике с плавающей точкой