当前位置: 首页 > news >正文

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵

目录

前言

一、Givens旋转简介

二、Givens旋转解释

三、Givens旋转进行QR分解

四、Givens旋转进行QR分解数值计算例子

 五、求逆矩阵

六、MATLAB仿真

七、参考资料

总结


前言

        在进行QR分解时,HouseHolder变换一次将一个向量除第一个元素以外都转化成零。而有一种方法,可以每次将向量的一个元素转化成0,也可以最终达到正交化的目的,它就是Givens旋转。Givens旋转矩阵是正交矩阵,使用Givens旋转很容易就可以将一个向量的某个分量的某个指定分量化为0。本文会通过列举例子说明如何将一个矩阵通过Givens旋转分解为Q矩阵和R矩阵,最后,会用MATLAB进行仿真,当然,代码也会分享出来。


提示:以下是本篇文章正文内容,希望能帮助到各位,转载请附上链接。

一、Givens旋转简介

        Givens旋转矩阵是正交矩阵,使用Givens旋转很容易就可以将一个向量的某个分量的某个指定分量化为0。

        本文中主要考虑实数的情况。

        2×2的Givens旋转矩阵如下:

\mathbf{G}=\begin{bmatrix}\cos\theta&\sin\theta\\-\sin\theta&\cos\theta\end{bmatrix}

其中 

\cos\theta=\frac{x}{\sqrt{x^2+y^2}},\quad\sin\theta=\frac{y}{\sqrt{x^2+y^2}}

那么就可以将向量\textbf{v}=[x \ y]^T旋转到x轴上面去,如下图所示。当然改变正余弦函数也能旋转到y轴上面去。

\textbf{w}=\textbf{Gv}=\begin{bmatrix}\cos\theta&\sin\theta\\-\sin\theta&\cos\theta\end{bmatrix}\begin{bmatrix} x\\ y \end{bmatrix}=\begin{bmatrix} x\cos\theta+y\sin\theta\\ -x\sin\theta+y\cos\theta \end{bmatrix}= \begin{bmatrix} \sqrt{x^2+y^2}\\ 0 \end{bmatrix}

        可以把简写三角函数,如下所示

\begin{bmatrix}c&s\\-s&c\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}\sqrt{x^2+y^2}\\0\end{bmatrix}

二、Givens旋转解释

        我们将向量\textbf{v}=[x \ y]^T看成一个复数,即

z_1=x+iy=re^{i\varphi}=r\cos\varphi+ir\sin\varphi

\left.\textbf{G}\cdot\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}\cos\theta&\sin\theta\\-\sin\theta&\cos\theta\end{bmatrix}\left[\begin{array}{c}x\\y\end{array}\right.\right]=\left[\begin{array}{c}x\cos\theta+y\sin\theta\\\\-x\sin\theta+y\cos\theta\end{array}\right]

将其也看成一个复数

z_2=(x\cos\theta+y\sin\theta)+i(-x\sin\theta+y\cos\theta)\\ \\=r[(\cos\varphi\cos\theta+\sin\varphi\sin\theta)+i(\sin\varphi\cos\theta-\sin\theta\cos\varphi)]\\ \\ =r(\cos(\varphi-\theta)+i\sin(\varphi-\theta))\\ \\=re^{i(\varphi-\theta)}

对比z_1=re^{i\varphi}z_2=re^{i(\varphi-\theta)},学过复数的话,显然就能看出这是顺时针旋转了\theta的角度。

三、Givens旋转进行QR分解

        下面我们来说明如何通过Givens旋转来实现QR分解。其实原理很简单,就是通过将原矩阵A的主对角线下方的元素都通过Givens旋转置换成0,形成上三角矩阵R,同时左乘的一系列Givens矩阵相乘得到一个正交阵Q
        如下图所示,G(m,n)是Givens旋转矩阵,相当于用某一列的第m个元素去将第n个元素清零。

        也可以通过下图来理解,其中×表示没有发生变化的元素,m表示值改变的元素,每一个向右的箭头表示原矩阵左乘了1次Givens矩阵。

        由上图我们会发现清一个0时只影响两行,所以对一个高阶矩阵,在清某一列的几个0时可以同时执行,加快计算速度。比如对于4×4阶矩阵,可以在选第1列的第1个元素去将第一列的第2个元素清零的同时,也选择第1列的第3个元素去将第一列的第4个元素清零。

