C++精解【8】

文章目录

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

运算

+,- 加减法

  • 逐元加减法
#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
-6Process 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
6Process returned 0 (0x0)   execution time : 0.534 s
Press any key to continue.
逐元 除法
    1、matrix/scalar2、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 4Process 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 404Process 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 24Process 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 40Process 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
-21Process returned 0 (0x0)   execution time : 0.327 s
Press any key to continue.

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

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

相关文章

clip系列改进Lseg、 group ViT、ViLD、Glip

Lseg 在clip后面加一个分割head&#xff0c;然后用分割数据集有监督训练。textencoder使用clip&#xff0c;frozen住。 group ViT 与Lseg不同&#xff0c;借鉴了clip做了真正的无监督学习。 具体的通过group block来做的。使用学习的N个group token&#xff08;可以理解为聚类…

计算机毕业设计hadoop+spark+hive知识图谱医生推荐系统 医生数据分析可视化大屏 医生爬虫 医疗可视化 医生大数据 机器学习 大数据毕业设计

测试过程及结果 本次对于医生推荐系统测试通过手动测试的方式共进行了两轮测试。 &#xff08;1&#xff09;第一轮测试中执行了个20个测试用例&#xff0c;通过16个&#xff0c;失败4个&#xff0c;其中属于严重缺陷的1个&#xff0c;属于一般缺陷的3个。 &#xff08;2&am…

Ueditor中集成135编辑器

一、背景 在资讯项目平台运营过程中&#xff0c;资讯需要排版&#xff0c;一般都是在135编辑器排好以后&#xff0c;复制到平台中UEditor编辑器中&#xff0c;所以&#xff0c;他们建议集成一下135哈 二、了解135编辑器 开始调研了解135编辑器&#xff0c;发现人家就支持集成…

Golang | Leetcode Golang题解之第202题快乐数

题目&#xff1a; 题解&#xff1a; func isHappy(n int) bool {cycle : map[int]bool{4: true, 6: true, 37: true, 58: true, 89: true, 145: true, 42: true, 20: true}for n ! 1 && !cycle[n] {n step(n)}return n 1 }func step(n int) int {sum : 0for n > …

AI数据分析007:根据Excel表格数据绘制柱形图

文章目录 一、介绍二、输入内容三、输出内容一、介绍 将Excel文件中2013年至2019年间线上图书的销售额,以条形图的形式呈现,每个条形的高度代表相应年份的销售额,同时在每个条形上方标注具体的销售额数值 二、输入内容 在deepseek中输入提示词: 你是一个Python编程专家,…

SMTP 转发器/中继

设置中继邮件服务器 我将设置一个邮件服务器&#xff0c;该服务器稍后将用作 SMTP 中继服务器。首先&#xff0c;在 Digital Ocean 中创建了一个新的 Ubuntu Droplet&#xff1a; Postfix MTA 安装在droplet上&#xff0c;并带有&#xff1a; apt-get install postfix 在pos…

【Python实战因果推断】4_因果效应异质性4

目录 Cumulative Gain Target Transformation Cumulative Gain 如果采用与累积效应曲线完全相同的逻辑&#xff0c;但将每个点乘以累积样本 Ncum/N&#xff0c;就会得到累积增益曲线。现在&#xff0c;即使曲线的起点具有最高的效果&#xff08;对于一个好的模型来说&#x…

Web渗透:文件包含漏洞(part.1)

"文件包含漏洞"&#xff08;File Inclusion Vulnerability&#xff09;是一种常见的Web应用程序漏洞&#xff0c;攻击者可以通过这个漏洞在目标系统上包含或执行任意文件。主要有两种类型的文件包含漏洞&#xff1a; 本地文件包含&#xff08;Local File Inclusion, …

C++ | Leetcode C++题解之第201题数字范围按位与

题目&#xff1a; 题解&#xff1a; class Solution { public:int rangeBitwiseAnd(int m, int n) {while (m < n) {// 抹去最右边的 1n n & (n - 1);}return n;} };

Linux CentOS 宝塔中禁用php8.2的eval函数详细图文教程

