C++中的complex

在 C++ 中,std::complex 是一个模板类,用于表示和操作复数。这个类是标准模板库(STL)的一部分,包含在 头文件中。std::complex 提供了一套丰富的功能,包括基本的算术运算、比较运算、数学函数等,使得处理复数成为一件简单而直接的事情。

#include <iostream>
#include <complex>

int main() {
    // 创建两个复数
    std::complex<double> num1(2.0, 3.0); // 2 + 3i
    std::complex<double> num2(3.0, 4.0); // 3 + 4i

    // 复数的加法
    std::complex<double> sum = num1 + num2;
    std::cout << "Sum: " << sum << std::endl;

    // 复数的乘法
    std::complex<double> prod = num1 * num2;
    std::cout << "Product: " << prod << std::endl;

    // 复数的除法
    std::complex<double> quotient = num1 / num2;
    std::cout << "Quotient: " << quotient << std::endl;

    // 复数的共轭
    std::complex<double> conjugate = std::conj(num1);
    std::cout << "Conjugate of num1: " << conjugate << std::endl;

    // 获取复数的模(绝对值)
    double absValue = std::abs(num1);
    std::cout << "Absolute value of num1: " << absValue << std::endl;

    // 获取复数的相位(角度)
    double phase = std::arg(num1);
    std::cout << "Phase of num1: " << phase << std::endl;

    // 获取复数的实部和虚部
    double realPart = num1.real();
    double imagPart = num1.imag();
    std::cout << "Real part: " << realPart << ", Imaginary part: " << imagPart << std::endl;

    return 0;
}

主要函数和操作

  • 构造函数:std::complex z(a, b); 其中 a 是实部,b 是虚部,T 可以是 float、double 或 long double。
  • 算术运算符:支持 +, -, *, / 以及与实数的组合运算。
  • 共轭:std::conj(z) 返回复数 z 的共轭。
  • 绝对值/模:std::abs(z) 返回复数 z 的模。
  • 相位/角度:std::arg(z) 返回复数 z 的相位(角度)。
  • 实部和虚部:z.real() 和 z.imag() 分别获取复数的实部和虚部。
  • 指数、对数、幂和平方根:函数如 std::exp,std::log, std::pow 和 std::sqrt 也可以用于复数。

std::complex求逆

在 C++ 中,使用 std::complex 类型时,求一个复数的逆(或倒数)并不直接提供为一个单独的函数。然而,可以通过使用已有的运算符和函数来计算一个复数的逆。
求复数逆的公式

复数 z=a+bi 的逆可以通过以下公式计算:
在这里插入图片描述

#include <iostream>
#include <complex>

int main() {
    std::complex<double> z(2, 3); // 定义一个复数 2+3i

    // 计算逆
    std::complex<double> inverse_z = std::conj(z) / std::norm(z);

    std::cout << "Complex number: " << z << std::endl;
    std::cout << "Inverse of the complex number: " << inverse_z << std::endl;

    return 0;
}

关键函数

std::conj(z):计算复数 z 的共轭。
std::norm(z):计算复数 z 的模的平方,等同于 ∣z∣2
使用除法 / 运算符来除以模的平方,得到逆。

注意

上面的代码计算了复数的逆,这适用于非零复数。
如果尝试求零复数的逆,将会遇到除以零的错误。
在实际应用中,应当检查复数是否为零,避免运行时错误。

std::norm(z) 返回的是模的平方,而不是模本身。如果需要模本身,则可以使用 std::abs(z),但在这里直接使用模的平方是计算逆的一个更高效的方法,因为它避免了求平方根的开销。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【微信小程序开发】flex布局在小程序开发项目中的应用详解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Hive JSON数据处理

Hive JSON数据处理 JSON&#xff08;JavaScript Object Notation&#xff09;文件格式是一种轻量级的数据交换格式&#xff0c;用于存储和传输结构化的数据。它基于JavaScript的语法&#xff0c;但是可以被多种编程语言所支持和解析&#xff0c;因此被广泛应用于各种场景。 J…

Spring Security 复盘

1、什么Spring Security&#xff1f; Spring Security 是一种强大的框架&#xff0c;它在 Spring 生态系统中扮演着保护应用安全的关键角色。Spring Security 基于 Spring 框架&#xff0c;提供了一套 Web 应用安全性的完整解决方案。 2、认证 和 授权 1.什么是认证&#xff1…

Python 全栈系列244 nginx upstream 负载均衡 踩坑日记

说明 最初是因为租用算力机(Python 全栈系列242 踩坑记录:租用算力机完成任务)&#xff0c;所以想着做一个负载均衡&#xff0c;然后多开一些服务&#xff0c;把配置写在nginx里面就好了。 一开始租用了一个3080起了一个服务&#xff0c;后来觉得速度不够快&#xff0c;再起了…

如何解决IntelliJ IDEA中pom.xml依赖项引发的安全漏洞黄线警告问题

背景 在开发过程中&#xff0c;当我们在pom.xml文件中添加依赖项时&#xff0c;经常会发现IntelliJ IDEA报出黄色警告线条&#xff0c;提示存在潜在的安全漏洞。警告的具体展现形式如下&#xff1a; 解决方案 首先&#xff0c;打开设置菜单界面&#xff0c;接着选择编辑器选…

【图解计算机网络】http1.1,http2.0,http3.0

