zoukankan      html  css  js  c++  java
  • 线性代数笔记19——格拉姆-施密特正交化

    标准正交矩阵

    标准正交向量

      有一堆向量,q1,q2……qn,它们两两正交,这意味着这些向量满足:

      一个向量没法和自己正交,在i = j时,让qiTqi = 1,这相当于qi模长等于1:

      向量的转置乘以自身等于1,意味着这个向量是单位向量,所以我们称这堆向量q1,q2……qn是标准正交向量。

    标准正交矩阵

      现在把这些标准正交向量放入矩阵中:

      QTQ最终得到了一个单位矩阵,但Q本身未必是方阵。Q的列是标准正交的,Q因此被称为标准正交矩阵;当Q是方阵时,简称为正交矩阵,此时说明Q和QT互为逆矩阵:

      下面的Q就是一个正交矩阵:

      可以将Q的三个列看作直角坐标系的三个轴,它们两两垂直。

      再举个例子:

      一个方阵的列是正交的并不意味着方阵是正交矩阵,比如下面这个:

      虽然这个矩阵不是正交矩阵,QTQ的结果却与单位矩阵神似,我们可以对Q做点处理让它变成正交矩阵。当Q是正交矩阵时,Q的每一个列的模长都应该是1,因此可以这样处理:

      这样就变成正交矩阵了。类似的还有下面这个:

    正交矩阵与投影矩阵

      如果Q是标准正交矩阵,那么Q在列空间上的投影矩阵将得到简化:

      更进一步,如果Q是方阵:

      如果对QQT再次投影(这里并未强调Q是方阵):

      其中:

      在求解Ax = b时,如果A是标准正交矩阵,它的好处就是不需要计算逆矩阵:

      这也意味着x帽的一个分量等于QT一行(或Q的一列的转置)与b的点积:

      这也是很重要的一个式子:如果已知标准正交基,在第i个基方向上的投影就等于qiTb

    格拉姆-施密特正交化

      既然正交化这么好,有没有什么方法能使矩阵标准正交化呢?当然有,这就是格拉姆-施密特(Gram-Schmidt)正交化。

      假设有两个线性无关的向量a和b,现在标准正交化这两个向量,让它们变成q1和q2。首先保持a不变让向量A = a,接下来要寻找到另一个向量B,使得A⊥B。p是b在a上的投影,B就相当于b的误差向量:

      根据上一章的知识,p相当于a放缩了x倍,在一维空间内,x是一个标量:

      这相当于B是b减去b在a上的投影,B是b和A的线性组合。

      最后将A变成指向A方向的单位向量,B变成指向B方向的单位向量:

      这就是格拉姆-施密特正交化方法。

      如果还有一个向量c,由c到q3的转换:

      代入几个数值看看:

      验证:

      这个标准正交矩阵Q是通过下面的原始矩阵得到的:

      A的列空间和B的列空间相同,能够张成一个二维空间的平面。a和b是A的列空间的一组基,但这组基“不够好”,我们还想进一步让这组基的向量两两正交,并且都是单位向量,这就得到了q1和q2

    格拉姆-施密特表达

      如同A = LU一样,A可以分解成一个正交矩阵和一个上三角矩阵的乘积,A = QR,这里A是原始矩阵,各列线性无关,Q是标准正交矩阵,R是上三角矩阵。

      假设原始矩阵A有三个列向量:

      按照格拉姆-施密特正交化方法转换后,得到q1,q2,q3

      q和a本身也是列向量,得出结果并不那么直观,可以展开表达:

      由于q1Tq2 = 0,q1只是a1的单位化,所以a1T与q2也正交,a1Tq2 = 0;同理,a1Tq3 = 0。q2是a2和q1的线性组合,转置后,q2T是a2T和q1T的线性组合,这相当于:

      如果t1 = 0,相当于q1和q2是线性相关的,这就不符合标准正交向量的前提,所以一定有t1 ≠ 0:

      a2Tq2和a3Tq3不为0,如果是0,就没必要正交化了。q3是a3和q1、q2的线性组合,转置后,q3T是a3T和q1T、q2T的线性组合,这相当于:

    示例

      求矩阵A的QR分解。

      


       作者:我是8位的

      出处:http://www.cnblogs.com/bigmonkey

      本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途! 

      扫描二维码关注公众号“我是8位的”

  • 相关阅读:
    Java之基础(1)
    Java之架构(0)
    Android Exception 11(baidumapsdk(15405): Authentication Error errorcode: 102 uid)
    Android Exception 10(server)' ~ Channel is unrecoverably broken and will be disposed!)
    IOS Exception 1(libc++abi.dylib: terminating with uncaught exception of type NSException)
    Android Exception 9(requestFeature() must be called before adding content)
    Android Exception 8(Couldn't read row 0, col -1 from CursorWindow)
    简洁的BP及RBF神经网络代码
    Android实现一键获取课程成绩dome
    hdu 5371 Hotaru's problem【manacher】
  • 原文地址:https://www.cnblogs.com/bigmonkey/p/9988022.html
Copyright © 2011-2022 走看看