(四)悟说几个特殊矩阵及矩阵函数

  上一期介绍了矩阵的出现源于解线性方程组。但是,矩阵出现之后,就犹如打开了潘多拉的盒子,会产生许多魔法。

1 旋转矩阵

我们知道用矩阵左乘某个向量,相当于对该向量做线性变换。那么是否有一种矩阵,能让向量旋转?例如,让二维平面上的向量 a ⃗ = [ 1 1 ] \vec{a}= \begin{bmatrix} 1 \\ 1 \end{bmatrix} a =[11]逆时针旋转 3 0 ∘ 30^ \circ 30
我们从基的角度来思考这个问题,如果我们能找到一个基,这个基与自然基相比,逆时针旋转了 3 0 ∘ 30^\circ 30,那么用这个基去左乘向量 a ⃗ \vec{a} a ,是不是就把 a ⃗ \vec{a} a 逆时针旋转了 3 0 ∘ 30^\circ 30,得到向量 b ⃗ \vec{b} b ,如下图所示。

在这里插入图片描述

图-1

图-1中,向量 c 1 ⃗ \vec{c_1} c1 c 2 ⃗ \vec{c_2} c2 是自然基 e 1 ⃗ \vec{e_1} e1 e 2 ⃗ \vec{e_2} e2 逆时针旋转 3 0 ∘ 30^\circ 30后得到的新基。那么,现在有个问题,怎么求使自然基旋转 θ \theta θ度后的新基 c 1 ⃗ \vec{c_1} c1 c 2 ⃗ \vec{c_2} c2
自然基 e 1 ⃗ \vec{e_1} e1 e 2 ⃗ \vec{e_2} e2 旋转 θ \theta θ度得到新基 c 1 ⃗ \vec{c_1} c1 c 2 ⃗ \vec{c_2} c2 ,也就是 e 1 ⃗ \vec{e_1} e1 c 1 ⃗ \vec{c_1} c1 夹角为 θ \theta θ e 2 ⃗ \vec{e_2} e2 c 2 ⃗ \vec{c_2} c2 夹角为 θ \theta θ。所以,我们可以用向量余弦相似度来求。
先假设 c 1 ⃗ = ( x 1 , x 2 ) T \vec{c_1}= (x_1, x_2)^T c1 =(x1,x2)T c 2 ⃗ = ( y 1 , y 2 ) T \vec{c_2} =(y_1, y_2)^T c2 =(y1,y2)T,由余弦相似度公式可得
{ e 1 ⃗ ⋅ c 1 ⃗ ∥ e 1 ⃗ ∥ ∥ c 1 ⃗ ∥ = x 1 x 1 2 + x 2 2 = c o s θ e 2 ⃗ ⋅ c 2 ⃗ ∥ e 2 ⃗ ∥ ∥ c 2 ⃗ ∥ = y 2 y 1 2 + y 2 2 = c o s θ (1) \begin{cases} \frac{\vec{e_1} \cdot \vec{c_1} }{\parallel \vec{e_1} \parallel \parallel \vec{c_1} \parallel} = \frac{x_1} {\sqrt{x_1^2 + x_2^2} }=cos\theta \\ \\ \frac{\vec{e_2} \cdot \vec{c_2} }{\parallel \vec{e_2} \parallel \parallel \vec{c_2} \parallel} = \frac{y_2} {\sqrt{y_1^2+y_2^2}} = cos\theta \end{cases} \tag{1} e1 ∥∥c1 e1 c1 =x12+x22 x1=cosθe2 ∥∥c2 e2 c2 =y12+y22 y2=cosθ(1)

观察式(1),要使等式成立,是不是只要令 x 1 2 + x 2 2 = 1 , x 1 = cos ⁡ θ , x 2 = sin ⁡ θ \sqrt{x_1^2+x_2^2}=1, x_1=\cos \theta, x_2=\sin \theta x12+x22 =1,x1=cosθ,x2=sinθ,就可以满足第一个等式;再令 y 1 2 + y 2 2 = 1 , 则 y 2 = cos ⁡ θ , y 1 = − sin ⁡ θ \sqrt{y_1^2+y_2^2}=1, 则y_2=\cos \theta, y_1=-\sin \theta y12+y22 =1,y2=cosθ,y1=sinθ,就可以满足第二个等式。此时 c 1 ⃗ = [ x 1 x 2 ] \vec{c_1}=\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} c1 =[x1x2] c 2 ⃗ = [ y 1 y 2 ] \vec{c_2}=\begin{bmatrix} y_1 \\ y_2 \end{bmatrix} c2 =[y1y2]正好正交(两向量垂直)。

