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)
  • 7
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值