http1.1&#xff0c;http2.0&#xff0c;http3.0 http1.1长连接管道传输缺点 http2.0头部压缩二进制格式并发传输服务端推送缺点 http3.0无队头阻塞快速建立连接连接迁移 http1.1 长连接 在http1.0的时候&#xff0c;一次http请求就要建立一次TCP连接&#xff0c;这一次的htt…

Vue3项目Easy云盘(二):文件列表+新建目录+文件重命名+文件上传

一、文件列表 1.封装全局组件Table.vue 因为Main.vue等都会用到文件列表table&#xff0c;所以直接封装成组件。 src/components/Table.vue <template><!-- 表格 --><div><el-tableref"dataTable":data"dataSource.list || []":h…

基于AIoTedge+ThingsKit物联网平台,实现办公室人员进出AI统计

在AIoT时代&#xff0c;智能办公已成为提升企业效率的关键。本期文章将带你了解如何利用AIoTedge结合ThingsKit物联网平台&#xff0c;实现办公室人员进出的智能统计。这不是简单的技术堆砌&#xff0c;而是一场关于AI与IoT融合的实战演示。&#x1f31f; 提示&#xff1a;AIoT…

【Linux】Centos7安装部署unimrcp,搭建MRCP服务器

yum install libtool yum install libtool-ltdl-devel yum install libsofia-sip-ua find / -name libsofia-sip-ua.so.0 2>/dev/null # 设置环境变量&#xff1a;如果库文件存在但不在默认搜索路径中&#xff0c;你可以通过设置 LD_LIBRARY_PATH 环境变量来告诉系统在哪…

Github学习

1.Git与Github 区别: Git是一个分布式版本控制系统&#xff0c;简单的说就是一个软件&#xff0c;用于记录一个或若干个文件内容变化&#xff0c;以便将来查阅特点版本修订情况的软件。 Github是一个为用户提高Git服务的网站&#xff0c;简单说就是一个可以放代码的地方。Gi…

数字化社会的引擎:揭示Facebook的影响力

在当今数字化社会中&#xff0c;社交媒体平台扮演着至关重要的角色&#xff0c;而Facebook作为其中的巨头之一&#xff0c;其影响力不可忽视。本文将深入探讨Facebook的影响力&#xff0c;从多个角度揭示其在数字化社会中的引擎作用。 1. 社交互动的核心平台 Facebook作为社交…

使用Python递归重命名文件和文件夹

使用 Python 递归重命名文件和文件夹可以通过 os 模块和 os.path 模块来完成。下面是一个示例代码&#xff0c;演示如何递归地重命名文件和文件夹&#xff1a; 1、问题背景 在研究大型数字档案时&#xff0c;需要将这些档案复制到本地存储进行保存。这些档案通常存储在 USB 驱…

【机器学习】LoFTR:革命性图像特征批评技术等领跑者

LoFTR&#xff1a;革命性图像特征匹配技术的领跑者 一、引言二、LoFTR技术的创新之处三、LoFTR技术的实现原理四、LoFTR技术的代码实例五、结语 一、引言 在3D计算机视觉领域&#xff0c;图像特征匹配技术一直是研究的热点和难点。随着技术的不断发展&#xff0c;传统的特征检…

力扣:48. 旋转图像(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使…

图神经网络实战(10)——归纳学习

图神经网络实战&#xff08;10&#xff09;——归纳学习 0. 前言1. 转导学习与归纳学习2. 蛋白质相互作用数据集3. 构建 GraphSAGE 模型实现归纳学习小结系列链接 0. 前言 归纳学习 (Inductive learning) 通过基于已观测训练数据&#xff0c;建立一个通用模型&#xff0c;使模…

Maven:Maven基础

Maven apache旗下的一个开源项目,一款用于管理和构建java项目的工具 什么是Maven 一个项目管理和构建工具,基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建,报告和文档. Maven的作用 依赖管理 方便快捷的管理项目依赖的资源jar包,避免版本冲突问题 统一…

C++的数据结构(四):队列

在数据结构中&#xff0c;队列&#xff08;Queue&#xff09;是一种特殊的线性表&#xff0c;只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作。队列中没有元素时&#xff0c;称为空队列。队列的…

小程序的小组件

进度的组件 文字换行过滤 以及 排序 简单易懂 只为了记录工作 <template><div><ProgressBar :progress"progress" /><button click"increaseProgress">增加进度</button><view class"goods-name">12…

电脑锁屏快捷键是哪个?1分钟弄懂锁屏设置!

“当我暂时不需要使用电脑时&#xff0c;想给电脑设置锁屏&#xff0c;有朋友知道电脑锁屏快捷键是哪个吗&#xff1f;” 随着信息技术的飞速发展&#xff0c;我们在日常生活中经常需要使用电脑。然而&#xff0c;当我们暂时离开电脑时&#xff0c;如何确保电脑信息安全&#x…

【解决】Android APK文件安装时 已包含数字签名相同APP问题

引言 在开发Android程序过程中&#xff0c;编译好的APK文件&#xff0c;安装至Android手机时&#xff0c;有时会报 包含数字签名相同的APP 然后无法安装的问题&#xff0c;这可能是之前安装过同签名的APP&#xff0c;但是如果不知道哪个是&#xff0c;无法有效卸载&#xff0c;…