complex复数库学习

news2024/11/19 10:38:13

此头文件是数值库的一部分。本篇介绍complex的基本用法。

常用的API如下:

运算

real

返回实部
(函数模板)

imag

返回虚部
(函数模板)

abs(std::complex)

返回复数的模
(函数模板)

arg

返回辐角
(函数模板)

norm

返回模(范数)的平方
(函数模板)

conj

返回复共轭
(函数模板)

proj

(C++11)

返回到黎曼球上的投影
(函数模板)

polar

从模和辐角构造复数
(函数模板)
指数函数

exp(std::complex)

e 为底复数的指数
(函数模板)

log(std::complex)

沿负实轴切割的复自然对数
(函数模板)

log10(std::complex)

沿负实轴分割的复常用对数
(函数模板)
幂函数

pow(std::complex)

复数幂,一或两个实参可为复数
(函数模板)

sqrt(std::complex)

右半平面范围中的复平方根
(函数模板)
三角函数

sin(std::complex)

计算复数的正弦(sinz)

(函数模板)

cos(std::complex)

计算复数的余弦(cosz)

(函数模板)

tan(std::complex)

计算复数的正切(tanz)

(函数模板)

asin(std::complex)

(C++11)

计算复数的反正弦(arcsinz)

(函数模板)

acos(std::complex)

(C++11)

计算复数的反余弦(arccosz)

(函数模板)

atan(std::complex)

(C++11)

计算复数的反正切(arctanz)

(函数模板)
双曲函数

sinh(std::complex)

计算复数的双曲正弦(sinhz)

(函数模板)

cosh(std::complex)

计算复数的双曲余弦(coshz)

(函数模板)

tanh(std::complex)

计算复数的双曲正切(tanhz)

(函数模板)

asinh(std::complex)

(C++11)

计算复数的反双曲正弦(arsinhz)

(函数模板)

acosh(std::complex)

(C++11)

计算复数的反双曲余弦(arcoshz)

(函数模板)

atanh(std::complex)

(C++11)

计算复数的反双曲正切(artanhz)

示例代码:

#include <iostream>       // std::wcout, std::wcout 
#include <complex>
#include <limits>        
#include <string>         // std::wstring
#include <cmath>         

