📅  最后修改于: 2023-12-03 14:59:51.308000             🧑  作者: Mango
复数用于表示具有实部和虚部的数,它可以写成 $a + bi$ 的形式,其中 $a$ 和 $b$ 都是实数,$i$ 表示虚数单位。其中,$a$ 被称为复数的实部,$b$ 被称为复数的虚部。复数的加、减、乘、除等运算可以通过实部和虚部的运算来实现。正是由于这些运算规则,C++中也提供了复数类型的支持。
在C++ 11标准中,C++ 标准库提供了 <complex>
头文件来支持复数类型的操作。在使用时,需要通过 std::complex
类型来声明复数变量,语法如下:
#include <complex>
// 声明一个复数变量
std::complex<double> c(1.0, 2.0); // 支持双精度浮点数类型
上面的代码声明了一个复数变量 c
,它的实部是 1.0,虚部是 2.0。其中,std::complex
模板类支持多种内置数据类型,如 float
、double
和 long double
等。
C++ 中复数的加、减、乘、除运算符已经默认重载了,可以直接使用,示例代码如下:
#include <iostream>
#include <complex>
int main() {
std::complex<double> a(1.0, 2.0);
std::complex<double> b(3.0, 4.0);
std::complex<double> sum = a + b;
std::complex<double> diff = a - b;
std::complex<double> product = a * b;
std::complex<double> quotient = a / b;
std::cout << "a + b = " << sum << std::endl;
std::cout << "a - b = " << diff << std::endl;
std::cout << "a * b = " << product << std::endl;
std::cout << "a / b = " << quotient << std::endl;
return 0;
}
上述代码输出以下结果:
a + b = (4,6)
a - b = (-2,-2)
a * b = (-5,10)
a / b = (0.44,0.08)
除此之外,复数类型还支持一些其他的函数,如求取共轭、求取幅值和相位等。具体用法如下:
#include <iostream>
#include <complex>
int main() {
std::complex<double> c(1.0, 2.0);
std::cout << "c = " << c << std::endl;
std::cout << "c.real() = " << c.real() << std::endl; // 获取实部
std::cout << "c.imag() = " << c.imag() << std::endl; // 获取虚部
std::cout << "conj(c) = " << std::conj(c) << std::endl; // 获取共轭
std::cout << "abs(c) = " << std::abs(c) << std::endl; // 获取幅值
std::cout << "arg(c) = " << std::arg(c) << std::endl; // 获取相位
return 0;
}
上述代码输出以下结果:
c = (1,2)
c.real() = 1
c.imag() = 2
conj(c) = (1,-2)
abs(c) = 2.23607
arg(c) = 1.10715
C++提供的复数类型能够方便地进行复数运算,并支持实部、虚部、共轭、幅值和相位等基本操作。对于需要进行复数计算的问题,使用C++中的复数类型是一个不错的选择。