于是,我们得到
( c 1 ⃗ c 2 ⃗ ) = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] (2) \begin{pmatrix} \vec{c_1} & \vec{c_2} \end{pmatrix}=\begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \tag{2} (c1 c2 )=[cosθsinθsinθcosθ](2)

除了零向量,其它向量只要用式(2)这个矩阵左乘,就可以将向量逆时针旋转 θ \theta θ度,是不是很神奇。所以,我们把式(2)这个神奇的矩阵叫作旋转矩阵。
如果是按顺时针旋转,则应左乘下面这个矩阵
( c 1 ⃗ c 2 ⃗ ) = [ cos ⁡ θ sin ⁡ θ − sin ⁡ θ cos ⁡ θ ] (3) \begin{pmatrix} \vec{c_1} & \vec{c_2} \end{pmatrix}=\begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \end{bmatrix} \tag{3} (c1 c2 )=[cosθsinθsinθcosθ](3)

不知道你们有没用过矢量作图软件,软件有个功能是绕着线段某个端点旋转,这条线段的两个端点都不在原点。这种情况要怎么计算旋转后的坐标。如下图所示

在这里插入图片描述

图-2

即,令线段AB绕着A点逆时针旋转 θ \theta θ度至C点,求C点的坐标。
我没有开发过这类软件,如果说的不对或者还有更好的方法,欢迎朋友们在评论区留言。我是这样想的,首先,用终点坐标B减去起点坐标A,得到有向线段 A B ⃗ \vec{AB} AB 的向量表示 ( 1 , 1 ) T (1, 1)^T (1,1)T;然后,用式(2)中的旋转矩阵左乘向量,如式(4)所示

[ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] [ 1 1 ] = [ cos ⁡ θ − sin ⁡ θ cos ⁡ θ + sin ⁡ θ ] (4) \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} 1 \\ 1 \end{bmatrix}= \begin{bmatrix} \cos\theta - \sin\theta \\ \cos\theta + \sin\theta \end{bmatrix} \tag{4} [cosθsinθsinθcosθ][11]=[cosθsinθcosθ+sinθ](4)

最后,将式(4)右侧的向量加上A点坐标,即
[ cos ⁡ θ − sin ⁡ θ + 1 cos ⁡ θ + sin ⁡ θ + 1 ] (5) \begin{bmatrix} \cos\theta - \sin\theta + 1 \\ \cos\theta + \sin\theta + 1 \end{bmatrix} \tag{5} [cosθsinθ+1cosθ+sinθ+1](5)

式(5)中的向量就是C点坐标。

2 伸缩矩阵

假设有一条有向线段 A B ⃗ \vec{AB} AB 沿着B点方向延长了 A B ⃗ \vec{AB} AB 一倍的长度至点C,如下图所示,求C点坐标。
在这里插入图片描述

图-3

与上述方法一样,我们先将终点B的坐标减去起点A的坐标,得到有向线段 A B ⃗ \vec{AB} AB 的向量表示。然后,用这个矩阵 [ 2 0 0 1 ] \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} [2001]左乘向量,即
[ 2 0 0 1 ] [ 1 0 ] = [ 2 0 ] (5) \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 \\0 \end{bmatrix}= \begin{bmatrix} 2 \\ 0 \end{bmatrix} \tag{5} [2001][10]=[20](5)

最后,将式(5)右侧的向量加上A点坐标,得到C点坐标 ( 3 , 1 ) T (3, 1)^T (3,1)T。左乘的这个矩阵给它一个名称,叫作伸缩矩阵。
这里我们也可以不用伸缩矩阵。因为是改变向量的长度,方向不变,所以还有一种更简单的方法就是直接用2乘以向量 [ 1 , 0 ] T [1, 0]^T [1,0]T,即

2 ⋅ [ 1 0 ] = [ 2 0 ] 2 \cdot \begin{bmatrix} 1 \\ 0 \end{bmatrix}= \begin{bmatrix} 2 \\ 0 \end{bmatrix} 2[10]=[20]

