• 线性代数14.正交向量与子空间


    正交向量

    正交是垂直的另一种说法,她意味着在 (n) 维空间中,这些向量的夹角是90度。

    两个向量正交的条件:

    [x^Ty=0 ]

    (x、y) 表示列向量,(x^T) 表示行向量,这个式子就是矩阵乘法中的行点乘列。如果结果为0,那么就说明两个向量正交。

    证明

    首先需要理解向量长度的平方在线代中怎么表示?

    假设有向量 (x=left( egin{array}{c} 1 \ 2 \ 3 \ end{array} ight)) , 长度平方就是

    [1+2^2+3^2=14 ]

    与她正交的向量是 (y=left( egin{array}{c} 2 \ -1 \ 0 \ end{array} ight)) ,(y) 长度平方是 (5) .

    (x+y=left( egin{array}{c} 3 \ 1 \ 3 \ end{array} ight)) ,(x+y) 的长度是 (19) .

    会发现,长度的平方正好是 向量的转置乘以其本身

    比如 (x=left( egin{array}{c} 1 \ 2 \ 3 \ end{array} ight)) ,(x^T=left( egin{array}{ccc} 1 & 2 & 3 \ end{array} ight)) ,相乘有

    [x^T.x=left( egin{array}{ccc} 1 & 2 & 3 \ end{array} ight).left( egin{array}{c} 1 \ 2 \ 3 \ end{array} ight)=14 ]

    我们可以用这种方法表示任意实向量的长度的平方。

    在一个直角三角形中

    (x)(y) 垂直时,有

    [left|x|^2+left|y|^2 ight. ight.=left|x+y|^2 ight. ]

    可以表示为

    [x^T.x+y^T.y=(x+y)^T.(x+y) ]

    展开

    [x^T.x+y^T.y=x^T.y+x^T.x+y^T.x+y^T.y ]

    消掉同类项有

    [0=x^T.y+y^T.x ]

    因为我们进行的是向量点乘,所以 (x^T.y=y^T.x) ,都是$x_1y_1+x_2y_2+x_3y_3+...+x_ny_n $所以

    [x^T.y=0 ]

    故,两个正交向量的点积是0.

    如果 (x) 是零向量,(y) 是非零向量,两个正交吗?

    是。数学重要的一点就是跟着规则走。

    零向量和任何向量都正交。

    正交子空间

    定义

    定义子空间 (S) 与 子空间 (T) 正交, 意味着,(S) 中任意一个向量都与 (T) 中任意一个向量正交。

    前提

    假设在一个房间中,一面无限延申的墙和地板,可以把她们看成经过原点的子空间,她们正交吗?

    不是,比如交线和一个在墙上与其成45°的向量,她们不正交。

    所以如果两个子空间在某个非零向量处相交,就绝不是正交子空间。因为这个向量同属于两个子空间。

    所以两个子空间正交的前提是,她们一定不会交于某个非零向量。

    四个基本子空间的正交性

    四个基本子空间中,有

    1. 行空间和零空间正交
    2. 列空间和左零空间正交

    证明

    行空间正交于零空间。

    我们知道零空间是

    [Ax=left( egin{array}{c} ext{row1} \ ext{row2} \ ... \ ext{rown} \ end{array} ight).(x)=left( egin{array}{c} 0 \ 0 \ ... \ 0 \ end{array} ight) ]

    这个式子就告诉我们,(A) 的每行点乘 (x) 结果为0. (x)(A) 的所有行都正交。

    但行空间是行向量的所有的线性组合,我们还需要验证 (x) 是否垂直于她们的线性组合。

    假设行空间可以表示为

    [c1.(row1)+c2(row2)=c(row1+row2) ]

    [egin{align} &c(row1+row2).x\ =&c1.(row1).x+c2.(row1).x\ =&0 end{align} ]

    所以行空间中的行向量都垂直于零空间中的 (x) .证毕。

    行空间和零空间正交,表示把 (n) 维空间分割为两个子空间。

    列空间和左零空间正交的证明与上面类似。只需要从 (A^Ty=0) 出发即可。

    列空间和左零空间正交,表示把 (m) 维空间分割为两个子空间。

    补充

    以三维空间中的正交子空间为例。

    假设有两条过原点的直线,相互垂直,她们可以构成行空间和零空间吗?

    不能,因为两个子空间都是一维,维数和不等于3.

    例如:

    [A=left( egin{array}{ccc} 1 & 2 & 5 \ 2 & 4 & 10 \ end{array} ight) ]

    可得,(n=3)(r=1),故 (dim[N(A)]=2),零空间是垂直于向量 ((1quad 2 quad5)) 的一个平面。在微积分中,((1quad 2 quad5)) 是这个平面的一个法向量。

    需要强调一点的是:

    对于行空间正交于零空间,正交子空间的维数之和等于整个空间的维数。我们把这称为 (n) 维空间的正交补。

    这表示零空间包含所有垂直于行空间的向量,而不只是部分。

    Ax=b的无解情况

    无解情况

    (Ax=b) 的无解的时候怎么求解?

    这种情况很常见,比如 (A) 是长方矩阵,(m>n) ,右侧的取值在大部分的情况下方程组是无解的。

    联系实际情况,假设测量脉搏,为了测量准确性可能测量多次,在多次测量时,结果可能有一些是“坏数据”。(比如护士太漂亮心跳加速)但我们不知道哪一个数据有问题。而且其中也包含很多有用数据。

    我们需要做的是,把“坏数据”筛选出来。这正是线性代数需要解决的问题。

    用代数语言描述,就是我们得到一些方程,如何求出她们的最优解?

    其中一种方法就是不断去掉一些方程,直到出现有解情况。但这种方法并不完美,因为我们无法知道哪些是有用数据,哪些是无用的,我们希望利用所有的测量值求出“最优解”,从而得到最完整的信息。

    解决方法

    (Ax=b) 无解,把两边同时乘以 (A^T) ,就能得到“好方程”:

    [A^TAhat{x}=A^Tb ]

    这个方程是本章核心内容。

    注意,(hat{x}) 与原本 (x) 是不同的。

    对于 (A^TA) ,我们知道,(n*m) 乘以 (m*n) 可以得到一个 (n*n) 方阵,而且是对称方阵,因为 ((A^TA)^T=A^TA^{TT}=A^TA) .

    我们希望求解 (hat{x}) .

    (A^TA) 性质

    [left( egin{array}{cc} 1 & 1 \ 1 & 2 \ 1 & 5 \ end{array} ight)left( egin{array}{c} x_1 \ x_2 \ end{array} ight)= left( egin{array}{c} b_1 \ b_2 \ b_3 \ end{array} ight) ]

    只有 (b)(A) 的列空间中才有解。但在实际情况,可能不能得偿所愿。

    我们采用上面方法,(A) 乘以 (A^T) ,我们可以得到

    [left( egin{array}{ccc} 1 & 1 & 1 \ 1 & 2 & 5 \ end{array} ight).left( egin{array}{cc} 1 & 1 \ 1 & 2 \ 1 & 5 \ end{array} ight)=left( egin{array}{cc} 3 & 8 \ 8 & 30 \ end{array} ight) ]

    (left( egin{array}{cc} 3 & 8 \ 8 & 30 \ end{array} ight)) 是可逆方阵。

    但注意结果并不一定是可逆的。比如

    [left( egin{array}{ccc} 1 & 1 & 1 \ 3 & 3 & 3 \ end{array} ight).left( egin{array}{cc} 1 & 3 \ 1 & 3 \ 1 & 3 \ end{array} ight)=left( egin{array}{cc} 3 & 9 \ 9 & 27 \ end{array} ight) ]

    (A^TA) 重要性质:

    [rankquad ofquad A^TA = rankquad ofquad A ]

    [N(A^TA)=N(A) ]

    (A^TA) 可逆,当且仅当 (A) 的各列线性无关。

    下节课证明。

  • 相关阅读:
    构造函数析构函数为什么没有返回值?
    std::tr1::shared_ptr 使用的一点体会
    C++完美实现Singleton模式
    为什么C++中空类和空结构体大小为1?
    同时判断CPU是大端还是小端完全实现
    优先级反转
    linux sed 批量替换字符串
    禁掉Apache web server签名 How to turn off server signature on Apache web server
    Python中用format函数格式化字符串的用法
    Eclipse (indigo) 中安装jdk包并运行Maven
  • 原文地址:https://www.cnblogs.com/ckk-blog/p/13642629.html
Copyright © 2020-2023  润新知