C++中的复数

C++中的复数

   C++中的复数操作在C语言基础上引进了面向对象的特性,在 C++ 头文件在 complex 中定义了一个 complex 类用来表示复数。同时为了兼容 Ccomplex 类型,也提供了一个 complex.h 的头文件。 不同的是,在 complex.h 头文件中, complex 关键字被废弃,只能使用 _Complex__complex__ 来使用 C风格的复数形式。

  • 复数的定义

   在C++中可以使用两种方式定义一个复数,一个使用C风格 _Complex__complex__ ,一个是使用 complex 类。

  #include <iostream>
  #include <complex>
  #include <complex.h>
  using namespace std;
  int main(int argc, char *argv[])
  {
o    complex<double> mycomplex(2.000,2);
    _Complex double  mycomplex2 = 2.000 + 3I;
    __complex__ double mycomplex3 = 2.000 + 4I;

    cout << mycomplex << endl;
    cout << "(" << creal(mycomplex2) << "," << cimag(mycomplex2) << ")" << endl;
    cout << "(" << creal(mycomplex3) << "," << cimag(mycomplex3) << ")" << endl;
    return 0;
  }
  • 复数的基本操作函数

   在C++中既可以使用 C 风格的相关函数处理 C 风格的复数形式。

函数 功能
creal 获取复数的实部
cimag 获取复数的虚部
conj 获取复数的共轭
carg 获取,复平面上穿过原点和复数在复平面表示的点,的直线和实数轴之间的夹角
cproj 返回复数在黎曼球面上的投影


   也可以使用 C++相关数值操作方法,处理 complex 形式的复数。

方法 功能
real 获取复数的实部
imag 获取复数的虚部
abs 获取复数的绝对值
arg 获取,复平面上穿过原点和复数在复平面表示的点,的直线和实数轴之间的夹角
norm 获取复数的范数
conj 获取复数的共轭
polar 获取极座标对应的复数
proj 返回复数在黎曼球面上的投影

#include <iostream>
#include <complex.h>

using namespace std;

int main(int argc, char *argv[])
{
  complex<double> mycomplex(2.000,2);
  _Complex double  mycomplex2 = 2.000 + 3I;

  double real_mycomplex = mycomplex.real();
  double imag_mycomplex = mycomplex.imag();
  double abs_mycomplex = abs(mycomplex);
  double norm_mycomplex = norm(mycomplex);

  double real_mycomplex2 =  creal(mycomplex2);
  double imag_mycomplex2 = cimag(mycomplex2);
  double abs_mycomplex2 =  cabs(mycomplex2);

  cout << "real part of mycomplex: " << real_mycomplex << endl;
  cout << "image part of mycomplex: " << imag_mycomplex << endl;
  cout << "abs of mycomplex: " << abs_mycomplex << endl;
  cout << "norm of mycomplex: " << norm_mycomplex << endl;

  cout << "real part of mycomplex2: " << real_mycomplex2 << endl;
  cout << "image part of mycomplex2: " << imag_mycomplex2 << endl;
  cout << "abs of mycomplex2: " << abs_mycomplex2 << endl;
  return 0;
}
real part of mycomplex: 2
image part of mycomplex: 2
abs of mycomplex: 2.82843
norm of mycomplex: 8
real part of mycomplex2: 2
image part of mycomplex2: 3
abs of mycomplex2: 3.60555
  • 复数的数值操作
#include <iostream>
#include <complex.h>
#include <complex>

using namespace std;

int main(int argc, char *argv[])
{
  complex<double> mycomplex(2.000,2);
  complex<double> mycomplex3(3.000,4);
  _Complex double  mycomplex2 = 2.000 + 3I;
  _Complex double  mycomplex4 = 2.000 + 5I;

  _Complex double plus = mycomplex2 + mycomplex4;
  complex<double> plus2 = mycomplex+mycomplex3;

  cout << "(" << creal(plus) << "," << cimag(plus) << ")" << endl;
  cout << plus2 << endl;
  return 0;
}
(4,8)
(5,6)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章