施密特正交化

news2024/11/19 7:45:07

相信大家在平时的期末考试中一定少不了对某某向量组执行标准正交化类型的题目。今天我们从这个题目入手,说明这个如何执行施密特正交化,以及为什么要进行正交化。
在这里插入图片描述

在这里插入图片描述

一、例子

例子:设 a 1 = [ 1 2 − 1 ] a_1=\begin{bmatrix}1\\2\\-1\end{bmatrix} a1= 121 a 2 = [ − 1 3 1 ] a_2=\begin{bmatrix}-1\\3\\1\end{bmatrix} a2= 131 a 3 = [ 4 − 1 0 ] a_3=\begin{bmatrix}4\\-1\\0\end{bmatrix} a3= 410 使用施密特正交化将这组向量标准正交化。

:标准正交向量组应该满足:

  • 向量的长度为1;
  • 向量之间相互正交;

选定一个基准向量
A 1 = a 1 = [ 1 2 − 1 ] A_1=a_1=\begin{bmatrix}1\\2\\-1\end{bmatrix} A1=a1= 121
对第二个向量分解为正交和与 A 1 A_1 A1 共线的两个向量,其中与 A 1 A_1 A1 共线的向量因为已经能够用 A 1 A_1 A1 进行表示,所以应该剔除只保留与 A 1 A_1 A1 正交的分量:
A 2 = A 2 − P A 1 A 2 = A 2 − A 1 A 1 T A 1 T A 1 A 2 = 5 3 [ − 1 1 1 ] A_2=A_2-P_{A_1}A_2=A_2-\frac{A_1A_1^T}{A_1^TA_1}A_2=\frac{5}{3}\begin{bmatrix}-1\\1\\1\end{bmatrix} A2=A2PA1A2=A2A1TA1A1A1TA2=35 111
同理:
A 3 = A 3 − A 2 A 2 T A 2 T A 2 A 3 − A 3 A 3 T A 3 T A 3 A 3 = 2 [ 1 0 1 ] A_3=A_3-\frac{A_2A_2^T}{A_2^TA_2}A_3-\frac{A_3A_3^T}{A_3^TA_3}A_3=2\begin{bmatrix}1\\0\\1\end{bmatrix} A3=A3A2TA2A2A2TA3A3TA3A3A3TA3=2 101

已经正交化的向量应该更新到下一个阶段的计算。

接下来对向量组的每个成员进行单位化。

单位化的长度可以随便缩小,总之保证模长度为1即可,也就是说前面的诸如 2 2 2 5 3 \frac{5}{3} 35 完全不用考虑其存在。

e 1 = A 1 ∣ A 1 ∣ = 1 6 [ 1 2 − 1 ] e 2 = A 2 ∣ A 2 ∣ = 1 3 [ − 1 1 1 ] e 3 = A 3 ∣ A 3 ∣ = 1 2 [ 1 0 1 ] e_1=\frac{A1}{|A1|}=\frac{1}{\sqrt 6}\begin{bmatrix}1\\2\\-1\end{bmatrix}\\ e_2=\frac{A2}{|A2|}=\frac{1}{\sqrt 3}\begin{bmatrix}-1\\1\\1\end{bmatrix}\\ e_3=\frac{A3}{|A3|}=\frac{1}{\sqrt 2}\begin{bmatrix}1\\0\\1\end{bmatrix} e1=A1∣A1=6 1 121 e2=A2∣A2=3 1 111 e3=A3∣A3=2 1 101

如果你动手计算的话,你会发现得到正交化的结果并不容易。所以为什么我们要废这么大功夫去实现这样的一个分解?接下来就是对这个问题进行解答。

二、正交化的应用

谈到正交化, Q R QR QR 分解是经常一起谈论的。 Q R QR QR 分解是将一个矩阵分解为正交矩阵 Q Q Q上三角矩阵 R R R 的过程。很多方法可以实现这样的一个分解,上面的例子我们就使用到了施密特正交化的方法。下面是各种方法的比较:

