【数学】矩阵、向量(内含矩阵乘法C++)

目录

  • 一、前置知识:向量(一列或一行的矩阵)、矩阵
    • 1. 行向量
    • 2. 列向量
    • 3. 向量其余基本概念
    • 4. 矩阵基本概念
    • 5. 关于它们的细节
  • 二、运算
    • 1. 转置
      • (1)定义
      • (2)性质
    • 2. 矩阵(向量)与矩阵(向量)的加减法
    • 3. 点乘与乘法
      • (1)定义:矩阵点乘
      • (2)定义:向量点乘
      • (3)定义:矩阵(向量)与标量的乘法
      • (4)定义:矩阵(向量)与矩阵(向量)的乘法
      • (5)性质:矩阵(向量)与矩阵(向量)的乘法
      • (6)应用:矩阵快速幂,进行加速
  • 三、拓展
    • 1. 向量表示里的几何意义
    • 2. 向量加法里的几何意义
    • 3. 向量求反里的几何意义
  • 四、结尾


一、前置知识:向量(一列或一行的矩阵)、矩阵

1. 行向量

例如 [ 1 1 4 ] \begin{bmatrix}1&1&4\end{bmatrix} [114],这就是一个行向量 [ 1 1 4 ] \begin{bmatrix}1&1&4\end{bmatrix} [114]可以理解为一个 1 1 1 3 3 3列矩阵。

行向量: [ a 1 … a n ] \begin{bmatrix}a_1&\dots&a_n\end{bmatrix} [a1an] n n n为任意取值。

2. 列向量

例如 [ 5 1 4 ] \begin{bmatrix}5\\1\\4\end{bmatrix} 514 ,这就是一个列向量 [ 5 1 4 ] \begin{bmatrix}5\\1\\4\end{bmatrix} 514 可以理解为一个 3 3 3 1 1 1列的矩阵。

列向量: [ a 1 ⋮ a n ] \begin{bmatrix}a_1\\\vdots\\a_n\end{bmatrix} a1an n n n为任意取值。

3. 向量其余基本概念

向量是一个有方向与大小的量,它的起点可以是任意位置

维度:
[ a 1 ] \begin{bmatrix}a_1\end{bmatrix} [a1],这是一个一维向量,它仅有一个数字。而 [ a 1 ⋮ a n ] \begin{bmatrix}a_1\\\vdots\\a_n\end{bmatrix} a1an [ a 1 … a n ] \begin{bmatrix}a_1&\dots&a_n\end{bmatrix} [a1an],它们都是 n n n维的。

长度:
向量的长度也就是它的大小,我们称它为。而模则为向量起点与终点之间的距离

4. 矩阵基本概念

[ 1 1 4 1 6 1 4 1 5 ] \begin{bmatrix}1&1&4\\1&6&1\\4&1&5\end{bmatrix} 114161415 注: 这是一个维度为 3 × 3 3\times3 3×3的矩阵。

一个矩阵的维度表示为 m × n m\times n m×n,即 m m m n n n列的矩阵。

5. 关于它们的细节

向量可以视为一种特殊的矩阵,我们通常用大写字母表示矩阵;小写字母表示向量,带一个小箭头,例如 v ⃗ \vec{v} v 。例如 v i v_i vi表示向量 v v v的第 i i i项(即第 i i i个元素,行向量从左往右数,列向量从上往下), a i , j a_{i,j} ai,j A i , j A_{i,j} Ai,j表示矩阵 A A A的第 i i i行第 j j j列的元素。

二、运算

下文由于向量可以视为一种特殊的矩阵,且为了方便所以均用大写字母表示向量或矩阵。

1. 转置

(1)定义

A T A^T AT表示对 A A A进行转置,即 A A A的第 i i i行将变成
A T A^T AT的第 i i i列。若 A = [ 1 1 4 5 1 4 ] A=\begin{bmatrix}1&1&4\\5&1&4\end{bmatrix} A=[151144],则 A T = [ 1 5 1 1 4 4 ] A^T=\begin{bmatrix}1&5\\1&1\\4&4\end{bmatrix} AT= 114514

