complex复数库学习

此头文件是数值库的一部分。本篇介绍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 operatorsstd::complex<double> mycomplex;mycomplex = 10.0;   // 10mycomplex += 2.0;   // 12std::cout << "mycomplex is " << mycomplex << '\n';mycomplex = std::complex<double>(10.0, 3.0);  // 10+istd::cout << "mycomplex is " << mycomplex << '\n';mycomplex = mycomplex + 10.0;               // 20+iif (mycomplex == std::complex<double>(20.0, 3.0))std::cout << "mycomplex is " << mycomplex << '\n';// std::real examplestd::cout << "Real part:" << std::real(mycomplex) << '\n';// std::imag examplestd::cout << "Imaginary part:" << std::imag(mycomplex) << '\n';// abs complex examplestd::complex<double> mycomplex2(3.0, 4.0);std::cout << "The absolute value of " << mycomplex2 << " is " << std::abs(mycomplex2) << '\n';// arg complex examplestd::cout << "The polar form of " << mycomplex2;std::cout << " is " << std::abs(mycomplex2) << "*e^i*" << std::arg(mycomplex2) << "rad\n";// norm examplestd::cout << "The norm of " << mycomplex2 << " is " << std::norm(mycomplex2) << '\n';// conj examplestd::complex<double> mycomplex3(10.0, 2.0);std::cout << "The conjugate of " << mycomplex3 << " is " << std::conj(mycomplex3) << '\n';// polar examplestd::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 examplestd::complex<double> mycomplex4(std::numeric_limits<double>::infinity(), 2.0);std::cout << "The projection of " << mycomplex4 << " is " << std::proj(mycomplex4) << '\n';// sin examplestd::cout << std::fixed;std::complex<double> z(1, 0); // 表现同沿着实轴的实正弦std::cout << "sin" << z << " = " << std::sin(z)<< "  (sin(1) = " << std::sin(1) << ")\n";// sinh examplestd::complex<double> z2(0, 1); // 表现同沿着虚轴的 sinhstd::cout << "sin" << z2 << " = " << std::sin(z2)<< "  (sinh(1) = " << std::sinh(1) << ")\n";// cos examplestd::complex<double> z3(1.0, 0.0); // 表现为沿实轴的实余弦std::cout << "cos" << z3 << " = " << std::cos(z3)<< " (cos(1) = " << std::cos(1) << ")\n";// cosh examplestd::complex<double> z4(0.0, 1.0); // 表现为沿虚轴的实 coshstd::cout << "cos" << z4 << " = " << std::cos(z4)<< " (cosh(1) = " << std::cosh(1) << ")\n";// tan examplestd::complex<double> z5(1, 0); // 表现类似沿实轴的实正切std::cout << "tan" << z5 << " = " << std::tan(z5)<< " (tan(1) = " << std::tan(1) << ")\n";// tanh examplestd::complex<double> z6(0, 1); // 表现类似沿虚轴的 tanhstd::cout << "tan" << z6 << " = " << std::tan(z6)<< " (tanh(1) = " << std::tanh(1) << ")\n";// asin examplestd::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 / 2const 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 examplestd::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 examplestd::complex<double> z12(0.0, INFINITY);std::cout << "2 * atan" << z12 << " = " << 2.0 * std::atan(z12) << '\n';// asinh examplestd::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) / istd::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 examplestd::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 examplestd::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) / istd::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 exampleconst 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 examplestd::complex<double> z22{ 0.0, 1.0 }; // r = 1, θ = pi / 2std::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 / 4std::cout << "4 * log" << z23 << " = " << 4.0 * std::log(z23) << '\n';std::complex<double> z24{ -1.0, 0.0 }; // r = 1, θ = pistd::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 examplestd::complex<double> z26(0.0, 1.0); // r = 0, θ = pi / 2std::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 / 4std::cout << "4 * log10" << z27 << " = " << 4.0 * std::log10(z27) << '\n';std::complex<double> z28(-100.0, 0.0); // r = 100, θ = pistd::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 examplestd::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 examplestd::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.mzph.cn/pingmian/41306.shtml

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

