当前位置: 首页 > 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。三个…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...