方法描述优缺点使用场景
Gram-Schmidt过程是一种迭代方法,逐列地将原始矩阵的列向量正交化直观但是可能数值不稳定,尤其是当 A A A的列近似线性相关时小到中型矩阵
Householder变换利用对称反射来逐步将矩阵变换为上三角形式的方法通常比Gram-Schmidt过程更数值稳定。是许多数值线性代数库(如LAPACK)的标准方法大型、满秩的密集矩阵
Givens旋转通过旋转来逐步零化矩阵元素,达到上三角形式通常用于稀疏矩阵或特定结构的矩阵,因为可以有选择地零化矩阵的元素大型、稀疏矩阵
列主元 Q R QR QR分解 Q R QR QR分解中引入列主元策略,每一步中选择“最大”的列作为下一个正交向量可以提高施密特正交化过程的稳定性列线性相关或者近似相关

施密特正交化在很多地方都有应用,这里只讨论与 Q R QR QR 有关的话题。对一个矩阵执行施密特正交化事实上就是在求取 Q R QR QR 分解中的 Q Q Q 矩阵,因为正交矩阵 Q Q Q 的特殊性,可以很轻松的通过 A A A 与正交矩阵 Q Q Q 求得 R R R 矩阵。

对于上三角矩阵,所有位于主对角线以下的元素必须为零;对于下三角矩阵,所有位于主对角线以上的元素必须为零。主对角线是否为零与是否为上下三角没有直接关系。

Q R QR QR 求解线性方程组有哪些帮助?

  • 节省空间;
  • 具有数值稳定性;
  • 解无解方程;

我并不认为 Q R QR QR 分解相对于直接求解 A A A 的逆有更高的效率。考虑线性方程组 A x = b Ax=b Ax=b
A x = b ⇒ Q R x = b ⇒ R x = Q T b Ax=b\Rightarrow QRx=b\Rightarrow Rx=Q^Tb Ax=bQRx=bRx=QTb
y = Q T b y=Q^Tb y=QTb,有些人就下以下结论:对于不同的 b b b 我们只需要将其简单的乘以 Q T Q^T QT 再通过回代(Back substitution)就可以得到新的方程的解,而不需要重新计算 A − 1 A^{-1} A1,事实上,我们也可以通过提前计算 A − 1 A^{-1} A1 来避免求逆的过程。真正有意义的是:节省存储空间 Q R QR QR 分解只需要存储一个列向量 Q T Q^T QT 和上三角矩阵(有很多零,可以不存储),而后者既要存储 A A A,还需要存储 A − 1 A^{-1} A1

2.1 Q R QR QR 分解有更好的数值稳定性

相对于高斯消元法, Q R QR QR 分解更具有数值稳定性。数值稳定性(Numerical Stability)是指数值算法在小的扰动下(如计算机的舍去误差)下,得到的解仍然是近似于真实的解。看一个具体的例子,说明这个数值稳定性概念:

考虑系数矩阵 A A A 和 结果向量 b b b 组成的线性方程组 A x = b Ax=b Ax=b 的解:
A = [ 1 1 1 1.0001 ] b = [ 2 2.0001 ] A=\begin{bmatrix}1&1\\1&1.0001\end{bmatrix} \quad b=\begin{bmatrix}2\\2.0001\end{bmatrix} A=[1111.0001]b=[22.0001]
容易得出: x = [ 1 1 ] x=\begin{bmatrix}1\\1\end{bmatrix} x=[11],当扰动作用于 b b b 变成 b ′ b' b
b ′ = [ 2 2 ] b'=\begin{bmatrix}2\\2\end{bmatrix} b=[22]
这个解变成了 x ′ = [ 2 0 ] x'=\begin{bmatrix}2\\0\end{bmatrix} x=[20],和原来的 x = [ 1 1 ] x=\begin{bmatrix}1\\1\end{bmatrix} x=[11] 相差甚远,尽管我们的扰动只是 0.0001 0.0001 0.0001。为什么我们说高斯消元法的数值稳定性差呢?高斯消元法会用到某一行的倍数减去另一个行,如果乘数是基于非常小的主元计算的,乘数会非常大,所有依赖这个乘数的元素的误差都会放大,而 Q R QR QR 分解的过程中,只涉及向量投影并不涉及高斯消元的小主元问题,所以我们说 Q R QR QR 分解具有比高斯消元法更大的数值稳定性。

