C++精解【8】

news2024/11/26 9:32:39

文章目录

    • 运算
      • +,- 加减法
      • * / 乘除法
        • 逐元 乘法
        • 逐元 除法
        • 逐元综合运算
        • 矩阵乘法与加减法
    • 转置、共轭、伴随矩阵
    • 点乘法,叉积

运算

+,- 加减法

  • 逐元加减法
#include <iostream>
#include "e:/eigen/Eigen/Dense"
using namespace std;

int main()
{
  Eigen::Matrix2d a;
  a << 1, 2,
       3, 4;
  Eigen::MatrixXd b(2,2);
  b << 10, 20,
       30, 40;
  cout << "a + b =\n" << a + b << endl;
  cout << "a - b =\n" << a - b << endl;
  cout << "Doing a += b;" << endl;
  a += b;
  cout << "Now a =\n" << a << endl;
  Eigen::Vector3d v(1,2,3);
  Eigen::Vector3d w(1,0,0);
  cout << "-v + w - v =\n" << -v + w - v << endl;
}

a + b =
11 22
33 44
a - b =
 -9 -18
-27 -36
Doing a += b;
Now a =
11 22
33 44
-v + w - v =
-1
-4
-6

Process returned 0 (0x0)   execution time : 0.573 s
Press any key to continue.

* / 乘除法

逐元 乘法
1、matrix*scalar
2、scalar*matrix
3、matrix*=scalar
#include <iostream>
#include <Eigen/Dense>

int main()
{
  Eigen::Matrix2d a;
  a << 10, 20,
       30, 40;
  Eigen::Vector3d v(1,2,3);
  std::cout << "a * 0.1 =\n" << a * 0.1 << std::endl;
  std::cout << "0.1 * v =\n" << 10 * v << std::endl;
  std::cout << "Doing v *= 2;" << std::endl;
  v *= 2;
  std::cout << "Now v =\n" << v << std::endl;
}

a * 2.5 =
1 2
3 4
0.1 * v =
10
20
30
Doing v *= 2;
Now v =
2
4
6

Process returned 0 (0x0)   execution time : 0.534 s
Press any key to continue.
逐元 除法
    1、matrix/scalar
   2、matrix/=scalar
#include <iostream>
#include "e:/eigen/Eigen/Dense"
using namespace std;
int main()
{
  Eigen::Matrix2d a;
  a << 10, 20,
       30, 40;
  Eigen::Vector3f v(1,2,3);
  cout << "a / 5 =\n" << a / 5 << endl;
  cout << "v / 5 =\n" << v /5 << endl;
  cout << "Doing a /= 10;" << endl;
  a /= 10;
  cout << "Now a =\n" << a << endl;
}

a / 5 =
2 4
6 8
v / 5 =
0.2
0.4
0.6
Doing a /= 10;
Now a =
1 2
3 4

Process returned 0 (0x0)   execution time : 0.477 s
Press any key to continue.

逐元综合运算
#include <iostream>
#include "e:/eigen/Eigen/Dense"
using namespace std;
int main()
{
  Eigen::Matrix2d a;
  a << 10, 20,
       30, 40;
  Eigen::Matrix2d b;
  b << 1, 2,
       3, 4;
  cout << "a *10+ b =\n" << a*10+b << endl;
}

a *10+ b =
101 202
303 404

Process returned 0 (0x0)   execution time : 0.394 s
Press any key to continue.


矩阵乘法与加减法
#include <iostream>
#include "e:/eigen/Eigen/Dense"
using namespace std;
int main()
{
  Eigen::Matrix2d a;
  a << 10, 20,
       30, 40;
  Eigen::Matrix2d b;
  b << 2, 4,
       8, 16;
  Eigen::Vector2d v(1,2);
  cout << "a * b =\n" << a *b << endl;
  cout << "a * v =\n" << a *v << endl;
  cout << "a + b =\n" << a +b << endl;
  cout << "a - b =\n" << a -b << endl;
}

a * b =
180 360
380 760
a * v =
 50
110
a + b =
12 24
38 56
a - b =
 8 16
22 24

Process returned 0 (0x0)   execution time : 0.429 s
Press any key to continue.

转置、共轭、伴随矩阵

  • 共轭矩阵相关知识

  • 转置矩阵
    将矩阵的行列互换得到的新矩阵称为转置矩阵,转置矩阵的行列式不变。
    在这里插入图片描述

  • 复数:

template <class Type>
class complex

引用自https://learn.microsoft.com/zh-cn/cpp/standard-library/complex-class?view=msvc-170
复数 a + bi
名称 描述
imag 提取复数的虚分量。
real 提取复数的实分量。

#include <complex>
#include <iostream>

int main( ) {
    using namespace std;

    complex<double> c1( 4.0 , 3.0 );
    cout << "The complex number c1 = " << c1 << endl;

    double dr1 = c1.real();
    cout << "The real part of c1 is c1.real() = "
        << dr1 << "." << endl;

    double di1 = c1.imag();
    cout << "The imaginary part of c1 is c1.imag() = "
        << di1 << "." << endl; } 
 The complex number c1 = (4,3)
