House holder reflections and Givens rotations

House holder reflections and Givens rotations

Householder反射和Givens旋转是两种常见的线性代数方法,用于将一个矩阵分解为正交矩阵(Q)和上三角矩阵®,即QR分解。它们在数值线性代数中非常重要,特别是在求解线性方程组和特征值问题中。以下是这两种方法的原理及它们与QR分解的关系:

Householder反射 (Householder Reflection)

Householder反射是一种利用反射将一个向量转换为另一个向量的方法。具体来说,Householder反射可以用于将一个向量变成一个特定方向的向量,比如将一个向量变成与标准基向量平行的向量。这种方法的主要特点是,它可以在很少的运算步骤中完成这一操作,因此在数值计算中非常高效。

原理

  1. 给定一个向量 x x x,我们希望将其转换为与标准基向量 e 1 e_1 e1 平行的向量。为此,我们构造一个Householder矩阵 H H H
  2. Householder矩阵 H H H 的形式为:
    H = I − 2 v v T v T v H = I - 2 \frac{vv^T}{v^Tv} H=I2vTvvvT
    其中, v v v 是一个特定构造的向量,使得 H x Hx Hx e 1 e_1 e1 平行。

步骤

  1. 选择 v = x + sign ( x 1 ) ∥ x ∥ 2 e 1 v = x + \text{sign}(x_1) \|x\|_2 e_1 v=x+sign(x1)x2e1,其中 ∥ x ∥ 2 \|x\|_2 x2 x x x 的2-范数, sign ( x 1 ) \text{sign}(x_1) sign(x1) x 1 x_1 x1 的符号。
  2. 计算 H H H 并使用 H H H 对原矩阵 A A A 进行反射,得到一个新的矩阵 A ′ A' A ,其中v对应的列被转换为与标准基向量平行,即列中对应行的元素不为0,其余元素均为0。

通过多次应用Householder反射,我们可以将矩阵 A A A 转换为一个上三角矩阵 R R R,同时累积这些反射矩阵以形成正交矩阵 Q Q Q

Givens旋转 (Givens Rotation)

Givens旋转是一种通过旋转将一个向量的某个分量置零的方法。这种方法非常适合用于稀疏矩阵,因为它可以有选择地仅对矩阵的某些元素进行操作。

原理

  1. Givens旋转通过构造一个旋转矩阵 G G G 来对两个元素进行旋转,使得其中一个元素变为零。
  2. Givens旋转矩阵 G ( i , j , θ ) G(i,j,\theta) G(i,j,θ) 的形式为:
    G = [ 1 ⋱ c s 1 − s c ⋱ 1 ] G = \begin{bmatrix} 1 & & & & & \\ & \ddots & & & & \\ & & c & & s & \\ & & & 1 & & \\ & & -s & & c & \\ & & & & & \ddots \\ & & & & & & 1 \\ \end{bmatrix} G= 1cs1sc1
    其中, c = cos ⁡ ( θ ) c = \cos(\theta) c=cos(θ) s = sin ⁡ ( θ ) s = \sin(\theta) s=sin(θ)

步骤

  1. 选择 θ \theta θ 使得 c = a a 2 + b 2 c = \frac{a}{\sqrt{a^2 + b^2}} c=a2+b2 a s = b a 2 + b 2 s = \frac{b}{\sqrt{a^2 + b^2}} s=a2+b2 b,其中 a a a b b b 是矩阵中要被操作的两个元素。
  2. 通过旋转矩阵 G G G 对矩阵进行操作,将其中一个元素置零。

eg:
G = [ c s − s c ] , v = [ a b ] G= \begin{bmatrix} c & s\\ -s & c \end{bmatrix}, v=\begin{bmatrix} a\\b\end{bmatrix} G=[cssc],v=[ab]
则可得:
G v = [ c o s θ ∗ a + s i n θ ∗ b − s i n θ ∗ a + c o s θ ∗ b ] = [ a + b 0 ] Gv=\begin{bmatrix} cos\theta *a+sin\theta *b\\-sin\theta *a+cos\theta *b\end{bmatrix} =\begin{bmatrix} a+b\\0\end{bmatrix} Gv=[cosθa+sinθbsinθa+cosθb]=[a+b0]

