施密特正交化

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

一、例子

例子 :设 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=6 1 12−1 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=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.0001b=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/

相关推荐
棒球1号位1 天前
全球赋能:中国棒球联盟矩阵的国际化人才培养路径·棒球1号位
线性代数·矩阵
郝学胜-神的一滴2 天前
中级OpenGL教程 022:探秘三维世界的血脉传承——物体父子关系与矩阵递归奥义
c++·线性代数·unity·矩阵·游戏引擎·unreal engine·opengl
luoganttcc3 天前
指数分布的完整推导
线性代数·机器学习·概率论
爱刷碗的苏泓舒4 天前
平方根信息滤波:矩阵推导及 GNSS 参数估计应用
线性代数·算法·矩阵·gnss·参数估计·测量平差·平方根信息滤波
AI科技星4 天前
光速螺旋时空曲率挠率拓扑统一场论——四大力全域闭环求导、精算验证与第一性原理完备证明
线性代数·算法·决策树·机器学习·常温超导·ai科技星
noipp5 天前
推荐题目:洛谷 B2099 矩阵交换行
线性代数·算法·矩阵
ssl_xxy5 天前
行列式杂题第二弹
线性代数·矩阵
AI科技星7 天前
全域三极公理统一篇——所有分析、代数、拓扑、算子理论同源归一,回归0/1/∞创世本源闭环《全域数学vs传统数学:人类文明进阶200讲》第91讲
人工智能·线性代数·机器学习·数据挖掘·回归·乖乖数学·全域数学
AI科技星8 天前
线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转、耦合、坍缩的跨空间标准化变换载体《全域数学vs传统数学:人类文明进阶200讲》第80讲
线性代数·算法·矩阵·数据挖掘·回归·乖乖数学·全域数学
米罗篮8 天前
矩阵快速幂 (Exponentiation By Squaring Applied To Matrices)
c++·线性代数·算法·矩阵