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


一、例子
例子:设 a 1 = [ 1 2 − 1 ] a_1=\begin{bmatrix}1\\2\\-1\end{bmatrix} a1= 12−1 , 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= 4−10 使用施密特正交化将这组向量标准正交化。
答:标准正交向量组应该满足:
- 向量的长度为1;
- 向量之间相互正交;
选定一个基准向量
A 1 = a 1 = [ 1 2 − 1 ] A_1=a_1=\begin{bmatrix}1\\2\\-1\end{bmatrix} A1=a1= 12−1
对第二个向量分解为正交和与 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=A2−PA1A2=A2−A1TA1A1A1TA2=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=A3−A2TA2A2A2TA3−A3TA3A3A3TA3=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=61 12−1 e2=∣A2∣A2=31 −111 e3=∣A3∣A3=21 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=b⇒QRx=b⇒Rx=QTb
令 y = Q T b y=Q^Tb y=QTb,有些人就下以下结论:对于不同的 b b b 我们只需要将其简单的乘以 Q T Q^T QT 再通过回代(Back substitution)就可以得到新的方程的解,而不需要重新计算 A − 1 A^{-1} A−1,事实上,我们也可以通过提前计算 A − 1 A^{-1} A−1 来避免求逆的过程。真正有意义的是:节省存储空间。 Q R QR QR 分解只需要存储一个列向量 Q T Q^T QT 和上三角矩阵(有很多零,可以不存储),而后者既要存储 A A A,还需要存储 A − 1 A^{-1} A−1;
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/
相关文章:
施密特正交化
相信大家在平时的期末考试中一定少不了对某某向量组执行标准正交化类型的题目。今天我们从这个题目入手,说明这个如何执行施密特正交化,以及为什么要进行正交化。 一、例子 例子:设 a 1 [ 1 2 − 1 ] a_1\begin{bmatrix}1\\2\\-1\end{bmat…...
低代码开发:加速应用开发的利器
目录 一、引言 二、低代码开发的定义和原理 三、低代码开发的关键特性和优势 四、低代码开发的应用场景 五、低代码开发平台的市场现状和发展趋势 六、成功案例分析 七、结论 一、引言 随着信息技术的快速发展,企业对于应用开发的需求也日益增长。传统的应用…...
数据安全发展趋势与密码保护技术研究
随着数据跃升为新型生产要素,数据安全的内涵也从数据本身安全、数据资源安全,发展到数据资产安全三个层面提出了不同的要求,本文就是详细探讨数据安全的这三个层面的安全内容进行分析。 通过对数据安全不同发展阶段的安全需求和保障对象进行研…...
368周赛leetcode
1 2题元素和最小的山形三元组 经典动规 题目内容 给你一个下标从 0 开始的整数数组 nums 。 如果下标三元组 (i, j, k) 满足下述全部条件,则认为它是一个 山形三元组 : i < j < k nums[i] < nums[j] 且 nums[k] < nums[j] 请你找出 num…...
Vue 的 nextTick:深入理解异步更新机制
目录 一、前言 二、Vue.js 异步更新机制简述 三、Vue.nextTick原理 四、nextTick 的应用场景 1. 获取更新后的 DOM 元素 2. 在 DOM 更新后执行自定义的回调函数 3. 解决事件监听器中的更新问题 五、Vue.nextTick与其他异步更新方法的比较 六、总结 一、前言 Vue.js&a…...
SQL关于日期的计算合集
前言 在SQL Server中,时间和日期是常见的数据类型,也是数据处理中重要的一部分。SQL Server提供了许多内置函数,用于处理时间和日期数据类型。这些函数可以帮助我们执行各种常见的任务,例如从日期中提取特定的部分,计…...
shell_44.Linux使用 getopt 命令
使用 getopt 命令 getopt 命令在处理命令行选项和参数时非常方便。它能够识别命令行参数,简化解析过程 1. 命令格式 getopt 命令可以接受一系列任意形式的命令行选项和参数,并自动将其转换成适当的格式。 getopt 的命令格式如下: getopt opt…...
Linux备份Docker的mysql数据并传输到其他服务器保证数据级容灾
目录 简介什么是容灾 ?容灾的分类容灾和备份有什么连系 ? 数据级容灾备份步骤1、scp命令:用于Linux之间复制文件和目录2、编写备份数据库脚本3、crontab定时任务执行脚本4、测试 应用级容灾业务级容灾 简介 为了防止客户系统的数据丢失&…...
【vue+nestjs】qq第三方授权登录【超详细】
项目场景: 前端使用vue3ts 后端使用nestjs 1.申请appId,appKey 1.进入qq互联官网。创建应用 特别注意 1.在填写网站回调域时,需要你线上真实能访问的。不然审核不通过。我的回调地址是前端路由地址 2.如果你想本地调试,回调到你的线上地址。你可以在本…...
经典卷积神经网络 - VGG
使用块的网络 - VGG。 使用多个 3 3 3\times 3 33的要比使用少个 5 5 5\times 5 55的效果要好。 VGG全称是Visual Geometry Group,因为是由Oxford的Visual Geometry Group提出的。AlexNet问世之后,很多学者通过改进AlexNet的网络结构来提高自己的准确…...
系统集成测试(SIT)/系统测试(ST)/用户验收测试(UAT)
文章目录 单元测试集成测试系统测试用户验收测试黑盒测试白盒测试压力测试性能测试容量测试安全测试SIT和UAT的区别 单元测试 英文 unit testing,缩写 UT。测试粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。 …...
Android Gradle8.0以上多渠道写法以及针对不同渠道导入包的方式,填坑!
目录 多渠道的写法 针对多渠道引用不同的包 There was a failure while populating the build operation queue: Could not stat file E:\xxxx\xxxx\xxxx\app\src\UAT\libsUAT\xxx-provider(?)-xx.aar 最近升级了Gradle8.3之后,从Groovy 迁移到 Kotlinÿ…...
hdlbits系列verilog解答(向量门操作)-14
文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 构建一个具有两个 3 位输入的电路,用于计算两个向量的按位 OR、两个向量的逻辑 OR 以及两个向量的逆 (NOT)。将b反相输出到out_not上半部分,将a 的反相输出到out…...
工厂模式(初学)
工厂模式 1、简单工厂模式 是一种创建型设计模式,旨在通过一个工厂类(简单工厂)来封装对象的实例化过程 运算类 public class Operation { //这个是父类private double num1; //运算器中的两个值private double num2;public double getNu…...
python试题实例
背景: 在外地出差,突然接到单位电话,让自己出一些python考题供新人教育训练使用,以下是10道Python编程试题及其答案: 1.试题:请写一个Python程序,计算并输出1到100之间所有偶数的和。 答案&am…...
Java Heap Space问题解析与解决方案(InsCode AI 创作助手)
Heap Space问题是Java开发中常见的内存溢出问题之一,我们需要理解其原因和表现形式,然后通过优化代码、增加JVM内存和使用垃圾回收机制等方法来解决。 一、常见报错 java.lang.OutOfMemoryError: Java heap space二、Heap Space问题的原因 对象创建过…...
基于遥感影像的分类技术(监督/非监督和面向对象的分类技术)
遥感图像分类技术 “图像分类是将土地覆盖类别分配给像素的过程。例如,类别包括水、城市、森林、农业和草原。”前言 – 人工智能教程 什么是遥感图像分类? 遥感图像分类技术的三种主要类型是: 无监督图像分类监督图像分类基于对象的图像分析…...
插入兄弟元素 insertAfter() 方法
insertAfter() 方法在被选元素后插入 HTML 元素。 提示:如需在被选元素前插入 HTML 元素,请使用 insertBefore() 方法。 语法 $(content).insertAfter(selector)例子: $("<span>Hello world!</span>").insertAfter(…...
【C++项目】高并发内存池第二讲中心缓存CentralCache框架+核心实现
CentralCache 1.框架介绍2.核心功能3.核心函数实现介绍3.1SpanSpanList介绍3.2CentralCache.h3.3CentralCache.cpp3.4TreadCache申请内存函数介绍3.5慢反馈算法 1.框架介绍 回顾一下ThreadCache的设计: 如图所示,ThreadCache设计是一个哈希桶结构&…...
Git基础教程
一、Git简介 1、什么是Git? Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversion等不同&#…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