通过多次应用Givens旋转,可以将矩阵 A A A 转换为上三角矩阵 R R R,同时累积这些旋转矩阵以形成正交矩阵 Q Q Q

Householder反射和Givens旋转与QR分解的关系

这两种方法都可以用于QR分解,但它们有各自的优缺点:

  • Householder反射通常在处理密集矩阵时更有效,因为它每次操作可以消去一个向量中的多个元素,从而减少总的运算次数。
  • Givens旋转在处理稀疏矩阵时更有效,因为它可以有选择地仅对矩阵的某些元素进行操作,从而保持矩阵的稀疏性。

总体来说,QR分解的目标是通过一系列的正交变换(Householder反射或Givens旋转)将原矩阵 A A A 分解为一个正交矩阵 Q Q Q 和一个上三角矩阵 R R R
A = Q R A = QR A=QR
其中, Q Q Q 是一个正交矩阵, R R R 是一个上三角矩阵。Householder反射和Givens旋转提供了实现这一目标的两种不同方法。

参考链接

《2013 Matrix Computations 4th》

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

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

相关文章

【若依管理系统】注意事项

1.前端字段必填 rules: {sceneName: [{ required: true, message: "场景名称不能为空", trigger: "blur" }],orderNum: [{ required: true, message: "显示排序不能为空", trigger: "blur" }], }, 2.IDEA,默认以debug模式…

python | pyvips,一个神奇的 Python 库

本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。 原文链接:pyvips,一个神奇的 Python 库! 大家好,今天为大家分享一个神奇的 Python 库 - pyvips。 Github地址:https…

Agents 要点

一、Agents概念 人类是这个星球上最强大的 Agent。Agent是一个能感知并自主地采取行动的实体,这里的自主性极其关键,Agent要能够实现设定的目标,其中包括具备学习和获取知识的能力以提高自身性能。 关键点:感知环境、自主决策、具…

前端项目笔记经验-001

做项目有一段时间了,利用下班或者零碎时间的功夫,想分享一些个人心得和感受。与君共勉。 前端应该具备的几个能力: (1)准备假数据(模拟数据)的能力,因为后端有时候接口没有准备好&…

element plus 实现跨页面+跨tab栏多选

文章目录 element plus 层面数据层面 菜鸟好久没写博客了,主要是没遇见什么很难的问题,今天碰见了一个没有思路的问题,解决后立马来和大家伙分享了! 菜鸟今天要实现一个需求,就是:实现跨页面跨 tab栏 多选…

力学笃行(四)Qt 线程与信号槽