(2)性质

  • ( A T ) T = A (A^T)^T=A (AT)T=A
  • ( A + B ) T = A T + B T (A+B)^T=A^T+B^T (A+B)T=AT+BT

2. 矩阵(向量)与矩阵(向量)的加减法

我们设 A ± B = C A\pm B=C A±B=C

A ± B A\pm B A±B不是随便的, A A A B B B要求维度相同。且 C C C维度仍与 A A A B B B相同。
运算方式, C i , j = A i , j ± B i , j C_{i,j}=A_{i,j}\pm B_{i,j} Ci,j=Ai,j±Bi,j

3. 点乘与乘法

(1)定义:矩阵点乘

我们设 A ∘ B = C A\circ B=C AB=C

矩阵点乘的符号为“ ∘ \circ ”,其中 A A A B B B C C C均为矩阵,且维度相同。运算方法也很简单, C i , j = A i , j × B i , j C_{i,j}=A_{i,j}\times B_{i,j} Ci,j=Ai,j×Bi,j

(2)定义:向量点乘

我们再设 A ⋅ B = n A\cdot B=n AB=n

显然 A A A B B B均为向量,且维度相同,而 n n n又是一个标量。那 n n n为多少? n = ∑ i = 1 m A i , j B i , j n=\sum_{i=1}^mA_{i,j}B_{i,j} n=i=1mAi,jBi,j m m m A A A B B B的维度)。

(3)定义:矩阵(向量)与标量的乘法

我们再设 n A = B nA=B nA=B

A A A B B B矩阵(向量) n n n标量,显而易见 B i , j = n A i , j B_{i,j}=nA_{i,j} Bi,j=nAi,j

(4)定义:矩阵(向量)与矩阵(向量)的乘法

我们再再设 A B = C AB=C AB=C,设 A A A维度为 m × n m\times n m×n,而 B B B维度为 n × p n\times p n×p,则 C C C维度为 m × p m\times p m×p

运算方式大概如此(复杂): C i , j = A i 行 ⋅ B j 列 C_{i,j}=A_{i行}\cdot B_{j列} Ci,j=AiBj,即 C i , j = ∑ i = 1 n A i , k B k , j C_{i,j}=\sum_{i=1}^nA_{i,k}B_{k,j} Ci,j=i=1nAi,kBk,j

(5)性质:矩阵(向量)与矩阵(向量)的乘法

  • 没有交换律。
  • 结合律和分配率。

(6)应用:矩阵快速幂,进行加速

现在目光转置P1962,要运用矩阵乘法来解决求斐波那契数列第 n n n项(对 1 0 9 + 7 10^9+7 109+7取模)。

我们构造一个矩阵 A A A与矩阵 B B B A = [ x y ] A=\begin{bmatrix}x&y\end{bmatrix} A=[xy] B = [ 1 1 1 0 ] B=\begin{bmatrix}1&1\\1&0\end{bmatrix} B=[1110],而 A B = [ x + y x ] AB=\begin{bmatrix}x+y&x\end{bmatrix} AB=[x+yx]。现在设 x x x是斐波那契数列的第 ( i + 1 ) (i+1) (i+1)项(简记 F i + 1 F_{i+1} Fi+1), y y y则为第 i i i项(简记 F i F_i Fi)。再把目光转回矩阵, A = [ F i + 1 F i ] A=\begin{bmatrix}F_{i+1}&F_i\end{bmatrix} A=[Fi+1Fi]
A B = [ F i + 1 + F n F i + 1 ] AB=\begin{bmatrix}F_{i+1}+F_n&F_{i+1}\end{bmatrix} AB=[Fi+1+FnFi+1],根据斐波那契数列的规律, F i + 1 + F i = F i + 2 F_{i+1}+F_i=F_{i+2} Fi+1+Fi=Fi+2,so A B = [ F i + 2 F i + 1 ] AB=\begin{bmatrix}F_{i+2}&F_{i+1}\end{bmatrix} AB=[Fi+2Fi+1],很容易发现 A B AB AB A A A中每项都进了一位,也就是说只要一直乘 B B B直至结果矩阵为 [ F n F n − 1 ] \begin{bmatrix}F_n&F_{n-1}\end{bmatrix} [FnFn1],第一项就是P1962的答案。