The real part of c1 is c1.real() = 4.
The imaginary part of c1 is c1.imag() = 3.
  • 复数矩阵
    typedef Matrix< std::complex< float >, Dynamic, Dynamic > Eigen::MatrixXcf
  • example
#include <iostream>
#include "e:/eigen/Eigen/Dense"
using namespace std;
int main()
{
  Eigen::Matrix2d a;
  a << 10, 20,
       30, 40;
  Eigen::MatrixXcf b= Eigen::MatrixXcf::Random(2,2);
  cout << "转置:a^T =\n" << a.transpose() << endl;
  cout << "共轭:a conjugate() =\n" << b.conjugate() << endl;
  cout << "伴随矩阵:a adjoint() =\n"<< a.adjoint() << endl;
}

转置:a^T =
10 30
20 40
共轭:a conjugate() =
   (0.127171,0.997497) (-0.0402539,-0.170019)
   (0.617481,0.613392)    (0.791925,0.299417)
伴随矩阵:a adjoint() =
10 30
20 40

Process returned 0 (0x0)   execution time : 0.540 s
Press any key to continue.
  • a = a.transpose()转置并替换使用a.transposeInPlace()
  • a = a.adjoint() 共轭并替换a.adjointInPlace()

点乘法,叉积

  • dot product

引用自百度百科的解释
点积在数学中,又称数量积(dot product; scalar product),是指接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。
两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为:
a·b=a1b1+a2b2+……+anbn。
使用矩阵乘法并把(纵列)向量当作n×1 矩阵,点积还可以写为:
a ⋅ b = a T ∗ b ,这里的 a T 指示矩阵 a 的转置。 a·b=a^T*b,这里的a^T指示矩阵a的转置。 ab=aTb,这里的aT指示矩阵a的转置。

  • cross product

引用自百度百科知识
向量积,数学中又称外积、叉积,物理中称矢积、叉乘,是一种在向量空间中向量的二元运算。与点积不同,它的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量和垂直。其应用也十分广泛,通常应用于物理学光学和计算机图形学中。

  • example
#include <iostream>
#include "e:/eigen/Eigen/Dense"
using namespace std;
int main()
{
  Eigen::Vector3d v(1,2,3);
  Eigen::Vector3d w(0,1,2);
  cout << "v dot product w =\n" << v.dot(w) << endl;
  cout << "v cross product w =\n" << v.cross(w) << endl;
}

v dot product w =
8
v cross product w =
 1
-2
 1

Process returned 0 (0x0)   execution time : 0.327 s
Press any key to continue.

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

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

相关文章

并发编程工具集——Lock和Condition(上)(十二)

简述&#xff1a;Java SDK 并发包通过 Lock 和 Condition 两个接口来实现管程&#xff0c;其中 Lock 用于解决互斥问题&#xff0c;Condition 用于解决同步问题。 再造管程的理由和期望 理由&#xff1a;synchronized 没有办法解决“破坏不可抢占条件方案”。 原因是synchroniz…

可燃气体报警器计量校准:重要性与实践指南

在燃气机锅炉房、酒店厨房以及天然气管路等关键场所&#xff0c;可燃气体检测报警器的准确性和可靠性直接关系到人们的生命安全和财产安全。因此&#xff0c;对可燃气体报警器进行定期的计量校准至关重要。 在这篇文章中&#xff0c;佰德将从校准的必要性、方法与步骤、实际案…

【知识学习】阐述Unity3D中动画渲染的概念及使用方法示例

Unity3D中的卡通渲染&#xff08;Cartoon Rendering&#xff09;是一种渲染技术&#xff0c;它模仿传统手绘动画或漫画的视觉效果。这种渲染风格通常具有鲜明的颜色、清晰的轮廓线和简化的光影效果&#xff0c;常用于制作动画、游戏和其他视觉媒体。 卡通渲染的基本概念 轮廓…

Ansible-playbook的逻辑控制 ②

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 在《Ansible-playbook的逻辑控制 ①》中&#xff0c;梳理了逻辑控制when的使用场景&#xff0c;本文则继续梳理学习loop与block块…

python调用nodeJs执行js代码

文章目录 安装环境二、python程序调用js代码示例 安装环境 需要安装nodejs、python python库安装 pip install PyExecJS2 二、python程序调用js代码 示例 js代码&#xff1a; function sum(a,b){return ab; }python代码 import execjsjs_codeopen(dejmo.js).read() js_…

springcloud第4季 分布式事务seata作用服务搭建1

一 seata作用 1.1 seata简介 1.seata是一款解决分布式事务的解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 1.2 seata的术语 一个中心&#xff1a;全局事务id&#xff0c;xid&#xff0c;在调用服务链路的上下文中进行传播。TC(Transa…

风机过滤机组介绍

一、定义 FFU英文全称为&#xff08;Fan Filter Unit&#xff09;&#xff0c;中文专业用语为风机过滤机组。FFU广泛应用于洁净室、洁净工作台、洁净生产线、组装式洁净室和局部百级等应用场合。 二、FFU的组成 FFU主要由四部分组成&#xff1a; 1.箱体 其材质常用镀锌铝合…