四、Givens旋转进行QR分解数值计算例子

        设矩阵\textbf{A}=\begin{bmatrix}0&&4&&2\\0&&3&&1\\2&&1&&-2\end{bmatrix},用Givens旋转的方法对其进行QR分解。

解:由于其第1列的第2个元素已经为0了,不用对它进行消0操作,我们首先用第1列的第1个元素对第1列的第3个元素清0。

易求

c=\frac{0}{\sqrt{0^2+2^2}}=0,\:\: s=\frac{2}{\sqrt{0^2+2^2}}=1

则Givens矩阵可写为

\textbf{G}_1=\begin{bmatrix} 0 &0 &1 \\ 0&1 &0 \\ -1& 0 &0 \end{bmatrix}

所以

\textbf{G}_1\textbf{A}=\begin{bmatrix} 0 &0 &1 \\ 0&1 &0 \\ -1& 0 &0 \end{bmatrix}\begin{bmatrix}0&&4&&2\\0&&3&&1\\2&&1&&-2\end{bmatrix}=\begin{bmatrix}2&&1&&-2\\0&&3&&1\\0&&-4&&-2\end{bmatrix}

接下来对上面结果右下角的四个元素进行Givens旋转,用3去将-4消为0。

易求

c=\frac{3}{\sqrt{3^2+(-4))^2}}=\frac{3}{5},\:\: s=\frac{-4}{\sqrt{3^2+(-4))^2}}=-\frac{4}{5}

则Givens矩阵可写为

\textbf{G}_2=\begin{bmatrix} 1 &0 &0 \\ 0&\frac{3}{5}&-\frac{4}{5}\\ 0& \frac{4}{5} &\frac{3}{5} \end{bmatrix}

所以

\textbf{G}_2\textbf{G}_1\textbf{A}=\begin{bmatrix} 1 &0 &0 \\ 0&\frac{3}{5}&-\frac{4}{5}\\ 0& \frac{4}{5} &\frac{3}{5} \end{bmatrix}\begin{bmatrix}2&&1&&-2\\0&&3&&1\\0&&-4&&-2\end{bmatrix}=\begin{bmatrix} 2 &1 &-2 \\ 0&5&\frac{11}{5}\\ 0& 0 &-\frac{2}{5} \end{bmatrix}

所以

\textbf{R}=\begin{bmatrix} 2 &1 &-2 \\ 0&5&\frac{11}{5}\\ 0& 0 &-\frac{2}{5} \end{bmatrix}

所以

\textbf{Q}=(\textbf{G}_2\textbf{G}_1)^T=\textbf{G}_1^T\textbf{G}_2^T\\\\=\begin{bmatrix} 0 &0 &-1 \\ 0&1 &0 \\ 1& 0 &0 \end{bmatrix}\begin{bmatrix} 1 &0 &0 \\ 0&\frac{3}{5}&\frac{4}{5}\\ 0& -\frac{4}{5} &\frac{3}{5} \end{bmatrix}\\ \\ \\=\begin{bmatrix} 0 &\frac{4}{5} &-\frac{3}{5} \\ 0&\frac{3}{5}&\frac{4}{5}\\ 1& 0 &0\end{bmatrix}

\textbf{A}=\textbf{QR}=\begin{bmatrix} 0 & \frac{4}{5} & \frac{-3}{5} \\ 0& \frac{3}{5}& \frac{4}{5} \\ 1 &0&0 \end{bmatrix} \begin{bmatrix}2&1&-2\\0&5&\frac{11}{5}\\0&0&\frac{-2}{5}\end{bmatrix}=\begin{bmatrix}0&4&2\\0&3&1\\2&1&-2\end{bmatrix}

 五、求逆矩阵

        分解得到Q矩阵和R矩阵后可参考下面两篇文章进行求逆矩阵:

        施密特正交化QR分解求逆矩阵与MATLAB仿真:http://t.csdnimg.cn/d1IGR

        一种基于约化因子上三角矩阵求逆方法与MATLAB仿真:http://t.csdnimg.cn/uZJkG