2.2 计算对称三角矩阵的全部特征值

待补充


[1] https://programmersought.com/article/41251945673/

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

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

相关文章

阿里妈妈Union Lab全量公测,你会用吗?

Union Lab是一种智能化的选品推荐、推广内容创作工具,它内置了大语言模型(LLMs),使得选品、推广更加智能和简单。通过联盟底层货品服务,Union Lab可以实现智能化货品发现、分析、选品、投放、创意生产,基于…

嵌入式mqtt总线架构方案mosquitto+paho

一 mqtt通信模型 MQTT 协议提供一对多的消息发布&#xff0c;可以降低应用程序的耦合性&#xff0c;用户只需要编写极少量的应用代码就能完成一对多的消息发布与订阅&#xff0c;该协议是基于<客户端-服务器>模型&#xff0c;在协议中主要有三种身份&#xff1a;发布者&…

力扣第37题 解数独 c++ 难~ 回溯

题目 37. 解数独 困难 相关标签 数组 哈希表 回溯 矩阵 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫…

基于Java的文物管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

GRASP 、SOLID 与 GoF 设计模式

一、GRASP GRASP&#xff1a;通用职责分配软件设计模式(General Responsibility Assignment Software Patterns)&#xff0c;其主要思想是基于单一职责设计软件对象。 思考软件对象设计以及大型构件的流行方式是&#xff0c;考虑其职责、角色和协作。这是被称为职责驱动设计&a…

C++:无法查找或打开 PDB 文件?? 如何解决呢?以及产生原因是什么?

C:无法查找或打开 PDB 文件?? 如何解决呢&#xff1f;以及产生原因是什么&#xff1f; 前言解决办法原因 前言 最近博主在写C时&#xff0c;明明代码都正确&#xff0c;但编译失败。查看原因后发现显示&#xff1a;无法查找或打开 PDB 文件。&#xff08;先介绍解决办法&…

【高等数学】微分中值定理

文章目录 1、极值2、费马引理3、罗尔定理4、拉格朗日中值定理4.1用拉格朗日定理证明基本结论 5、柯西中值定理6、微分中值定理的意义7、三大中值定理的意义 1、极值 若 ∃ δ > 0 ∃δ>0 ∃δ>0&#xff0c;使得 ∀ x ∈ U ( x 0 , δ ) ∀x\in U(x_0,δ) ∀x∈U(x0…

DDD与微服务的千丝万缕

一、软件设计发展过程二、什么是DDD&#xff1f;2.1 战略设计2.2 战术设计2.3 名词扫盲1. 领域和子域2. 核心域、通用域和支撑域3. 通用语言4. 限界上下文5. 实体和值对象6. 聚合和聚合根 2.4 事件风暴2.5 领域事件 三、DDD与微服务3.1 DDD与微服务的关系3.2 基于DDD进行微服务…

2023年中国煤气节能器产量及市场规模分析[图]

煤气节能器行业是指生产和销售用于煤气燃烧系统中的节能器的行业。煤气节能器是一种能够有效提高煤气燃烧效率、降低燃烧过程中的热损失的装置&#xff0c;广泛应用于工业生产、民用燃烧等领域。煤气节能器行业的发展与煤气燃烧技术的发展密切相关&#xff0c;随着煤气燃烧技术…

操作系统期末复习题版详解(含解析)

操作系统期末复习 第一章 操作系统引论 一、Os具有哪几大特征?它们之间有何关系? 【参考答案】OS具有并发、共享、虚拟和异步这4个基本特征。它们之间的关系包含以下几个方面。 并发和共享是OS最基本的特征。为了提高计算机资源的利用率&#xff0c;OS必然要采用多道程序设…