但是直接递推到 F n F_n Fn O ( n ) O(n) O(n)的,乘到 F n F_n Fn也是 O ( n ) O(n) O(n)的。但是多个相同数相乘是数的幂,多个相同矩阵相乘是矩阵的幂,同样也可以使用快速幂,现在复杂度大约为 O ( k l o g 2 n ) O(klog_2n) O(klog2n)(有些小细节没有提及), k k k为矩阵乘法运算时耗掉的。这时当 n n n的值到达一个程度,时间就会大幅减少。

代码如下。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll p=1e9+7;
struct mat{
	ll nr,nc;
	ll m[15][15];
	mat(ll NR=0,ll NC=0){
		nr=NR,nc=NC;
		memset(m,0,sizeof(m));
	}
	mat operator=(mat b){
		nr=b.nr;
		nc=b.nc;
		for(int i=1;i<=nr;i++)
			for(int j=1;j<=nc;j++)
				m[i][j]=b.m[i][j];
	}
};
mat operator*(mat a,mat b){
	mat c(a.nr,b.nc);
	for(int i=1;i<=a.nr;i++){
		for(int j=1;j<=b.nc;j++){
			for(int k=1;k<=a.nc;k++){
				c.m[i][j]=(a.m[i][k]*b.m[k][j]%p+c.m[i][j])%p;
			}
		}
	}
	return c;
}
mat fastpow(mat a,ll b){
	if(b==1)return a;
	if(b%2==0)return fastpow(a*a,b/2);
	else return fastpow(a*a,b/2)*a;
}
int main(){
	ll n;
	cin>>n;
	if(n<=2){
		cout<<1;
		return 0;
	}
	mat fib(1,2),tmp(2,2),tmp2;
	fib.m[1][1]=1,fib.m[1][2]=1;
	tmp.m[1][1]=1,tmp.m[1][2]=1;
	tmp.m[2][1]=1;
	tmp2=fib*fastpow(tmp,n-2);
	cout<<tmp2.m[1][1];
}

三、拓展

1. 向量表示里的几何意义

例如有一个二维向量, v ⃗ = [ x y ] \vec{v}=\begin{bmatrix}x\\y\end{bmatrix} v =[xy],它将原点 ( 0 , 0 ) (0,0) (0,0)作为起点时,它的终点就是 ( x , y ) (x,y) (x,y)

2. 向量加法里的几何意义

如图,向量 a a a与向量 b b b头尾相接最终与向量 c c c到达同一目的地,而恰好 a ⃗ + b ⃗ = c ⃗ \vec{a}+\vec{b}=\vec{c} a +b =c

3. 向量求反里的几何意义

a ⃗ \vec{a} a − a ⃗ -\vec{a} a 的区别在于将 a ⃗ \vec{a} a 旋转 180 ° 180\degree 180°就可以得 − a ⃗ -\vec{a} a ,即方向相反。

四、结尾

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

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

相关文章

算法与数据结构(合并K个升序链表)

思路 有了合并两个链表的基础后&#xff0c;这个的一种方法就是可以进行顺序合并&#xff0c;我们可以先写一个函数用来合并两个链表&#xff0c;再在合并K个链表的的函数中循环调用它。 解题过程 解析这个函数 首先&#xff0c;可以先判断&#xff0c;如果a为空&#xff0c…

Google C++ Style / 谷歌C++开源风格