六、MATLAB仿真

        可见,仿真结果和上面的数值计算结果吻合。

七、参考资料

        参考资料:https://download.csdn.net/download/m0_66360845/89043215


总结

        以上就是今天要讲的内容,本文介绍了Givens旋转,在我理解的基础上讲解了它的几何意义,以及怎样用它将可逆矩阵分解成Q矩阵和R矩阵。同时,也用MATLAB验证了Givens旋转 QR分解算法。

相关文章:

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵 目录 前言 一、Givens旋转简介 二、Givens旋转解释 三、Givens旋转进行QR分解 四、Givens旋转进行QR分解数值计算例子 五、求逆矩阵 六、MATLAB仿真 七、参考资料 总结 前言 在进行QR分解时,HouseHolder变换…...

学习使用xbox手柄控制小乌龟节点移动

使用xbox手柄控制小乌龟,首先要下载joy功能包,发布sensor_msgs话题也就是手柄和ros通信的话题。 下载的步骤就根据官方文档即可 joy/Tutorials/ConfiguringALinuxJoystick - ROS Wiki 这里我提供一下具体步骤 第一步 安装joy 首先安装对应系统版本的…...

OpenLayers6实战,OpenLayers绘制特殊图形,OpenLayers绘制四角形(菱形),OpenLayers绘制菱形

专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解如何使用OpenLayers6实现绘制特殊图形,以绘制四角形(菱形),OpenLayers绘制菱形的功能为例。 本章核心代码不依赖任何第三方插件,只依赖OpenLayers。 需要注意的是两个操作按钮需要引入ElementUI 二、依赖和使用 &q…...

虚拟机如何在原有磁盘上扩容

虚拟机未开启状态–菜单栏–虚拟机–快照–拍摄快照–拍摄快照– 菜单栏–虚拟机–快照–快照管理器–点击刚刚的快照1–删除–是– 文件–新建或者打开–硬盘(以本人Win 10.64.3GL为例)–虚拟机设置–硬件– 硬盘(SATA)–磁盘实…...

2024-03-27 作业

作业要求: 整理课上代码整理思维导图完成下面类 作业1: 完成了 作业2: 作业3: class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度public://无参构造myString():si…...

C语言二叉树和堆(个人笔记)

二叉树和堆 二叉树1二叉树的概念和结构1.1特殊的二叉树1.2二叉树的性质(规定根节点的层数为1)1.3二叉树的存储结构 2.二叉树的顺序结构和实现2.1二叉树的顺序结构2.2堆的概念和结构2.3堆的实现2.4堆的应用2.4.1堆排序 2.5TOP-K问题 3.二叉树的遍历4.二叉…...

重学SpringBoot3-Profiles介绍

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-Profiles介绍 Profiles简介如何在Spring Boot中使用Profiles定义Profiles激活ProfilesIDEA设置active profile使用Profile-specific配置文件 条件化Bean…...

Transformer 论文阅读笔记

