易懂的吉文斯(Givens)变换(一)

news2024/11/14 2:28:12

文章目录

    • 二阶Givens旋转矩阵
      • 作用于向量
      • 作用于矩阵
      • 更一般的情况

二阶Givens旋转矩阵

在QR分解中,Givens旋转是一种用于将矩阵变成上三角形的技术。

别的教程里面往往会直接给出一个n*n阶的通用Givens矩阵形式,但是这样太过抽象难懂了,而且难以领略到Givens变换的背后内涵,四臂西瓜我在学习矩阵论的时候就深陷其害,现在我写这篇教程,就是淋过雨,要为后人撑伞!

Givens矩阵,也可以叫旋转矩阵,它实际上是通过旋转,归零矩阵中的特定元素。不好理解吧?看了下面的例子就明白了。

为了方便理解,我们先以二阶为例。

作用于向量

现在我们手上有这么一个向量:
a 1 = ( 4 2 ) a_1 = \begin{pmatrix} 4\\2\end{pmatrix} a1=(42)
现在我们想把这个向量,旋转到x轴上,变成
a 1 ′ = ( r 0 ) a_1^{'} = \begin{pmatrix} r\\0\end{pmatrix} a1=(r0)
image-20240714002128670

这个变换可以用如下的方式进行表示:
( c s − s c ) ( 4 2 ) = ( 4 c + 2 s − 4 s + 2 c ) = ( r 0 ) = a 1 ′ \begin{pmatrix}c&s\\-s&c\end{pmatrix}\begin{pmatrix}4\\2\end{pmatrix} = \begin{pmatrix}4c+2s \\ -4s+2c \end{pmatrix}=\begin{pmatrix}r\\0\end{pmatrix}= a_1^{'} (cssc)(42)=(4c+2s4s+2c)=(r0)=a1

此处的
( c s − s c ) = ( cos ⁡ ( θ ) sin ⁡ ( θ ) − sin ⁡ ( θ ) cos ⁡ ( θ ) ) \begin{pmatrix}c&s\\-s&c\end{pmatrix} = \begin{pmatrix}\cos(\theta)&\sin(\theta)\\-\sin(\theta)&\cos(\theta)\end{pmatrix} (cssc)=(cos(θ)sin(θ)sin(θ)cos(θ))
表示一个标准的旋转矩阵。对应向量旋转角度$ \theta$。

于是我们可以得到下面的方程组
{ 4 c + 2 s = r − 4 s + 2 c = 0 \left \{ \begin{matrix} 4c+2s &= r \\ -4s+2c &= 0 \end{matrix} \right. {4c+2s4s+2c=r=0
因为是旋转变换,所以向量的模值不会改变, r = 4 2 + 2 2 r = \sqrt{4^2+2^2} r=42+22 就是这个模值
{ 4 c + 2 s = 4 2 + 2 2 − 4 s + 2 c = 0 \left \{ \begin{matrix} 4c+2s &=& \sqrt{4^2+2^2} \\ -4s+2c &=& 0 \end{matrix} \right. {4c+2s4s+2c==42+22 0
可以解得
{ c = 2 4 2 + 2 2 = 2 20 = 2 4.4721 = 0.4472 s = 4 4 2 + 2 2 = 4 20 = 4 4.4721 = 0.8944 \left \{ \begin{aligned}c&=\frac{2}{\sqrt{4^{2}+2^{2}}}=\frac{2}{\sqrt{20}}=\frac{2}{4.4721}=0.4472\\s&=\frac{4}{\sqrt{4^{2}+2^{2}}}=\frac{4}{\sqrt{20}}=\frac{4}{4.4721}=0.8944\end{aligned} \right. cs=42+22 2=20 2=4.47212=0.4472=42+22 4=20 4=4.47214=0.8944
因此可以得到旋转矩阵
G = ( c s − s c ) = ( 0.4472 0.8944 − 0.8944 0.4472 ) G=\begin{pmatrix}c&s\\-s&c\end{pmatrix}=\begin{pmatrix}0.4472&0.8944\\-0.8944&0.4472\end{pmatrix} G=(cssc)=(0.44720.89440.89440.4472)
现在我们终于得到了最终的运算,成功将向量旋转到了x轴上,将y坐标清零。
G ( 4 2 ) = ( 0.4472 0.8944 − 0.8944 0.4472 ) ( 4 2 ) = ( 4.4721 0 ) G\begin{pmatrix}4\\2\end{pmatrix}=\begin{pmatrix}0.4472&0.8944\\-0.8944&0.4472\end{pmatrix}\begin{pmatrix}4\\2\end{pmatrix}=\begin{pmatrix}4.4721\\0\end{pmatrix} G(42)=(0.44720.89440.89440.4472)(42)=(4.47210)

作用于矩阵

理解了上述的过程后,现在我们可以看下旋转矩阵作用于矩阵的效果了。我们有如下矩阵,他左边的向量就是上一部分的
A = ( 4 1 2 1 ) A=\begin{pmatrix}4&1\\2&1\end{pmatrix} A=(4211)
直接将上一节计算的旋转矩阵作用于 A A A
G ( 4 1 2 1 ) = ( 4.4721 1.3416 0 − 0.4472 ) G\begin{pmatrix}4&1\\2&1\end{pmatrix}=\begin{pmatrix}4.4721&1.3416\\0&-0.4472\end{pmatrix} G(4211)=(4.472101.34160.4472)
确实将A矩阵变为了上三角矩阵,实现了QR分解。其中左边的向量,正是上一节计算出来的结果。相信大家看到这里就有所领悟了。

对于矩阵,我们可以把它理解为多个列向量拼接而成。
a 1 = ( 4 2 ) a 2 = ( 1 1 ) a_1 = \begin{pmatrix} 4\\2\end{pmatrix}\\ a_2 = \begin{pmatrix} 1\\1\end{pmatrix} a1=(42)a2=(11)
那么A可以理解为他们水平拼接在一起
A = [ a 1 ∣ ∣ a 2 ] A = [a_1||a_2] A=[a1∣∣a2]
根据拼接的运算性质,旋转矩阵作用于A,相当于分别作用于 a 1 a_1 a1 a 2 a_2 a2,再将它们拼接在一起。
G ⋅ [ a 1 ∣ ∣ a 2 ] = [ G ⋅ a 1 ∣ ∣ G ⋅ a 2 ] G\cdot[a_1||a_2]=[G\cdot a_1||G\cdot a_2] G[a1∣∣a2]=[Ga1∣∣Ga2]
我们现在借助这个性质再来理解下givens作用于矩阵
G ( 4 2 ) = ( 0.4472 0.8944 − 0.8944 0.4472 ) ( 4 2 ) = ( 4.4721 0 ) G\begin{pmatrix}4\\2\end{pmatrix}=\begin{pmatrix}0.4472&0.8944\\-0.8944&0.4472\end{pmatrix}\begin{pmatrix}4\\2\end{pmatrix}=\begin{pmatrix}4.4721\\0\end{pmatrix} G(42)=(0.44720.89440.89440.4472)(42)=(4.47210)

G ( 1 1 ) = ( 0.4472 0.8944 − 0.8944 0.4472 ) ( 1 1 ) = ( 1.3416 − 0.4472 ) G\begin{pmatrix}1\\1\end{pmatrix}=\begin{pmatrix}0.4472&0.8944\\-0.8944&0.4472\end{pmatrix}\begin{pmatrix}1\\1\end{pmatrix}=\begin{pmatrix}1.3416\\-0.4472\end{pmatrix} G(11)=(0.44720.89440.89440.4472)(11)=(1.34160.4472)

对于 a 1 a_1 a1向量,借助旋转矩阵成功清零y坐标;对于 a 2 a_2 a2矩阵,旋转矩阵作用后,得到新的向量

这里给大家留个思考,有没有可能, a 2 a_2 a2矩阵,经过旋转矩阵后y轴也被清零?

G ⋅ [ a 1 ∣ ∣ a 2 ] = [ G ⋅ a 1 ∣ ∣ G ⋅ a 2 ] = [ G ( 4 2 ) ∣ ∣ G ( 1 1 ) ] = ( 4.4721 1.3416 0 − 0.4472 ) G\cdot[a_1||a_2]=[G\cdot a_1||G\cdot a_2] =[G\begin{pmatrix}4\\2\end{pmatrix} ||G\begin{pmatrix}1\\1\end{pmatrix}] =\begin{pmatrix}4.4721&1.3416\\0&-0.4472\end{pmatrix} G[a1∣∣a2]=[Ga1∣∣Ga2]=[G(42)∣∣G(11)]=(4.472101.34160.4472)

现在我们来总结下上面的清空过程,我们选择第一个列向量,通过构造givens矩阵,将其第二行清零,使得矩阵整体变为上三角形式。

到这里,相信大家能够理解最一开始的那句话,givens矩阵通过旋转作用,将矩阵变化为上三角形式。

更一般的情况

我们有如下矩阵,我们希望将c的位置,清零。
A = ( a b c d ) A=\begin{pmatrix}a&b\\c&d\end{pmatrix} A=(acbd)
构造旋转矩阵
G = ( c s − s c ) G=\begin{pmatrix}c&s\\-s&c\end{pmatrix} G=(cssc)
得到
( c s − s c ) ( a c ) = ( r 0 ) \begin{pmatrix}c&s\\-s&c\end{pmatrix}\begin{pmatrix}a\\c\end{pmatrix}=\begin{pmatrix}r\\0\end{pmatrix} (cssc)(ac)=(r0)
解方程后,我们就可以得到最终的形式:
s = sin ⁡ ( θ ) = a a 2 + c 2 c = cos ⁡ ( θ ) = c a 2 + c 2 \begin{aligned}s=\sin(\theta)=\frac a{\sqrt{a^2+c^2}}\\c=\cos(\theta)=\frac c{\sqrt{a^2+c^2}}\end{aligned} s=sin(θ)=a2+c2 ac=cos(θ)=a2+c2 c
这边读者可以带入前面的二阶例子中,熟悉计算过程,加深理解。

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

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

相关文章

特惠电影票api安全性如何评测

评测特惠电影票API的安全性是确保用户数据安全和系统稳定运行的关键步骤。以下是评测特惠电影票API安全性的一些方法和步骤: ### 1. **认证和授权** - **JWT认证**:使用JSON Web Token (JWT) 进行用户身份验证和授权,确保只有合法用户可以访…

旷野之间15 – Groq 和 AI 硬件

文讨论了 Groq,一种新的计算机硬件方法,它彻底改变了 AI 解决现实世界问题的方式。 在讨论 Groq 之前,我们将分析 AI 的根本含义,并探讨用于运行 AI 模型的计算机硬件的一些关键组件。即 CPU、GPU 和 TPU。我们将从 1975 年的 Z80 CPU 开始探索这些关键硬件,然后通过探索…

ubuntu服务器安装labelimg报错记录

文章目录 报错提示查看报错原因安装报错 报错提示 按照步骤安装完labelimg后,在终端输入labelImg后,报错: (labelimg) rootinteractive59753:~# labelImg ………………Got keys from plugin meta data ("xcb") QFactoryLoader::Q…

游戏三倍补帧工具 Lossless Scaling v2.9.0

运行时请将游戏窗口化或全屏 比如你的显示器是144hz 把游戏限制帧率到48帧后开启三倍补帧 允许撕裂和垂直同步一起来延迟更低 72,48,36,分别对应1/2,1/3,1/4,性能够的话(补帧后满144fps)就优先锁72fps&a…

【C++】 List 基本使用

C List 基本使用 基本概念 list 是一个序列容器,它内部维护了一个双向链表结构。与 vector 或 deque 等基于数组的容器不同,list 在插入和删除元素时不需要移动大量数据,因此在这些操作上具有较高的效率。然而,访问列表中的特定…

公共资源管理服务中心智能化方案PPT(97页)

公共资源管理服务中心智能化方案摘要 1. 建设背景及需求 公共资源管理服务中心的建设以便民、高效、廉洁、规范为宗旨,推行“一站式办公、一条龙服务、并联式审批、阳光下作业、规范化管理”的运行模式。目标是提高行政效率和社会效益,预防流程漏洞&am…

硬盘HDD:AI时代的战略金矿?

在这个AI如火如荼的时代,你可能以为硬盘HDD已经像那些过时的诺基亚手机一样,被闪存和云存储淘汰到历史的尘埃里。但,别急着给HDD们举行退休派对,因为根据Finis Conner这位硬盘界的传奇人物的说法,它们非但没退场&#…

旋转电连接器抗干扰性有哪几个方面?

旋转电连接器作为一种精密的电气传输装置,它实现了两个相对旋转部件间的功率和信号传输。通过旋转电连接器可以传输高频的交流电、高电压的交流电、大电流的交流电、弱小的直流小信号等多种电信号,但是由仪器之间的距离有限,在如此短的距离内…

C 语言结构体

本博客涉及的结构体知识有: 1.0:结构体的创建和使用 2.0: typedef 关键字与#define 关键字的区别 3.0: 结构体成员的访问【地址访问与成员访问】 4.0: 结构体嵌套调用 5.0 数组访问赋值结构体成员 ...... 1.0:结构体的创建和使用 结…

33.异步FIFO IP核的配置、调用与仿真

(1)异步FIFO的配置过程: ps:异步fifo相比较同步fifo少一个实际深度 (2)异步FIFO的调用: module dcfifo (input wr_clk ,input rd_clk ,input [7:0] …

LT_0001_两数之和

一、题目描述 二、代码实现 2.1 暴力枚举 时间复杂度O(N^2) public static int[] towSum(int[] nums, int target) {for (int i 0; i < nums.length; i) {for (int j i 1; j < nums.length; j) {if (nums[i] nums[j] target) {return new int[]{i,j};}}}return n…

github actions方式拉取docker镜像

参考&#xff1a; https://wkdaily.cpolar.cn/archives/gc 注意github actions提供的免费虚拟机空间有限&#xff0c;空间不足会报错&#xff0c;查看大概语句有10来G 我在workflow file里加了df -h 运行查看磁盘情况&#xff1a; 通过pwd命令&#xff0c;可以知道运行目录/ho…

护网HW面试——redis利用方式即复现

参考&#xff1a;https://xz.aliyun.com/t/13071 面试中经常会问到ssrf的打法&#xff0c;讲到ssrf那么就会讲到配合打内网的redis&#xff0c;本篇就介绍redis的打法。 未授权 原理&#xff1a; Redis默认情况下&#xff0c;会绑定在0.0.0.0:6379&#xff0c;如果没有采用相关…

自然语言处理(NLP)——法国工程师IMT联盟 期末考试题

1. 问题1 &#xff08;法语&#xff09;En langue arabe lcrasante majorit des mots sont forms par des combinaisons de racines et de schmes. Dans ce mcanisme... &#xff08;英语&#xff09;In Arabic language the vast majority&#xff08;十之八九&#xff09; of…

JAVA自定义注释

interface 声明 package test; public interface InProgress { } InProgress public void calculateInterest(float amount, float rate) { } 带成员 public interface TODO {String value(); } InProgress //只有成员变量名有value时&#xff0c;值有给value赋值时可以这…

水的几个科学问题及引发的思考

水的几个科学问题及引发的思考 1、两个相同的容器A和B&#xff0c;分别装有同质量的水&#xff0c;然后&#xff0c;在A容器中加入水&#xff0c;在B容器中加入冰&#xff0c;如果加入水和冰的质量相同。问&#xff0c;容器B的水位将与容器A的水位相同吗&#xff08;假设冰未融…

Web 性能入门指南-1.5 创建 Web 性能优化文化的最佳实践

最成功的网站都有什么共同点&#xff1f;那就是他们都有很强的网站性能和可用性文化。以下是一些经过验证的有效技巧和最佳实践&#xff0c;可帮助您建立健康、快乐、值得庆祝的性能文化。 创建强大的性能优化文化意味着在你的公司或团队中创建一个如下所示的反馈循环&#xff…

永磁同步电机控制算法--基于 SVM 的无磁链环 DTC

永磁同步电机无磁链环 DTC 通过控制定子磁链交轴分量来直接控制转矩&#xff0c;不再要求控制磁链幅值恒定&#xff0c;省去了传统 DTC 中的磁链环&#xff0c;不仅转矩响应更快&#xff0c;有效抑制了转矩脉动&#xff0c;而且提高了电机功率因数。但无磁链环 DTC 方案仍采用传…

探索4D毫米波雷达和摄像头在自动驾驶中的潜力

随着自动驾驶技术的快速发展&#xff0c;关于各种传感器的必要性&#xff0c;尤其是LiDAR&#xff08;激光雷达&#xff09;与毫米波雷达结合摄像头的作用&#xff0c;激发了激烈的讨论。在这篇博客中&#xff0c;我们将探讨4D毫米波雷达和摄像头的组合是否可能成为自动驾驶车辆…

python爬虫网页解析模块及测试案例详解

xpath模块 xpath模块基本使用方法 测试网页 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"/><title>Title</title> </head> <body><ul><li id"l1" class"c1&q…