int main()
{
	// complex operators
	std::complex<double> mycomplex;

	mycomplex = 10.0;   // 10
	mycomplex += 2.0;   // 12
	std::cout << "mycomplex is " << mycomplex << '\n';
	mycomplex = std::complex<double>(10.0, 3.0);  // 10+i
	std::cout << "mycomplex is " << mycomplex << '\n';
	mycomplex = mycomplex + 10.0;               // 20+i

	if (mycomplex == std::complex<double>(20.0, 3.0))
		std::cout << "mycomplex is " << mycomplex << '\n';

	// std::real example
	std::cout << "Real part:" << std::real(mycomplex) << '\n';
	// std::imag example
	std::cout << "Imaginary part:" << std::imag(mycomplex) << '\n';
	// abs complex example
	std::complex<double> mycomplex2(3.0, 4.0);
	std::cout << "The absolute value of " << mycomplex2 << " is " << std::abs(mycomplex2) << '\n';
	// arg complex example
	std::cout << "The polar form of " << mycomplex2;
	std::cout << " is " << std::abs(mycomplex2) << "*e^i*" << std::arg(mycomplex2) << "rad\n";
	// norm example
	std::cout << "The norm of " << mycomplex2 << " is " << std::norm(mycomplex2) << '\n';
	// conj example
	std::complex<double> mycomplex3(10.0, 2.0);
	std::cout << "The conjugate of " << mycomplex3 << " is " << std::conj(mycomplex3) << '\n';
	// polar example
	std::cout << "The complex whose magnitude is " << 2.0;
	std::cout << " and phase angle is " << 0.5;
	std::cout << " is " << std::polar(2.0, 0.5) << '\n';
	// proj example
	std::complex<double> mycomplex4(std::numeric_limits<double>::infinity(), 2.0);
	std::cout << "The projection of " << mycomplex4 << " is " << std::proj(mycomplex4) << '\n';
	// sin example
	std::cout << std::fixed;
	std::complex<double> z(1, 0); // 表现同沿着实轴的实正弦
	std::cout << "sin" << z << " = " << std::sin(z)
		<< "  (sin(1) = " << std::sin(1) << ")\n";
	// sinh example
	std::complex<double> z2(0, 1); // 表现同沿着虚轴的 sinh
	std::cout << "sin" << z2 << " = " << std::sin(z2)
		<< "  (sinh(1) = " << std::sinh(1) << ")\n";
	// cos example
	std::complex<double> z3(1.0, 0.0); // 表现为沿实轴的实余弦
	std::cout << "cos" << z3 << " = " << std::cos(z3)
		<< " (cos(1) = " << std::cos(1) << ")\n";
	// cosh example
	std::complex<double> z4(0.0, 1.0); // 表现为沿虚轴的实 cosh
	std::cout << "cos" << z4 << " = " << std::cos(z4)
		<< " (cosh(1) = " << std::cosh(1) << ")\n";
	// tan example
	std::complex<double> z5(1, 0); // 表现类似沿实轴的实正切
	std::cout << "tan" << z5 << " = " << std::tan(z5)
		<< " (tan(1) = " << std::tan(1) << ")\n";
	// tanh example
	std::complex<double> z6(0, 1); // 表现类似沿虚轴的 tanh
	std::cout << "tan" << z6 << " = " << std::tan(z6)
		<< " (tanh(1) = " << std::tanh(1) << ")\n";
	// asin example
	std::complex<double> z7(-2.0, 0.0);
	std::cout << "asin" << z7 << " = " << std::asin(z7) << '\n';
	std::complex<double> z8(-2.0, -0.0);
	std::cout << "asin" << z8 << " (the other side of the cut) = "
		<< std::asin(z8) << '\n';
	// acos example
	// for any z, asin(z) = acos(−z) − pi / 2
	const double pi = std::acos(-1);
	std::complex<double> z9 = std::acos(z8) - pi / 2;
	std::cout << "sin(acos" << z8 << " - pi / 2) = " << std::sin(z9) << '\n';
	// atan example
	std::complex<double> z10(0.0, 2.0);
	std::cout << "atan" << z10 << " = " << std::atan(z10) << '\n';
	std::complex<double> z11(-0.0, 2.0);
	std::cout << "atan" << z11 << " (the other side of the cut) = "
		<< std::atan(z11) << '\n';
	// atan example
	std::complex<double> z12(0.0, INFINITY);
	std::cout << "2 * atan" << z12 << " = " << 2.0 * std::atan(z12) << '\n';
	// asinh example
	std::complex<double> z13(0.0, -2.0);
	std::cout << "asinh" << z13 << " = " << std::asinh(z13) << '\n';
	std::complex<double> z14(-0.0, -2);
	std::cout << "asinh" << z14 << " (the other side of the cut) = "
		<< std::asinh(z14) << '\n';
	// for any z, asinh(z) = asin(iz) / i
	std::complex<double> z15(1.0, 2.0);
	std::complex<double> i(0.0, 1.0);
	std::cout << "asinh" << z15 << " = " << std::asinh(z15) << '\n'
		<< "asin" << z15 * i << " / i = " << std::asin(z15 * i) / i << '\n';
	// acosh example
	std::complex<double> z16(0.5, 0);
	std::cout << "acosh" << z16 << " = " << std::acosh(z16) << '\n';

	std::complex<double> z17(0.5, -0.0);
	std::cout << "acosh" << z17 << " (the other side of the cut) = "
		<< std::acosh(z17) << '\n';

	// 在上半平面,acosh = i acos 
	std::complex<double> z18(1, 1), i2(0, 1);
	std::cout << "acosh" << z18 << " = " << std::acosh(z18) << '\n'
		<< "i*acos" << z18 << " = " << i2 * std::acos(z18) << '\n';
	// atanh example
	std::complex<double> z19(2.0, 0.0);
	std::cout << "atanh" << z19 << " = " << std::atanh(z19) << '\n';

	std::complex<double> z20(2.0, -0.0);
	std::cout << "atanh" << z20 << " (the other side of the cut) = "
		<< std::atanh(z20) << '\n';

	// for any z, atanh(z) = atanh(iz) / i
	std::complex<double> z21(1.0, 2.0);
	std::complex<double> i3(0.0, 1.0);
	std::cout << "atanh" << z21 << " = " << std::atanh(z21) << '\n'
		<< "atan" << z21 * i3 << " / i = " << std::atan(z21 * i3) / i3 << '\n';

	// exp example
	const double pi4 = std::acos(-1);
	const std::complex<double> i4(0, 1);
	std::cout << std::fixed << "exp(i4*pi4) = " << std::exp(i4 * pi4) << '\n';
	// log example
	std::complex<double> z22{ 0.0, 1.0 }; // r = 1, θ = pi / 2
	std::cout << "2 * log" << z22 << " = " << 2.0 * std::log(z22) << '\n';

	std::complex<double> z23{ sqrt(2.0) / 2, sqrt(2.0) / 2 }; // r = 1, θ = pi / 4
	std::cout << "4 * log" << z23 << " = " << 4.0 * std::log(z23) << '\n';

	std::complex<double> z24{ -1.0, 0.0 }; // r = 1, θ = pi
	std::cout << "log" << z24 << " = " << std::log(z24) << '\n';
	std::complex<double> z25(-1, -0.0); // 分支的另一侧
	std::cout << "log" << z25 << " (the other side of the cut) = " << std::log(z25) << '\n';
	// log10 example
	std::complex<double> z26(0.0, 1.0); // r = 0, θ = pi / 2
	std::cout << "2 * log10" << z26 << " = " << 2.0 * std::log10(z26) << '\n';

	std::complex<double> z27(sqrt(2.0) / 2, sqrt(2.0) / 2); // r = 1, θ = pi / 4
	std::cout << "4 * log10" << z27 << " = " << 4.0 * std::log10(z27) << '\n';

	std::complex<double> z28(-100.0, 0.0); // r = 100, θ = pi
	std::cout << "log10" << z28 << " = " << std::log10(z28) << '\n';
	std::complex<double> z29(-100.0, -0.0); // 切割的另一侧
	std::cout << "log10" << z29 << " = " << std::log10(z29) << " "
		"(the other side of the cut)\n"
		"(note: pi / log(10) = " << std::acos(-1.0) / std::log(10.0) << ")\n";
	// pow example
	std::complex<double> z30(1.0, 2.0);
	std::cout << "(1,2)^2 = " << std::pow(z30, 2) << '\n';

	std::complex<double> z31(-1.0, 0.0); // -1 的平方根
	std::cout << "-1^0.5 = " << std::pow(z31, 0.5) << '\n';

	std::complex<double> z32(-1.0, -0.0); // 切割的另一侧
	std::cout << "(-1,-0)^0.5 = " << std::pow(z32, 0.5) << '\n';

	std::complex<double> i5(0.0, 1.0); // i^i = exp(-pi/2)
	std::cout << "i^i = " << std::pow(i5, i5) << '\n';
	// sqrt example
	std::cout << "-4 的平方根是 "
		<< std::sqrt(std::complex<double>(-4.0, 0.0)) << '\n'
		<< "(-4,-0) 的平方根是 "
		<< std::sqrt(std::complex<double>(-4.0, -0.0))
		<< "(切割的另一侧)\n";

	return 0;
}