线程与信号槽 1. 主窗口(MainWindow)主线程2. 线程2.1 QThread2.2 QtConcurrent::run()2.3 thread 的调用方式 3. 信号槽3.1 connect3.2 元对象系统中注册自定义数据类型 附录一 信号槽机制与主线程进行通信示例 1. 主窗口(MainWindow&#x…

MySQL联合索引最左匹配原则

MySQL中的联合索引(也叫组合索引)遵循最左匹配原则,即在创建联合索引时,查询条件必须从索引的最左边开始,否则索引不会被使用。在联合索引的情况下,数据是按照索引第一列排序,第一列数据相同时才会按照第二列排序。 例…

CVE-2024-27292:Docassemble任意文件读取漏洞复现 [附POC]

文章目录 CVE-2024-27292:Docassemble任意文件读取漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 CVE-2024-27292:Docassemble任意文件读取漏洞复现 [附POC] 0x01 前言 …

冒泡排序与其C语言通用连续类型排序代码

冒泡排序与其C语言通用连续类型排序代码 冒泡排序冒泡排序为交换排序的一种:动图展示:冒泡排序的特性总结:冒泡排序排整型数据参考代码(VS2022C语言环境): 冒泡排序C语言通用连续类型排序代码对比较的方式更…

法律行业守护神:知识库+AI大模型,解锁企业知识全周期管理

在法律行业中,搭建一个有效的知识库并进行企业知识全生命周期管理确实是一项不小的挑战。法律环境的复杂性和不断变化的法规要求企业必须持续更新和维护其知识库,以确保所有信息的准确性和实时性。 这种系统化的信息管理不仅有助于提高律师和法律顾问的…

打卡第9天-----字符串

我在自学的时候,看了卡尔的算法公开课了,有些题目我就照葫芦画瓢写了一遍js代码,差不多都写出来了,有暴力解法,有卡尔推荐的思路和方法。话不多说,直接上题上代码吧: 一、翻转字符串里的单词 leetcode题目链接:151. 反转字符串中的单词 题目描述: 给你一个字符串 s…

5个自动化面试题,助你过关斩将!

面试时,自动化是软件测试高频面试内容,通过学习和准备面试题,你会对可能遇到的问题有所准备,从而减轻面试时的紧张感,让你在面试中稳操胜券! 今天,分享一些在面试中可能会遇到的自动化测试面试…

软件架构之测评方法

软件架构之测评方法 第 11 章:测试评审方法11.1 测试方法11.1.1 软件测试阶段11.1.2 白盒测试和黑盒测试11.1.3 缺陷的分类和级别11.1.4 调试 11.2 评审方法11.3 验证与确认11.4 测试自动化11.5 面向对象的测试 第 11 章:测试评审方法 软件测试与评审是…

大学生暑假“三下乡”社会实践工作新闻投稿指南请查收!

近年来,大学生暑期“三下乡”社会实践工作方兴未艾,越来越多的大学生通过参与“三下乡”实践工作,走出校园,深入基层,体验农村生活,服务农民,促进农村经济社会发展,实现了理论与实践…

算能科技,致力于成为全球领先的通用算力供应商

算能致力于成为全球领先的定制算力提供商,专注于RISC-V、TPU处理器等算力产品的研发和推广应用。公司遵循全面开源开放的生态理念,携手行业伙伴推动RISC-V高性能通用计算产业落地;打造覆盖“云、边、端”的全场景产品矩阵,为数据中…

【eNSP模拟实验】三层交换机实现VLAN通信

实验需求 让PC1和PC2能够互相通讯&#xff0c;其中PC1在vlan10中&#xff0c;PC2在vlan20中。 实验操作 首先把PC1和PC2都配置好ip&#xff0c;配置好之后&#xff0c;点击右下角的应用 然后&#xff0c;在S2交换机&#xff08;S3700&#xff09;上做如下配置 #进入系统 <…

mvvm模式

MVVM&#xff08;Model-View-ViewModel&#xff09;模式是一种软件设计模式&#xff0c;特别适用于构建用户界面&#xff08;UI&#xff09;应用程序&#xff0c;尤其是使用WPF&#xff08;Windows Presentation Foundation&#xff09;、Silverlight和其他XAML技术的应用程序。…

【Redis】Redis十大类型

文章目录 前言一、string字符串类型二、List列表类型三、 Hash表四、 Set集合五、 ZSet有序集合六、 GEO地理空间七、 HyperLogLog基数统计八、Bitmap位图九、bitfield位域十、 Stream流10.1 队列指令10.2 消费组指令10.3 ACK机制 前言 redis是k-v键值对进行存储&#xff0c;k…

Mac上pyenv的安装及使用

Mac上pyenv的安装及使用 安装 brew update brew install pyenv 报错 git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallowgit -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow那就执行这2句 还报错 git -C /…

【最经典的79个】软件测试面试题(内含答案)提前备战“金九银十”

001.软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与维护(running maintrnacne) 测试用例 用例编号 测试项目 测试标题 重要级别 预置条件 输入数据 执行步骤 预期结果 0002.问&…