相关文章

桌面保存的Word文件删除怎么找回?超实用的三个方法?

在日常工作和学习中&#xff0c;我们经常会使用Word文档进行文字编辑和文件保存。但是&#xff0c;有时由于操作失误或系统故障&#xff0c;我们会不小心将存放在电脑桌面重要的Word文件删除了。导致无法挽回的损失&#xff0c;但幸运的是&#xff0c;有一些方法可以帮助我们找…

源代码防泄漏的制胜法宝——沙箱

沙箱技术作为现代信息安全领域的一种重要手段&#xff0c;其在源代码防泄密方面的应用愈发受到业界的关注。源代码作为企业或组织的核心资产&#xff0c;一旦泄露&#xff0c;不仅可能导致知识产权的流失&#xff0c;还可能对企业运营造成重大影响。因此&#xff0c;利用沙箱技…

跨境干货|最新注册Google账号方法分享

谷歌账号对做跨境外贸业务的人来说是刚需&#xff0c;目前来说大部分的海外社媒平台、工具都可以用谷歌账号来注册。但是仍然有很多朋友并不知道如何注册这个谷歌账号&#xff0c;今天就来给大家分享2个注册谷歌账号的方法&#xff0c;一个是手机号注册&#xff0c;一个是如何跳…

面向对象案例:电影院