文章目录 前言论文阅读研究现状工作内容模型架构训练过程实验结果模型代码 其他评价 前言 Transformer可以说是深度学习领域最重要的,里程碑式的工作之一,发表于2017年的NIPS。该模型开创了自MLP(多层感知机)、CNN(卷…...

Vue 3中ref和reactive的区别

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

oracle19c adg搭建

一、环境搭建 主机IPora19192.168.232.111ora19std192.168.232.112 本文结合:https://blog.csdn.net/weixin_63131036/article/details/136635553 1.配置网络yum源 1.删除redhat7.0系统自带的yum软件包; rpm -qa|grep yum >oldyum.pkg 备份原信息 …...

关闭Elasticsearch built-in security features are not enabled

禁用Kibana安全提示(Elasticsearch built-in security features are not enabled) Kibana提示#! Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.e…...

MC0248 密码判断器(判断强弱密码)

原题链接<---- islower 小写字母判断 isupper 大写字母判断 isdigit 数字判断 题目: 小码哥在是一位密码领域的初学者&#xff0c;有一天他的老师给他了一串密码&#xff0c;要他判断这个密码是否是强密码&#xff0c;老师和他说强密码就是需要同时达到以下要求&#xff1…...

vue3+threejs新手从零开发卡牌游戏(十六):初始化对方手牌

添加对方手牌区时注意位置调整&#xff0c;以及手牌应该是背面朝上&#xff0c;加个rotateX翻转即可&#xff0c;其他代码和p1.vue代码一致&#xff0c;game/hand/p2.vue代码如下&#xff1a; <template><div></div> </template><script setup lan…...

网页无插件视频播放器,支持录像、截图、音视频播放,多路播放等,提供源码下载

前言 本播放器内部采用jessibuca插件接口&#xff0c;支持录像、截图、音视频播放等功能。播放器播放基于ws流&#xff0c;分屏操作支持1分屏、4分屏、6分屏、9分屏方式。 jessibuca工作原理是通过Emscripten将音视频解码库编译成Js&#xff08;WebAssembly&#xff0c;简称was…...

Openstack创建和操作实例,实现与外部网络通信

一、熟悉OpenStack图形界面操作 1、了解Horizon项目 Horizon项目 各OpenStack服务的图形界面都是由Horizon提供的。Horizon提供基于Web的模块化用户界面。Horizon为云管理员提供一个整体的视图。Horizon为终端用户提供一个自主服务的门户。Horizon由云管理员进行管理与控制&a…...

dubbo 源码系列之-集群三板斧---负载均衡(二)

在上一课时我们了解了 LoadBalance 接口定义以及 AbstractLoadBalance 抽象类的内容&#xff0c;还详细介绍了 ConsistentHashLoadBalance 以及 RandomLoadBalance 这两个实现类的核心原理和大致实现。本课时我们将继续介绍 LoadBalance 的剩余三个实现。 LeastActiveLoadBala…...

【一周一篇小题解】洛谷P1035级数求和

还是很简单的…… 首先&#xff0c;输入k&#xff0c;再定义一个双精度浮点数s&#xff0c;不停的循环 for(i1;;i) 每次循环加上1.0/i s1.0/i; 如果大于k就停止循环&#xff0c;并输出&#xff0c;也可以输出后直接结束程序 写法一&#xff1a; if(s>k) { printf("%…...

2024-03-26 AIGC-大模型学习路线

摘要: 2024-03-26 AIGC-大模型学习路线 大模型学习路线 建议先从主流的Llama开始&#xff0c;然后选用中文的Qwen/Baichuan/ChatGLM&#xff0c;先快速上手体验prompt工程&#xff0c;然后再学习其架构&#xff0c;跑微调脚本 如果要深入学习&#xff0c;建议再按以下步骤&am…...

QGraphicsView的使用,view坐标,scene坐标,item坐标

Graphics View绘图构架 QGraphicsScene&#xff08;场景&#xff09;&#xff1a;可以管理多个图形项QGraphicsItem&#xff08;图形项&#xff09;&#xff1a;也就是图元&#xff0c;支持鼠标事件响应。QGraphicsView&#xff08;视图&#xff09;&#xff1a;关联场景可以让…...

from_pretrained 做了啥

transformers的三个核心抽象类是Config, Tokenizer和Model&#xff0c;这些类根据模型种类的不同&#xff0c;派生出一系列的子类。构造这些派生类的对象也很简单&#xff0c;transformers为这三个类都提供了自动类型&#xff0c;即AutoConfig, AutoTokenizer和AutoModel。三个…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?

FTP&#xff08;File Transfer Protocol&#xff09;本身是一个基于 TCP 的协议&#xff0c;理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况&#xff0c;主要原因包括&#xff1a; ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...