Excel 5s内导入20w条简单数据(ExecutorType.BATCH)Mybatis批处理的应用

文章目录 Excel 5s内导入20w条数据1. 生成20w条数据1.1 使用Excel 宏生成20w条数据1.2 生成成功 2. ExecutorType&#xff1a;批量操作执行器类型2.1 ExecutorType.SIMPLE2.2 ExecutorType.BATCH2.3 ExecutorType.REUSE 3. 20w条数据直接插入数据库3.1 使用ExecutorType.SIMPLE…

成功解决ModuleNotFoundError: No module named ‘docx.text.hyperlink‘

成功解决ModuleNotFoundError: No module named docx.text.hyperlink 目录 解决问题 解决思路 解决方法 解决问题 ModuleNotFoundError: No module named ‘docx.text.hyperlink‘ 解决思路 No module named docx.text.hyperlink"。这个错误通常表示你的代码中缺少了…

react 中ref 属性的三种写法

目录 1. 字符串 ref 2.dom节点上使用回调函数ref 3.React.createRef() 1. 字符串 ref 最早的ref用法。&#xff08;由于效率问题&#xff0c;现在官方不推荐使用这种写法。&#xff09; 1.dom节点上使用&#xff0c;通过this.refs.xxxx来引用真实的dom节点 <input ref&q…

云上智能驾驶三维重建最佳实践

智能驾驶技术的不断发展&#xff0c;正在改变着我们的出行方式和交通系统。作为其中的一个关键技术&#xff0c;三维重建在智能驾驶系统中起着重要的作用。除去车端本身的感知、重建算法&#xff0c;自动驾驶技术的落地与发展需要庞大的云端重建能力支撑&#xff0c;火山引擎多…

魔术《4 Kings 折纸》的三重境界(二)——集合语言和数理逻辑

早点关注我&#xff0c;精彩不错过&#xff01; 上回我们回顾了《4 Kings 折纸》这个魔术的内容和用小学的奇偶性原理解析了操作的过程&#xff0c;详情请戳&#xff1a; 魔术《4 Kings 折纸》的三重境界&#xff08;一&#xff09;——奇偶性原理 今天我们进入后第二境界&…

C++入门篇2

文章目录 C入门篇21、函数重载1.1、函数重载概念1.2、 C支持函数重载的原理 -- 名字修饰(name Mangling) 2、引用2.1、引用概念2.2、引用特性2.3、常引用2.4、使用场景2.5、传值、传引用效率比较2.6、引用和指针的区别 3、内联函数3.1、内联函数概念3.2、内联函数特性 4、auto关…

代码随想录第四十五天|1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零

1049. 最后一块石头的重量 题目&#xff1a; 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么…

绿肥红瘦专栏数据的爬取

前言 要想爬专栏&#xff0c;先得爬用户。要想爬用户&#xff0c;三个header参数挡住了去路&#xff1a;x-zst-81&#xff0c;x-zse-93&#xff0c;x-zse-96&#xff0c;经过搜索x-zse-96&#xff0c;定位到设置该字段的位置&#xff1a; 这个t2是固定的值&#xff0c;t0来自于…

Leetcode——字符

520. 检测大写字母 class Solution { public:bool detectCapitalUse(string word) {int big 0, small 0, len word.length();for (int i 0; i < len; i) {if (word[i] > 65 && word[i] < 90) {big;}else {small;}}if (big len || small len) {return tr…

Leetcode—2652.倍数求和【简单】

2023每日刷题&#xff08;四&#xff09; Leetcode—2652.倍数求和 实现代码 int sumOfMultiples(int n){int ans 0;int i 1;for(; i < n; i) {if((i % 3 0) || (i % 5 0) || (i % 7 0)) {ans i;}}return ans; }测试结果 之后我会持续更新&#xff0c;如果喜欢我的文…