PHP_diseval_extension 这个方法是支持PHP8的, Suhosin禁用eval函数&#xff0c;不支持PHP8 一、安装 cd / git clone https://github.com/mk-j/PHP_diseval_extension.gitcd /PHP_diseval_extension/source/www/server/php/82/bin/phpize ./configure --with-php-config/ww…

Go语言学习:每日一练2

Go语言学习&#xff1a;每日一练2 目录 Go语言学习&#xff1a;每日一练2结构体零值数组切片映射指针 各个类型的零值一览 结构体 //定义 type Vertex struct {X, Y int } //使用 func main() { v1 : Vertex{1, 2} fmt.Println(v.X) //别的实例化方式 var v2 Vertex v2 : *new…

Node版本管理工具 fnm 安装使用

fnm 是一个基于 Rust 开发的 Node 版本管理工具&#xff0c;它的目标是提供一个快速、简单且可靠的方式来管理 Node.js 的不同版本。同时&#xff0c;它是跨平台的&#xff0c;支持 macOS、Linux、Windows。&#x1f680; Fast and simple Node.js version manager, built in R…

头歌资源库(18)接龙序列

一、 问题描述 二、算法思想 首先&#xff0c;我们需要判断一个数列是否是接龙数列。可以通过遍历数列的每一个元素&#xff0c;判断该元素的首位数字是否等于前一个元素的末位数字。如果所有元素都满足条件&#xff0c;则该数列是接龙数列。 接下来&#xff0c;我们需要计算…

行人检测技术:思通数科大模型在自动驾驶安全中的应用

在自动驾驶技术飞速发展的今天&#xff0c;行人检测已成为确保道路交通安全的关键技术之一。本文将探讨如何结合思通数科大模型和计算机视觉技术&#xff0c;实现在城市交通环境中对行人的高效检测&#xff0c;为自动驾驶车辆提供必要的行人安全保障。 引言 行人检测技术是利…

vue3用自定义指令实现按钮权限

1&#xff0c;编写permission.ts文件 在src/utils/permission.ts import type { Directive } from "vue"; export const permission:Directive{// 在绑定元素的父组件被挂载后调用mounted(el,binding){// el&#xff1a;指令所绑定的元素&#xff0c;可以用来直接操…

大模型推理知识总结

一、大模型推理概念 大多数流行的only-decode LLM&#xff08;例如 GPT-3&#xff09;都是针对因果建模目标进行预训练的&#xff0c;本质上是作为下一个词预测器。这些 LLM 将一系列tokens作为输入&#xff0c;并自回归生成后续tokens&#xff0c;直到满足停止条件&#xff0…

【PL理论深化】(8) Ocaml 语言:元组和列表 | 访问元组中的元素 | 列表中的 head 和 tail | 基本列表操作符

&#x1f4ac; 写在前面&#xff1a;本章我们将探讨 OCaml 中的元组&#xff08;tuple&#xff09;和列表&#xff08;list&#xff09;&#xff0c;它们是函数式编程语言中最常用的数据结构。 目录 0x00 元组&#xff08;Tuple&#xff09; 0x01 访问元组中的元素 0x02 列表&…

沉淀强化镍基合金660大螺丝的物理性能

沉淀强化镍基合金660大螺丝&#xff0c;是一种高性能的工程材料&#xff0c;其在极端环境中展现了优异的稳定性和耐用性。以下&#xff0c;我们将深入解析其主要的物理性能。 首先&#xff0c;该合金螺丝的密度为7.99g/cm&#xff0c;这意味着它具有较高的质量密度&#xff0c;…

APM Profile 在系统可观测体系中的应用

引言 应用程序性能分析&#xff08;Application Performance Management&#xff0c;APM&#xff09;是一个广泛的概念&#xff0c;涉及应用程序运行时各种性能指标的监测、诊断和优化。在可观测体系建设中&#xff0c;APM 是保障系统业务运行性能的关键技术&#xff0c;确保用…

Tomcat WEB站点部署

目录 1、使用war包部署web站点 2、自定义默认网站目录 3、部署开源站点&#xff08;jspgou商城&#xff09; 对主机192.168.226.22操作 对主机192.168.226.20操作 上线的代码有两种方式&#xff1a; 第一种方式是直接将程序目录放在webapps目录下面&#xff0c;这种方式…