SpringBoot脚手架MySpringBootAPI(PgSQL+Druid+MyBatisPlus+Lombok)

MySpringBootAPI SpringBoot脚手架&#xff0c;基于SpringBootDruidPgSQLMyBatisPlusFastJSONLombok&#xff0c;其他的请自行添加和配置。 Author powered by Moshow郑锴(大狼狗) , https://zhengkai.blog.csdn.net 如何运行 1.首先确保你是JDK17&#xff0c;推荐微软的MSJDK…

[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式8275张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8275 标注数量(xml文件个数)&#xff1a;8275 标注数量(txt文件个数)&#xff1a;8275 标注…

5分钟,从购买域名到HTTPS访问

5分钟&#xff0c;从购买域名到HTTPS访问 架构师手把手教技术 大家好&#xff0c;最近很多小伙伴咨询关于在 安装nginx 和 部署SSL证书 方面的技术&#xff0c;因此我录制了这个视频&#xff0c;希望可以帮助大家更快速地掌握这些关键技能。 首先&#xff0c;让我们从购买域名…

【离散数学·图论】(复习)

一、基本概念 1.一些基本术语&#xff1a; 2.点u&#xff0c;v邻接&#xff08;或相邻&#xff09;: 边e称为关联顶点u和v,or e连接u和v; 3.G(V,E)中&#xff0c;顶点v所有邻居的集合&#xff1a;N(v), 成为v的邻域。 4.度 &#xff1a; deg(v) 5.悬挂点&#xff1a;度为1的…

「C系列」C 经典练习实例

文章目录 1. 基本输入输出2. 字符串操作3. 数组与循环4. 函数与递归5. 逻辑与条件6. 数学问题7. 数字与数学8. 数组与字符串9. 逻辑与条件10. 结构体和联合体11. 指针12. 文件操作13. 动态内存分配相关链接 C语言经典练习实例及详细代码可以涵盖多个方面&#xff0c;从基础输入…

深度学习实验第T1周:实现mnist手写数字识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 目录 目录 一、前言 二、我的环境 三、…

《梦醒蝶飞:释放Excel函数与公式的力量》6.3NOW函数

6.3NOW函数 1&#xff09;NOW函数概述 NOW函数是Excel中一个非常实用的内置函数&#xff0c;它返回当前的日期和时间。这个函数可以自动更新&#xff0c;以反映打开工作簿时的确切日期和时间。 2&#xff09;函数语法 NOW函数的语法非常简单&#xff0c;因为它不需要任何参…

轻量级仿 SpringBoot 程序

但凡 Java 程序&#xff0c;想必就是 Spring 程序&#xff1b;但凡 Spring 程序&#xff0c;想必就是 SpringBoot 程序——且慢&#xff0c;当今尚有不是 SpringBoot 即 SpringMVC 的程序不&#xff1f;有——老旧的遗留系统不就是嘛~——不&#xff0c;其实只要稍加“调教”&a…

测评:【AI办公】版本更迭与AI加持下的最新ONLYOFFICE桌面编辑器8.1

你是否还在为没有一款合适的在线桌面编辑器而苦恼&#xff1f;你是否还在因为办公软件的选择过少而只能使用WPS或者office&#xff1f;随着办公需求的不断变化和发展&#xff0c;办公软件也在不断更新和改进。ONLYOFFICE 作为一款全功能办公软件&#xff0c;一直致力于为用户提…

Java使用poi生成word文档的简单实例

Java使用poi生成word文档的简单实例 生成的效果如下&#xff1a; 用到的poi的简单的知识 新建一个word对象 //新建文件 XWPFDocument document new XWPFDocument();新建段落以及文字样式 //创建段落 XWPFParagraph paragraph document.createParagraph(); paragraph.se…

华为OD机试 - 灰度图恢复(Java 2024 D卷 100分)

华为OD机试 2024D卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;D卷C卷A卷B卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测…

浅谈linux(1)

文章目录 一、linux1.1、使用终端xshell登陆到云服务器上1.2、linux一些常用命令1.2.1、一些快捷键1.2.2、关于目录的操作1.2.3、关于文件的命令1.2.4、关于目录的命令1.2.5、vim 针对文件进行编辑 一、linux linux 操作系统&#xff0c;我使用的是发行版&#xff0c;Centos7。…

【系统架构设计师】七、信息安全技术基础知识(访问控制技术|抗攻击技术|计算机系统安全保护能力等级)

目录 一、访问控制技术 二、信息安全的抗攻击技术 2.1 分布式拒绝服务DDoS与防御 2.3 ARP欺骗攻击与防御 2.4 DNS欺骗与防御 2.5 IP欺骗与防御 2.6 端口扫描&#xff08;Port Scanning&#xff09; 2.7 强化TCP/IP堆栈以抵御拒绝服务攻击 2.8 系统漏洞扫描 三、信息安…