Для комплексных чисел в C++ предусмотрен шаблонный класс std::complex. Параметр его шаблона определяет тип коэффициентов, соответствующих действительной и мнимой части комплексного числа. В большинстве случаев в качестве параметра можно использовать тип double. Объявим простое комплексное число 1+2i:
РЕКОМЕНДУЕМ: Пять правил оптимизации программ
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> #include <complex> int main() { std::complex< double > z( 1.0, 2.0 ); // z = 1 + 2i std::cout << z << std::endl; // Комплексное число выводится в виде вектора: (1, 2) std::cout << std::conj( z ) << std::endl; // Комплексно-сопряженное: (1, -2) std::cout << z.real() << std::endl; // Действительная часть комплексного числа: 1 std::cout << z.imag() << std::endl; // Мнимая часть комплексного числа: 2 return 0; } |
Математические операции с комплексными числами в C++
С комплексными числами в C++ можно работать так же, как и с остальными числовыми типами данных:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> #include <complex> int main() { std::complex< double > z1( 1.0, 2.0 ); std::complex< double > z2( 2.0, 1.0 ); std::cout << z1 + z2 << std::endl; // Сложение комплексных чисел: (3, 3) std::cout << z1 - z2 << std::endl; // Разность комплексных чисел: (-1, 1) std::cout << z1 * z2 << std::endl; // Умножение комплексных чисел: (0, 5) std::cout << z1 / z2 << std::endl; // Деление комплексных чисел: (0.8, 0.6) std::cout << std::pow( z1, 2 ) << std::endl; // Возведение в степень комплексного числа: (-3, 4) return 0; } |
Показательная и тригонометрическая форма комплексного числа в C++
В стандартной библиотеке C++ также предусмотрены функции для работы с различными формами комплексных чисел:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> #include <complex> int main() { std::complex< double > z( 3.0, 4.0 ); double rho = std::abs( z ); // Модуль комплексного числа: 5 double phi = std::arg( z ); // Аргумент комплексного числа: 0.927295 // Тригонометрическая форма комплексного числа: 5*(cos(0.927295) + i*sin(0.927295)) std::cout << rho << "*(cos(" << phi << ") + i*sin(" << phi << "))" << std::endl; // Показательная форма комплексного числа: 5*exp(i*0.927295) std::cout << rho << "*exp(i*" << phi << ")" << std::endl; // Получаем исходное комплексное число по модулю и аргументу: (3, 4) std::cout << std::polar( rho, phi ) << std::endl; return 0; } |
Рекомендуем: Пять типичных ошибок проектирования и программирования