3 镜像矩阵

假设,如下图所示,有一个平行四边形ABCD要沿着直线 y = x y=x y=x翻转,翻转后的平行四边形为$A^\prime D^\prime C^\prime B^\prime $。
在这里插入图片描述

图-4

假设上图中点A、B、C、D的坐标分别为 ( a 1 , a 2 ) , ( b 1 , b 2 ) , ( c 1 , c 2 ) , ( d 1 , d 2 ) (a_1, a_2), (b_1, b_2), (c_1, c_2), (d_1, d_2) (a1,a2),(b1,b2),(c1,c2),(d1,d2),现在要求点 A ′ A^\prime A B ′ B^\prime B C ′ C^\prime C D ′ D^\prime D的坐标。
因为两个平行四边形的四个点关于 y = x y=x y=x对称,所以,各点的 x , y x,y x,y坐标对调一下就是镜像点的坐标。因此,可用矩阵
[ 0 1 1 0 ] \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} [0110]左乘点A、B、C、D的坐标,得到点 A ′ A^\prime A B ′ B^\prime B C ′ C^\prime C D ′ D^\prime D坐标。

[ 0 1 1 0 ] [ a 1 b 1 c 1 d 1 a 2 b 2 c 2 d 2 ] = [ a 2 b 2 c 2 d 2 a 1 b 1 c 1 d 1 ] (6) \begin{bmatrix} 0 & 1 \\ 1 & 0 \\ \end{bmatrix} \begin{bmatrix} a_1 & b_1 & c_1 & d_1 \\ a_2 & b_2 & c_2 & d_2 \end{bmatrix}= \begin{bmatrix} a_2 & b_2 & c_2 & d_2 \\ a_1 & b_1 & c_1 & d_1 \end{bmatrix} \tag{6} [0110][a1a2b1b2c1c2d1d2]=[a2a1b2b1c2c1d2d1](6)

上式中,矩阵 [ 0 1 1 0 ] \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} [0110]能使点A、B、C、D做关于直线 y = x y=x y=x的镜像变换,所以可称它为镜像矩阵。

4 矩阵函数

最后说说关于矩阵函数这个概念。我们通常用 A x = b \bold{Ax}=\bold{b} Ax=b表示线性方程组,如果把等号右侧的 b \bold{b} b替换为 y \bold{y} y,即 y = A x \bold{y}=\bold{Ax} y=Ax,它就是矩阵函数。式中的 x \bold{x} x y \bold{y} y代表一组自变量和一组因变量,自变量与因变量之间的关系蕴含在 A \bold{A} A里边。下面,我们一起看看矩阵 A \bold{A} A、自变量 x \bold{x} x、因变量 y \bold{y} y之间具体是什么关系。

A = [ a 11 a 12 a 21 a 22 ] , x = [ x 1 x 2 ] , y = [ y 1 y 2 ] \bold{A}=\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix},\bold{x}=\begin{bmatrix} x_1 \\ x_2 \end{bmatrix}, \bold{y}=\begin{bmatrix} y_1 \\ y_2 \end{bmatrix} A=[a11a21a12a22],x=[x1x2],y=[y1y2]