运行结果:

参考:

https://cplusplus.com/reference/complex/

https://zh.cppreference.com/w/cpp/header/complex

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1899934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开启视频创作新篇章!腾讯发布MimicMotion:单张图像+简单姿势,瞬间“活”化视频。

腾讯和上交发布了一个根据图片生成跳舞视频的项目MimicMotion。效果同时支持面部特征和唇形同步&#xff0c;不止可以搞跳舞视频&#xff0c;也可以做数字人。 MimicMotion方案优化的内容有&#xff1a; 引入基于置信度的姿态引导机制。确保生成的视频在时间上更加连贯流畅。 …

Python爬虫教程第1篇-基础知识

文章目录 什么是爬虫爬虫的工作原理用途搜索引擎爬虫Robots协议HTTP的请求过程URL的含义HTTP常见请求头爬虫常用的技术 什么是爬虫 信息的交互是通过web网页、或者移动端等不同的客户端端形式进行交互&#xff0c;这个过程是一个人与网路正常的交互行为。而爬虫可以用来模拟人…

二维树状数组区域查询

落谷4514 过关代码如下 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> using namespace std; //#define int long longconst int N 2050; int t1[N][N], t2[N][N], t3[N][N], t4[N][N]; int lowbit(int x) { return x & (-x); } int n, m; void update(…

