c++中complex的用法

c++中complex的用法
最新回答
绝命小红帽

2024-04-06 20:05:09

在 C++ 中,complex 类是标准库提供的用于处理复数的模板类,支持复数的基本运算和数学函数操作。以下是其核心用法详解:

1. 创建 complex 对象

通过指定实部和虚部的类型(如 float、double)和值来创建对象:

#include <complex>using namespace std;complex<double> c1(3.5, 2.0); // 实部=3.5,虚部=2.0complex<float> c2(1.0f, -1.0f); // 使用 float 类型2. 访问实部和虚部

使用 real() 和 imag() 成员函数获取或修改实部/虚部:

cout << "实部: " << c1.real() << endl; // 输出 3.5cout << "虚部: " << c1.imag() << endl; // 输出 2.0c1.real(4.0); // 修改实部为 4.0c1.imag(1.5); // 修改虚部为 1.53. 基本算术运算

支持 +、-、*、/ 运算符,运算规则遵循复数数学定义:

complex<double> a(2.0, 3.0), b(1.0, -1.0);auto sum = a + b; // (3.0, 2.0)auto diff = a - b; // (1.0, 4.0)auto product = a * b; // (5.0, 1.0)auto quotient = a / b; // (-0.5, 2.5)4. 数学函数

可直接对复数调用标准数学函数:

complex<double> z(1.0, 1.0);cout << "sin(z): " << sin(z) << endl; // 复数正弦cout << "cos(z): " << cos(z) << endl; // 复数余弦cout << "tan(z): " << tan(z) << endl; // 复数正切cout << "exp(z): " << exp(z) << endl; // 复数指数cout << "log(z): " << log(z) << endl; // 复数自然对数5. 其他常用方法
  • 模(绝对值):abs() 返回复数的模($sqrt{实部^2 + 虚部^2}$)。
  • 辐角:arg() 返回复数的幅角(弧度)。
  • 共轭复数:conj() 返回共轭复数(虚部取反)。
cout << "模: " << abs(z) << endl; // √(1² + 1²) ≈ 1.414cout << "辐角: " << arg(z) << endl; // π/4 弧度(45度)cout << "共轭: " << conj(z) << endl; // (1.0, -1.0)6. 示例代码#include <iostream>#include <complex>using namespace std;int main() { complex<double> c(3.0, 4.0); cout << "复数: " << c << endl; cout << "实部: " << c.real() << ", 虚部: " << c.imag() << endl; cout << "模: " << abs(c) << endl; cout << "共轭: " << conj(c) << endl; complex<double> d(1.0, 1.0); cout << "c + d: " << c + d << endl; cout << "c * d: " << c * d << endl; cout << "sin(c): " << sin(c) << endl; return 0;}7. 注意事项
  • 头文件:必须包含 <complex>。
  • 类型一致性:运算时需确保复数类型一致(如 complex<double> 与 complex<float> 需显式转换)。
  • 输出格式:默认输出为 (实部,虚部),可通过流操作符自定义格式。

通过 complex 类,C++ 提供了高效且直观的复数运算支持,适用于信号处理、物理模拟等场景。