[ y 1 y 2 ] = [ a 11 a 12 a 21 a 22 ] [ x 1 x 2 ] (7) \begin{bmatrix} y_1 \\ y_2 \end{bmatrix}= \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \tag{7} [y1y2]=[a11a21a12a22][x1x2](7)
即,
{ y 1 = a 11 x 1 + a 12 x 2 y 2 = a 21 x 1 + a 22 x 2 (8) \begin{equation} \left\{ \begin{array}{c} y_1=a_{11}x_1 + a_{12}x_2 \\ y_2=a_{21}x_1 + a_{22}x_2 \end{array} \right. \end{equation} \tag{8} {y1=a11x1+a12x2y2=a21x1+a22x2(8)

从式(8)可以看出,因变量 y 1 y_1 y1与自变量 x 1 , x 2 x_1, x_2 x1,x2都有关系,也就是 y 1 y_1 y1与所有的自变量都有关系。同样的, y 2 y_2 y2与所有的自变量都有关系。但是 y 1 y_1 y1只与矩阵 A \bold{A} A的第一行有关系, y 2 y_2 y2只与矩阵 A \bold{A} A的第二行有关系。

假设某椭圆 E \mathfrak{E} E的参数方程为 { x = 2 cos ⁡ α y = sin ⁡ α , 0 ⩽ α ⩽ 2 π \begin{cases} x=2\cos \alpha \\ y=\sin \alpha \end{cases}, \quad 0\leqslant \alpha \leqslant 2\pi {x=2cosαy=sinα,0α2π.
令式(7)中的 x 1 = 2 cos ⁡ α , x 2 = sin ⁡ α x_1=2\cos\alpha, \quad x_2=\sin \alpha x1=2cosα,x2=sinα,再令式(7)中的 [ a 11 a 12 a 21 a 22 ] \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} [a11a21a12a22]等于式(2)中的旋转矩阵,即

[ a 11 a 12 a 21 a 22 ] = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix}= \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} [a11a21a12a22]=[cosθsinθsinθcosθ]

则有
[ y 1 y 2 ] = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] [ 2 cos ⁡ α sin ⁡ α ] , 0 ⩽ α ⩽ 2 π (9) \begin{bmatrix} y_1 \\ y_2 \end{bmatrix}= \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} 2\cos \alpha \\ \sin \alpha \end{bmatrix}, \qquad 0 \leqslant \alpha \leqslant 2\pi \tag{9} [y1y2]=[cosθsinθsinθcosθ][2cosαsinα],0α2π(9)
那么,式(9)所示的矩阵函数表示的是椭圆 E \mathfrak{E} E逆时针旋转 θ \theta θ度后的椭圆。

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

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

相关文章

2D目标检测常用loss