TOC 思路 代码 结构 具体代码 Movie.java public class Movie {//一共七个private int id;private String name;private double price;private double score;private String director;private String actors;private String info;//get和setpublic int getId() {return id;…

opencv概念以及安装方法

#opencv相关概念介绍 Open Source Computer Vision Library 缩写 opencv 翻译&#xff1a;开源的计算机视觉库 &#xff0c;英特尔公司发起并开发&#xff0c;支持多种编程语言&#xff08;如C、Python、Java等&#xff09;&#xff0c;支持计算机视觉和机器学习等众多算法&a…

如何让自动化测试更加灵活简洁?

简化的架构对于自动化测试和主代码一样重要。冗余和不灵活性可能会导致一些问题&#xff1a;比如 UI 中的任何更改都需要更新多个文件&#xff0c;测试可能在功能上相互重复&#xff0c;并且支持新功能可能会变成一项耗时且有挑战性的工作来适应现有测试。 页面对象模式如何理…

DataWhale-吃瓜教程学习笔记 (七)

学习视频**&#xff1a;第6章-支持向量机_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 第六章 支持向量机 - 算法原理 几何角度 对于线性可分数据集&#xff0c;找距离正负样本距离都最远的超平面&#xff0c;解是唯一的&#xff0c;泛化性能较好 - 超平面 - 几何间隔 例…

MSPM0G3507——读取引脚的高低电平方法(数字信号循迹模块)

SYSCFG配置 代码部分 //第一个传感器if( DL_GPIO_readPins(xunji_PORT_PIN1_PORT , xunji_PORT_PIN1_PIN )xunji_PORT_PIN1_PIN) //黑&#xff0c;不亮 高{a1;}if( DL_GPIO_readPins(xunji_PORT_PIN1_PORT , xunji_PORT…

从 Keycloak 导出和导入 Realm 和用户

1. 首先对keycloak 命令有所了解 需要将 Keycloak 中的 Realm 导出或导入时&#xff0c;您可以使用 JSON 文件进行操作。以下是一些有关导出和导入 Realm 的方法&#xff1a; 导出 Realm 到目录&#xff1a; 使用 export 命令将 Realm 导出到目录。在执行此命令时&#xff0c;…

技术分享:直播平台如何开发并接入美颜SDK

本篇文章&#xff0c;笔者将分享直播平台如何开发并接入美颜SDK的技术细节与步骤。 一、选择合适的美颜SDK 首先&#xff0c;选择一款适合的美颜SDK非常重要。市面上有很多优秀的美颜SDK供应商&#xff0c;选择时应考虑以下因素&#xff1a; 功能丰富性&#xff1a;支持美白…

短视频文案提取神器怎么提取抖音视频文案!

很多编导以及视频内容创作者为了提高自己的工作效率还会使用视频转文字提取神器&#xff0c;我们都清楚短视频领域每个平台人群熟悉都有所不同&#xff0c;在分发内容的时候也会调整内容已符合平台属性。 短视频文案提取神器怎么提取抖音视频文案 短视频常见的平台有抖音、西瓜…

linux ifconfig未找到命令

linux ifconfig未找到命令 1、使用yum安装net-tools yum install net-toolsyum报未找到命令请查看文章vim未找到命令&#xff0c;且yum install vim安装vim失败 2、安装后使用ifconfig命令 ifconfig

windows实现Grafana+Loki+loki4j轻量级日志系统,告别沉重的ELK

文章目录 Loki下载Loki下载安装Loki添加Loki数据源springboot日志推送 Loki下载 下载地址&#xff1a;https://github.com/grafana/loki/releases/ 找到loki-windows-amd64.exe.zip点击开始下载&#xff0c;我这里下载的2.9.9版本 Loki下载 下载地址&#xff1a;https://gr…

springboot苏桦旅游管理系统-计算机毕业设计源码02123

摘要 旅游业在全球范围内不断发展&#xff0c;为了提供高效的旅游管理和服务&#xff0c;开发一个旅游管理系统具有重要意义。本文旨在设计和实现该旅游管理系统&#xff0c;以满足用户和管理员的需求。该系统采用Spring Boot作为后端框架&#xff0c;利用其简化的开发流程和强…

通过百度文心智能体创建STM32编程助手-实操

一、前言 文心智能体平台AgentBuilder 是百度推出的基于文心大模型的智能体&#xff08;Agent&#xff09;平台&#xff0c;支持广大开发者根据自身行业领域、应用场景&#xff0c;选取不同类型的开发方式&#xff0c;打造大模型时代的产品能力。开发者可以通过 prompt 编排的…

【并发编程JUC】AQS详解

定义理解 AQS&#xff0c;全称为AbstractQueuedSynchronizer&#xff0c;是Java并发包&#xff08;java.util.concurrent&#xff09;中的一个框架级别的工具类&#xff0c;用于构建锁和同步器。它是许多同步类的基础&#xff0c;如ReentrantLock、Semaphore、CountDownLatch等…

相关技术 太阳能热水器循环水泵制作技术

网盘 https://pan.baidu.com/s/1oAKwUEGkKnEgxE-F4znKow?pwdidxd 双温区蓄能供热型太阳能热水系统及其工作方法.pdf 双罐叠压节能恒温型太阳能热水机组.pdf 基于傅科电流的循环式风能热水器.pdf 基于太阳能利用的建筑冷热电联产系统及工作方法.pdf 基于太阳能和热泵的双蓄式热…

C++:特殊类的设计(无线程)

目录 一、设计一个不能拷贝类 二、设计一个只能在堆上创建对象的类 方法一&#xff1a;析构函数私有化 方法二&#xff1a;构造函数私有化 三、设计一个只能在栈上创建对象的类 四、设计一个类不能被继承 五、设计一个只能创建一个对象的类&#xff08;单例模式&#xf…

数学建模MATLAB绘图大全

最近快要开始一年一度的数学建模竞赛啦&#xff0c;接下来争取每天更一篇数学建模算法&#xff01;&#xff08;当然这是理想状态下&#xff09;&#xff0c;今天就先更一些MATLAB常用的绘图吧&#xff0c;论文赏心悦目的关键就在于丰富多彩的图&#xff0c;好看的图一定会成为…

景区智慧公厕,剩余厕位显示,公厕环境监测。

在当今科技飞速发展的时代&#xff0c;景区的服务设施也在不断升级和创新。其中&#xff0c;景区智慧公厕的出现无疑为游客带来了极大的便利。特别是剩余厕位显示和公厕环境监测这两大功能&#xff0c;更是显著提升了景区公厕的管理水平和游客的使用体验。 剩余厕位显示功能是景…