📜  C++中的复数|套装1(1)

📅  最后修改于: 2023-12-03 14:59:51.308000             🧑  作者: Mango

C++中的复数|套装1

什么是复数?

复数用于表示具有实部和虚部的数,它可以写成 $a + bi$ 的形式,其中 $a$ 和 $b$ 都是实数,$i$ 表示虚数单位。其中,$a$ 被称为复数的实部,$b$ 被称为复数的虚部。复数的加、减、乘、除等运算可以通过实部和虚部的运算来实现。正是由于这些运算规则,C++中也提供了复数类型的支持。

C++中的复数类型

在C++ 11标准中,C++ 标准库提供了 <complex> 头文件来支持复数类型的操作。在使用时,需要通过 std::complex 类型来声明复数变量,语法如下:

#include <complex>

// 声明一个复数变量
std::complex<double> c(1.0, 2.0); // 支持双精度浮点数类型

上面的代码声明了一个复数变量 c,它的实部是 1.0,虚部是 2.0。其中,std::complex 模板类支持多种内置数据类型,如 floatdoublelong 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++中的复数类型是一个不错的选择。