在2D目标检测任务中,常用的损失函数(Loss)主要用于优化以下三个关键方面: 类别分类(Classification):用于区分检测到的对象属于哪一类。边界框回归(Bounding Box Regression&#x…

《代码整洁之道:程序员的职业素养》

作者:【美】Robert C. Martin 第1章 专业主义 专业主义就意味着担当责任,软件开发太复杂了,不可能没什么 bug。但很不幸,这并不能为你开脱。人体太复杂了,不可能尽知其全部,但医生仍要发誓不伤害病人。如…

基于单片机的智能温控风扇系统的设计

[摘 要] 设计一种基于单片机的智能温控风扇系统,系统由 STC 系列的 51 单片机 、 温度传感器 、 LED 数码管和风扇等模块组成。 本系统具有对外界温度感知以及对感知数据进行分析处理 、 智能调节等功能,避免因温度过高而产生…

6.定期自动执行脚本,让你的金融数据库及时更新!

上一节课我们配置好了我们的运行环境,今天我来教大家怎么在不同的环境下配置定时任务,从而自动执行脚本以更新数据库。 一、Windows下定时执行脚本 如果你的电脑是Windows,并且你没有一台支持Docker的NAS、也没有一台Linux服务器&#xff0…

text2sql方法:RESDSQL和DAIL-SQL

之前介绍了text2sql的综述,但是对一些方法的描述不够详细,所以将一些感兴趣的方法思路也整理一下。 RESDSQL RESDSQL出自2023年2月的论文《RESDSQL: Decoupling Schema Linking and Skeleton Parsing for Text-to-SQL》(github)。它使用seq2seq PLM(pr…

[笔记] 走行电机控制器 防摇摆功能的技术细节

防摇摆用于走行电机控制,一般用于小车。这里参考了数重的彩页: 1.原理 这个无效和有效的控制是靠启动时的幔起,和停车时的缓停实现的。他似乎对加速过程的力矩曲线做了某种控制,能够让启停时,必然的角度变化在运动中逐…

【时时三省】(C语言基础)指针笔试题3

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 笔试题3 首先创建了一个数组 数组里面放了1 2 3 4 &a取出的是数组的地址 数组地址加1 如下图 直接从1跳到了四后面 然后强制类型转换成了int* 转换成int*之…

ModbusTCP通讯错误的排查

Modbus是一种由MODICON公司开发的工业现场总线协议标准,是一项应用层报文传输协议。该协议用于传输数字和模拟变量[1]。有关该协议的报文具体格式,以及一些基本概念,见[1]。 本文以一个例子,阐述当ModbusTCP通讯出现错误的时候&a…

01_RabbitMQ安装及工作模式

一、消息队列MQ 中间件 1.1 什么是消息队列 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 消息队列(Message Queue)是一…

鸿蒙开发(NEXT/API 12)【跨设备互通开发】远场通信服务

跨设备互通提供跨设备的相机、扫描、图库访问能力,平板或2in1设备可以调用手机的相机、扫描、图库等功能。 场景介绍 您通过此能力实现跨设备交互,可以使用其他设备的相机、扫描和图库功能。 约束与限制 需同时满足以下条件,才能使用该功…

COLORmap

在这段MATLAB代码中,surf(peaks)、map的定义以及colormap(map)的调用共同完成了以下任务: 1. **绘制曲面图**: - surf(peaks):这个函数调用了MATLAB内置的peaks函数来生成数据,并使用surf函数将这些数据绘制成一个…

CSS 选择器的分类与使用要点二

目录 非 VIP 用户可前往公众号进行免费阅读 标签选择器 id 选择器 类选择器 介绍 公共类 CSS 中优先用 class 选择器,慎用 id 选择器 后代选择器 交集选择器 以标签名作为开头 以类名作为开头 连续交集 并集选择器(分组选择器) 通配符* 儿子选择器 >(IE7…

CSS 的继承性、层叠性与权重问题解析

目录 非 VIP 用户可前往公众号进行免费阅读 继承性 层叠性 CSS的权重问题 如果权重一样,以后出现的为准 以权重大的为准 没有选中,权重为0,就近原则 权重只和css顺序有关 非 VIP 用户可前往公众号进行免费阅读 CSS 的继承性、层叠性与权重问题解析本文主要介绍了 C…

AIGC8: 高通骁龙AIPC开发者大会记录B

图中是一个小男孩在市场卖他的作品。 AI应用开发出来之后,无论是个人开发者还是企业开发者。 如何推广分发是面临的大问题。 做出来的东西一定要符合商业规律。否则就是实验室里面的玩物,或者自嗨的东西。 背景 上次是回顾和思考前面两个硬件营销总的…

解决Python Debug没有反应的问题

应该有伙伴和我一样,用的2024版本的VS code,但是用到的python解释器是3.6.x,或者是更旧版本的Python. 想要进行Debug就会在扩展里面安装 一般安装就会安装最新版本,但是debug时又没有反应,其主要原因是Python的版本与…

Gin框架入门(2)--异常捕获与日志实现

异常捕获 Go语言的异常捕获采用的是延迟处理的方法实现的,实际上就是利用defer,panic和recover三个关键字和函数来实现的。 关键字 defer关键字(函数) 这个关键字在控制语句中就有所涉及,本质上是采用一个栈的存储结构,在整个…

时钟的配置

在使用51单片机时,系统使用的时钟源是一个外部晶体振荡器,频率为12M。由于51单片机每个指令周期都是12分频的,所以实际工作频率仅为1M。2440作为一种性能远高于51的Soc,主频肯定要远远高于51,因此2440有着比51单片机复…

yolov8模型在Xray图像中关键点检测识别中的应用【代码+数据集+python环境+GUI系统】

yolov8模型在X yolov8模型在Xray图像中关键点检测识别中的应用【代码数据集python环境GUI系统】 1.背景意义 X射线是一种波长极短、穿透能力极强的电磁波。当X射线穿透物体时,不同密度和厚度的物质会吸收不同程度的X射线,从而在接收端产生不同强度的信号…

pycharm加载虚拟环境及运行代码

pycharm加载虚拟环境及运行代码 pycharm下载地址: https://www.jetbrains.com/pycharm/download/ 1.加载虚拟环境 选择pycharm图标,点击启动。 选择OPEN, 选择工程文件夹: 选择File->setting 选择python 解释器: Project--…

扫码挪车是怎么实现的呢?一篇文章带你了解一下!扫码挪车小程序基础版上线了!!!

挪车小程序系统源码的功能特点 快速定位与挪车请求:车主通过小程序可以快速定位车辆位置,并发送挪车请求。系统会自动将请求发送给附近的车主,提醒其尽快挪车。实时通信与交互:小程序支持实时通信功能,车主之间可以通…