文章目录 前言1. 头文件1.1 自给自足的头文件1.2 #define 防护符1.3 导入你的依赖1.4 前向声明1.5 内联函数1.6 #include 的路径及顺序 2. 作用域2.1 命名空间2.2 内部链接2.3 非成员函数、静态成员函数和全局函数2.4 局部变量2.5 静态和全局变量2.6 thread_local 变量 3. 类3.…

leetcode_双指针 160.相交链表

160.相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 思路: 本题中&#xff0c;交点不是数值相等&#xff0c;而是指针相等 双指针遍历两遍后必定相遇&#xff0c…

Oracle Primavera P6 最新版 v24.12 更新 2/2

目录 一. 引言 二. P6 EPPM 更新内容 1. 用户管理改进 2. 更轻松地标准化用户设置 3. 摘要栏标签汇总数据字段 4. 将里程碑和剩余最早开始日期拖到甘特图上 5. 轻松访问审计数据 6. 粘贴数据时排除安全代码 7. 改进了状态更新卡片视图中的筛选功能 8. 直接从活动电子…

2024年Web前端最新Java进阶(五十五)-Java Lambda表达式入门_eclipse lambda(1),面试必备

对象篇 模块化编程-自研模块加载器 开源分享&#xff1a;【大厂前端面试题解析核心总结学习笔记真实项目实战最新讲解视频】 Arrays.sort(players, sortByName); // 1.3 也可以采用如下形式: Arrays.sort(players, (String s1, String s2) -> (s1.compareTo(s2))); ??其…

网络原理(5)—— 数据链路层详解

目录 一. 以太网 1.1 认识以太网 1.2 网卡与以太网 1.3 以太网帧格式 二. 认识MAC地址 三. MAC地址 与 IP地址 的区别 4.1 定义 4.2 分配方式 4.3 工作层次 4.4 地址格式 4.5 寻址方式 四. ARP协议 4.1 引入 4.2 ARP的概念 4.3 ARP工作原理 五. MTU 与 MSS …

DeepSeek R1 模型解读与微调

DeepSeek R1 模型是 DeepSeek 团队推出的一款重要的大语言模型&#xff0c;旨在通过强化学习提升大型语言模型的推理能力。 模型架构 DeepSeek-R1-Zero DeepSeek-R1-Zero 是 DeepSeek 团队推出的第一代推理模型&#xff0c;完全依靠强化学习&#xff08;RL&#xff09;训练&…

proxmox通过更多的方式创建虚拟机

概述 作为一名资深运维工程师&#xff0c;我们经常需要在 Proxmox 虚拟化平台上创建和管理虚拟机。本文将介绍三种不同的方式在 Proxmox 上创建 Ubuntu 虚拟机&#xff1a; 通过 Proxmox 命令创建虚拟机通过 Shell 脚本自动化创建虚拟机使用 Proxmox API 创建虚拟机 每种方式…

Linux 压缩打包

Linux压缩打包 文章目录 Linux压缩打包压缩的意义和原理压缩的意义压缩的原理压缩与解压缩的好处压缩打包命令.zipzip 命令用法unzip 的用法.gzgzip 的用法gunzip 的用法.bz2bzip2 的用法bunzip2 的用法.xzxz 命令用法tar04-Linux压缩打包课后习题压缩的意义和原理 压缩的意义…

Apache HttpClient

HttpClient是apache组织下面的一个用于处理HTTP请求和响应的来源工具&#xff0c;是一个在JDK基础类库是做了更好的封装的类库。 HttpClient 使用了连接池技术来管理 TCP 连接&#xff0c;这有助于提高性能并减少资源消耗。连接池允许 HttpClient 复用已经建立的连接&#xff0…

【C++】STL——list底层实现

目录 &#x1f495;1.list的三个类介绍 &#x1f495;2.list——节点类 &#xff08;ListNode&#xff09; &#x1f495;3.list——链表类 &#xff08;List&#xff09; &#x1f495;4.list——迭代器类&#xff08;重点思考&#xff09;(ListIterator) &#x1f495;5…

