Для комплексных чисел в C++ предусмотрен шаблонный класс std::complex
. Параметр его шаблона определяет тип коэффициентов, соответствующих действительной и мнимой части комплексного числа. В большинстве случаев в качестве параметра можно использовать тип double
. Объявим простое комплексное число 1+2i
:
#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++ можно работать так же, как и с остальными числовыми типами данных:
https://eddp.ru Рейд контроллеры Dell - как создать raid на Dell.
#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++ также предусмотрены функции для работы с различными формами комплексных чисел:
индивидуалки Омска с проверенными фото.
#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;
}
Здравствуйте. Спасибо за комментарий.
Уточнил в MSDN ( https://msdn.microsoft.com/ru-ru/library/xz7hhb93.aspx ):
Код:
#include <complex>
#include <iostream>
int main( )
{
using namespace std;
complex <double> c1 ( 4.0 , 3.0 );
cout << "The complex number c1 = " << c1 << endl;
double dr1 = c1.real ( );
cout << "The real part of c1 is c1.real ( ) = " << dr1 << "." << endl;
double di1 = c1.imag ( );
cout << "The imaginary part of c1 is c1.imag ( ) = " << di1 << "." << endl;
}
Соответствующий output:
The complex number c1 = (4,3)
The real part of c1 is c1.real ( ) = 4.
The imaginary part of c1 is c1.imag ( ) = 3.
Сам конструктор определен следующим образом:
constexpr complex( const T& _RealVal = 0, const T& _ImagVal = 0);
Где
_RealVal - Значение вещественной части, используемое для инициализации конструируемого комплексного числа.
_ImagVal - Значение мнимой части, используемое для инициализации конструируемого комплексного числа.
Т.е. z = (0,1) все же равно i.
Anonymous
Не правильно. z = (0,1) != i. z = 1. В Visual Studio комплексное число представляется так