将循环转化为递归的三种方法,求1+2+3……+n等差数列

解法一&#xff1a;使用公共变量s&#xff0c;递归循环1~n加到s上 #include<bits/stdc.h> using namespace std; int n,s; void fun(int i){if(i<n){ssi;fun(i1);}}int main(){cin>>n;fun(1);cout<<s;return 0; } 解法二&#xff1a;通过层层累加&#x…

Vue的民族民俗文化分享平台-计算机毕业设计源码22552

基于Vue的民族民俗文化分享平台设计与实现 摘 要 本文介绍了一种基于Vue.js前端框架和Express后端框架的民族民俗文化分享平台的设计和实现。该平台旨在通过线上方式&#xff0c;促进民族民俗文化的传播与分享&#xff0c;增强公众对多元文化的了解和认同。 平台为普通用户提供…

如何第一次从零上传项目到GitLab

嗨&#xff0c;我是兰若&#xff0c;今天想给大家说下&#xff0c;如何上传一个完整的项目到与LDAP集成的GitLab&#xff0c;也就是说这个项目之前是不在git上面的&#xff0c;这是第一次上传&#xff0c;这样上传上去之后&#xff0c;其他小伙伴就可以根据你这个项目的git地址…

L1218-L5298清零软件使用图解

清零前请取消打印任务&#xff0c;打印机用USB线接电脑并开启 双击[Resetter.exe]启动软件,点击[Select],选择Port打印机型号&#xff0c;然后点[OK]&#xff0c;如图。 [如果port下拉列表中找不到你的打印机&#xff0c;请更换USB接口&#xff0c;并重新开打印机重试。] 2.…

C语言自定义类型——联合体、枚举

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、联合体&#xff08;一&#xff09;、联合体的声明&#xff08;二&#xff09;、联合体的特点&#xff08;三&#xff09;、联合体大小的计算&#xff01;&a…

在本地运行React集成TypeScript的项目

首先问ChatGPT&#xff0c;贴一段TypeScript代码&#xff0c;问ChatGPT&#xff1a;要运行以上代码&#xff0c;该怎么操作&#xff1f; ChatGPT给出了详细步骤&#xff0c;下面是实际操作&#xff1a; 创建一个react项目&#xff1a; npx create-react-app yuanyu-timeline …

js函数扩展内容---多参数,函数属性,字符串生成函数

1.多参数 在js中&#xff0c;Math.max()方法可以接受任意数量的参数&#xff0c; Math.max(1,2,3,4);//4 Math.max(1,2,3,4,5,6,7,8,9,10)//10 在max方法里面有一个rest参数&#xff0c;它接受了所有参数全部合成到了一个number数组里面&#xff0c; function rest(a,b,...a…

在Linux系统中配置GitHub的SSH公钥

