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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章