SpringUI Web高端动态交互元件库

Axure Web高端动态交互元件库是一个专为Web设计与开发领域设计的高质量资源集合&#xff0c;旨在加速原型设计和开发流程。以下是关于这个元件库的详细介绍&#xff1a; 一、概述 Axure Web高端动态交互元件库是一个集成了多种预制、高质量交互组件的工具集合。这些组件经过精…

02、NodeJS学习笔记,第二节:express与中间件

express与中间件 中文官网&#xff1a;https://www.expressjs.com.cn/nodemon工具 nodemon这个工具&#xff0c;能够监听项目文件的变动。 当代码被修改后&#xff0c;nodemon会帮我们自动重启项目&#xff0c;极大的方便了开发和调试##安装 npm i -g nodemon##使用 之前启动…

通向AGI之路:人工通用智能的技术演进与人类未来

文章目录 引言:当机器开始思考一、AGI的本质定义与技术演进1.1 从专用到通用:智能形态的范式转移1.2 AGI发展路线图二、突破AGI的五大技术路径2.1 神经符号整合(Neuro-Symbolic AI)2.2 世界模型架构(World Models)2.3 具身认知理论(Embodied Cognition)三、AGI安全:价…

结合深度学习、自然语言处理(NLP)与多准则决策的三阶段技术框架,旨在实现从消费者情感分析到个性化决策

针对电商个性化推荐场景的集成机器学习和稳健优化三阶段方案。 第一阶段:在线评论数据处理&#xff0c;利用深度学习和自然语言处理技术进行特征挖掘&#xff0c;进而进行消费者情感分析&#xff0c;得到消费者偏好 在第一阶段&#xff0c;我们主要关注如何通过深度学习和自然语…

哪些专业跟FPGA有关?

FPGA产业作为近几年新兴的技术领域&#xff0c;薪资高、待遇好&#xff0c;吸引了大量的求职者。特别是对于毕业生&#xff0c;FPGA领域的岗位需求供不应求。那么&#xff0c;哪些专业和FPGA相关呢&#xff1f; 哪些专业跟FPGA有关&#xff1f; 微电子学与固体电子学、微电子科…

STM32 LED呼吸灯

接线图&#xff1a; 这里将正极接到PA0引脚上&#xff0c;负极接到GND&#xff0c;这样就高电平点亮LED&#xff0c;低电平熄灭。 占空比越大&#xff0c;LED越亮&#xff0c;占空比越小&#xff0c;LED越暗 PWM初始化配置 输出比较函数介绍&#xff1a; 用这四个函数配置输…

记录一次-Rancher通过UI-Create Custom- RKE2的BUG

一、下游集群 当你的下游集群使用Mysql外部数据库时&#xff0c;会报错&#xff1a; **他会检查ETCD。 但因为用的是Mysql外部数据库&#xff0c;这个就太奇怪了&#xff0c;而且这个检测不过&#xff0c;集群是咩办法被管理的。 二、如果不选择etcd,就选择控制面。 在rke2-…

数据库物理备份:保障数据完整性和业务连续性的关键策略

title: 数据库物理备份:保障数据完整性和业务连续性的关键策略 date: 2025/1/29 updated: 2025/1/29 author: cmdragon excerpt: 在现代企业中,数据被视为最重要的资产之一。因此,确保数据的安全性、完整性和可用性是每个数据库管理员(DBA)的首要任务。在数据管理的过程…

【3分钟极速部署】在本地快速部署deepseek

第一步&#xff0c;找到网站&#xff0c;下载&#xff1a; 首先找到Ollama &#xff0c; 根据自己的电脑下载对应的版本 。 我个人用的是Windows 我就先尝试用Windows版本了 &#xff0c;文件不是很大&#xff0c;下载也比较的快 第二部就是安装了 &#xff1a; 安装完成后提示…