在Linux系统中配置GitHub的SSH公钥&#xff0c;可以让您无需频繁输入密码即可与GitHub仓库进行交互&#xff0c;提高工作效率。以下是配置步骤: 第一步&#xff1a; 检查SSH密钥是否存在 首先&#xff0c;检查您的用户目录下的.ssh文件夹中是否已有SSH密钥。打开终端&#xff0…

openrestry中的hello world

目录 概述实践部署openrestry脚本效果验证 概述 此篇将在 k8s 运行起一个 openrestry   环境&#xff1a;k8s&#xff1a;1.27.9 &#xff0c;openrestry(docker镜像版本)&#xff1a; 1.25.x &#xff0c;k8s 与 ingress 请参考我的其它文章 离线镜像包请参考&#xff1a;op…

Wish卖家必读:如何安全有效地进行店铺测评

Wish以其独特的商业模式和先进的技术在电商领域独树一帜。作为北美和欧洲最大的移动电商平台之一&#xff0c;Wish拥有庞大的用户基础&#xff0c;其中90%的卖家来自中国&#xff0c;这不仅显示了其在全球电商市场中的影响力&#xff0c;也反映了其对中国卖家的吸引力。 Wish平…

微信小程序UGC类功能场景内容安全识别检测实现方案

概念普及 最近开发了一个小程序&#xff0c;属于同城信息发布类的&#xff0c;提交上架的时候&#xff0c;说需要补充社交-笔记类目。 补充完再次提审&#xff0c;又说是项目包含UGC类功能场景。所谓的UGC类功能&#xff0c;就是指用户可以在平台上自由发布信息&#xff0c;这…

创新引领未来,智慧水利在路上:数字孪生技术为水库管理开辟新机遇,带来新挑战,引领水利行业迈向智能化新纪元

目录 前言 一、数字孪生技术概述 二、新机遇&#xff1a;数字孪生技术如何重塑水库管理 1、精准预测&#xff0c;科学调度 2、智能监测&#xff0c;及时预警 3、优化资源配置&#xff0c;提升管理效率 4、促进公众参与&#xff0c;增强透明度 三、新挑战&#xff1a;数字…

【C语言小知识】getchar与putchar

getchar与putchar getchar介绍putchar介绍总结 在学习c语言阶段存在着许多要求输入数值的例子&#xff0c;在输入字符时&#xff0c;如果使用scanf()和printf()根据%c转换说明读写字符&#xff0c;接下来介绍一堆字符输入/输出函数&#xff1a;getchar()和putchar()。 getchar…

nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)

首先&#xff0c;发现很多解读文章对核心点讲解的很多&#xff0c;但是我感觉没讲全&#xff0c;记录下&#xff0c;我自己看源码时候一些心得 1. 读源码第一步&#xff0c;先去github, issue, 官网&#xff1a; 1.1 github : https://github.com/alibaba/…

R语言数据分析案例42-基于时间序列模型对股票预测分析和研究

一、研究背景和意义 随着全球经济的不断发展和数字化转型的加速推进&#xff0c;科技公司在全球市场中扮演着日益重要的角色。其中&#xff0c;中国的阿里巴巴集团作为全球最大的电子商务公司之一&#xff0c;其业务范围覆盖电子商务、云计算、金融科技等多个领域。由于其在中…

盘点各个国家的国宝

中国&#xff1a;熊猫 熊猫已有800万年的历史&#xff0c;和它们同时代的动物都已灭绝&#xff0c;大熊猫生存至今成为“活化石”。 俄罗斯&#xff1a;北极熊 北极熊是世界上最大的陆地食肉动物&#xff0c;体型巨大&#xff0c;性格凶猛。 美国&#xff1a;白头海雕 白头海雕…

python基础语法 006 内置函数

1 内置函数 材料参考&#xff1a;内置函数 — Python 3.12.4 文档 Python 解释器内置了很多函数和类型&#xff0c;任何时候都能直接使用 内置函数有无返回值&#xff0c;是python自己定义&#xff0c;不能以偏概全说都有返回值 以下为较为常用的内置函数&#xff0c;欢迎补充…