标准C++复数运算类详解及使用例程
在C++中复数运算可以通过两种方式来实现:
1)标准C++复数运算库:complex<typedef> ObjectName(realPart, imagePart);
2)自定义复数运算类:包括复数的实部、虚部、四则运算、模运算、共轭等。
后者可以根据需要自己定义,关于类的定义这里不再说明,具体的功能可以根据自己的需要去实现。这里介绍C++标准的复数运算类complex,网上已经有一些关于complex类的简单介绍,但大多都是比较粗略的说明,并没有提供完整而详细的介绍。这里参考了网上的一些资源,首先介绍complex类的定义,包括:对象的构造方法、算术运算、赋值运算符、指数运算、对数运算、幂运算、三角函数运算、输入输出重载等,然后给出了一个使用例程,用于对其使用方法的总结用户总结。
一、complex类简介
C++复数运算由标准C++复数运算库(complex number mathematics library)来实现。complex类定义了标准的输入输出运算、算是运算、关系运算和赋值运算,同时还包括指数运算、对数运算、幂运算、平方根、三角函数(正弦,余弦,双曲正弦,双曲余弦)等,还包括笛卡尔坐标系到极坐标系转换的函数。
二、文件包含
1、 #include <complex.h>
2、 #include <math.h>
三、构造方法
1、complex为模板类,因此在定义一个复数时需要制定变量类型,如complex<double> cm(1,1);
2、定义时实部和虚部参数可以使用变量,如:
double a = 1;
double b = 1;
complex<double> cm(a, b);
3、以下定义均合法:
a) complex(): complex<double> c1;// c1 = (0,0);
b) complex(double real, double<double> imag = 0.0): complex c2(1.0);// c2 = (1.0,0);
c) complex<double> c3 = 3.4; // c3 = (3.4,0);
d) complex c4 = 3.4 + complex(1.2, 3.5);
四、笛卡尔坐标系和极坐标系下有关函数
1、real();: friend double real(complex a);
2、 img();: friend double imag(complex a);
3、 abs();: friend double abs(complex a);
4、 norm();: friend double norm(complex a);
5、 arg();: friend double arg(complex a);
6、 conj();: friend complex conj(complex a);
7、 polar();: friend complex polar(double r,double t);
示例:
d = real(a);// 返回复数a的实部
d = imag(a);// 返回复数a的虚部
d = abs(a);// 返回复数a的模值/幅值
d = norm(a);// 返回复数a的模值平方
d = arg(a);// 返回复数a的幅角
z = conj(a);// 返回复数a的共轭复数
z = polar(r,t);// 复数的极坐标定义方式,r为幅值,t为幅角
五、指数、对数、幂、平方根运算函数
1、 exp(); friend complex exp(complex a);
2、 log(); friend complex log(complex a);
3、 pow(); 四种
a) friend complex pow(double a, complex b);
b) friend complex pow(complex a, int b);
c) friend complex pow(complex a, double b);
d) friend complex pow(complex a,complex b);
4、 sqrt();friend complex sqrt(complex a);
六、三角关系运算函数
1、 sin(); friend complex sin(complex a);
2、 cos(); friend complex cos(complex a);
3、 sinh(); friend complex sinh(complex a);
4、 cosh(); friend complex cosh(complex a);
七、运算符重载
运算符重载包括:+、-、*、/(包括+=、-=、*=、/=)、==、!=、<<、>>
八、使用例程
1、开发环境:Win7 (X64) / VS2010
2、创建新项目,编写代码如下:
#include <iostream>
#include <complex>
#include <math.h>using namespace std;void main()
{// 复数类对象定义cout << "复数类对象定义" << endl;double r = 1.0;double x = 1.0;complex<double> c1;complex<double> c2(1,1);complex<double> c3(r,x);complex<double> c4 = 2.0;complex<double> c5 = c4 + complex<double>(2,1);cout << "c1 = " << c1 << endl;cout << "c2 = " << c2 << endl;cout << "c3 = " << c3 << endl;cout << "c4 = " << c4 << endl;cout << "c5 = " << c5 << endl << endl;// 笛卡尔坐标系和极坐标系下有关函数cout << "笛卡尔坐标系和极坐标系下有关函数" << endl;cout << "c5实部real:" << c5.real() << endl;cout << "c5虚部imag:" << c5.imag() << endl;cout << "c5模值abs:" << abs(c5) << endl;cout << "c5模值平方norm:" << norm(c5) << endl;cout << "c5幅角arg:" << arg(c5) << endl;cout << "c5共轭复数conj:" << conj(c5) << endl;complex<double> z = polar(1.0, 3.14/6);cout << "复数极坐标定义polar:" << z << endl << endl;// 运算符重载,四则运算cout << "运算符重载,四则运算" << endl;cout << "c2 + c5 = " << c2 + c5 << endl;cout << "c2 - c5 = " << c2 - c5 << endl;cout << "c2 * c5 = " << c2 * c5 << endl;cout << "c2 / c5 = " << c2 / c5 << endl << endl;system("pause");
}
3、运行结果如图1所示:
图1
参考:
1)http://blog.chinaunix.net/uid-20559667-id-1924707.html
2)http://blog.csdn.net/qhs1573/article/details/12254205
标准C++复数运算类详解及使用例程相关推荐
- python布尔类型运算_Python对象类型及其运算方法(详解)
基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...
- OpenCV Mat类详解和用法(官网原文)
参考文章:OpenCV Mat类详解和用法 我马克一下,日后更 官网原文链接:https://docs.opencv.org/3.2.0/d6/d6d/tutorial_mat_the_basic_i ...
- 转载:c+string类详解
C++ string 类详解 </h1><div class="clear"></div><div class="postBod ...
- Cocos2d之Node类详解之节点树(二)
一.声明 本文属于笔者原创,允许读者转载和分享,只要注明文章来源即可. 笔者使用cocos2d框架的cocos2d-x-3.3rc0版本的源代码做分析.这篇文章承接上篇<Cocos2d之Node ...
- pytorch教程之nn.Module类详解——使用Module类来自定义网络层
前言:前面介绍了如何自定义一个模型--通过继承nn.Module类来实现,在__init__构造函数中申明各个层的定义,在forward中实现层之间的连接关系,实际上就是前向传播的过程. 事实上,在p ...
- 菜鸟的学习之路(12) —HashSet类详解
一.HashSet类详解: HashSet类的底层是HaskMap实现的.存入HashSet的元素是有HashMap的key来保存的.而HashMap的值是一个Object对象. HashSet中是不 ...
- OpenCV Mat类详解和用法
OpenCV Mat类详解和用法 我们有多种方法可以获得从现实世界的数字图像:数码相机.扫描仪.计算机体层摄影或磁共振成像就是其中的几种.在每种情况下我们(人类)看到了什么是图像.但是,转换图像到我们 ...
- 集合框架之ArrayDeque类详解
Java集合框架分析(Deque)---ArrayDeque类详解 目录 一.数据结构 二.类标题 三.字段 四.构造函数 五.方法分析 类型 方法 作用 添加元素 public void addFi ...
- Python 标准库之 sys 模块详解
Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...
最新文章
- Please ensure JDK installation is valid and compatible with the current OS
- 大道至简阅读笔记03
- 让列表只显示数据,不显示文件夹的方法
- mysql视图_mysql之视图详解
- ROM微型计算机是什么,在微型计算机中,ROM是().
- IEEE754标准中32位、64位浮点数的取值范围
- 【技术文档】JEECG 页面字典控件与Popup使用
- 私服采集,在线添加系统!
- java使用UDP数据报通讯方式QQ聊天系统:服务器、客户端
- 樊登36个问题建立亲密关系_36个问题建立亲密关系
- poi导出word模板项目实例(一个文件)
- mysql数据库的安装和配置文件_Mysql数据库介绍、安装和配置文件
- 程序员的思维(转载于伯乐在线-author:水流年)
- C++ 高仿easyX图形库
- android 上层设置 自动调节亮度
- uniapp从开发App到上架应用市场需要经历什么?
- java设置小数点格式_java指定小数点后位数格式
- python人工智能学习需要学什么?
- 获取百度网盘下载真实地址
- AutoCAD 2014 新特性--针对开发人员
热门文章
- 安装了silverlight还是提示_Windows 10环境用友ERPU8V10.1安装方法~2019年11月
- 2022中国移动创客马拉松大赛 12W奖金,人少钱多,等你来战!
- DOS命令:ftype
- 中国云计费服务产业形势分析与营销趋势研究报告2022版
- ChatGPT+打印机自动写作业?都是科技与狠活
- php应用程序并行配置不正确,解决Win10应用程序无法启动因为并行配置不正确
- 【工具】向日葵远程控制之后键盘失效、自动锁定按住Alt键
- 【vue】1、vue介绍及vue基础指令
- 炒黄金如何避开亏损,有哪些技巧?
- 【计算机图形学学习】面向移动设备的真实感图形处理系统设计与实现 理论基础部分简读笔记