多视图几何的数学基础知识的掌握(1)--线性代数相关

前言

  为了学习多视图几何,有很多数学的基础需要去补充,目前为止,博主能力有限,有错误的地方则欢迎指正,本系列博文和多视图几何笔记将会一同编写(如果我没编写完,或许我也没看懂或者做实验太忙了,见谅)。

  系列博文参考的有慕尼黑工业大学(TUM)的课程,图灵出版社出版的《线性代数应该这样学》第三版和部分高校的教材。

  为了这一系列博文的基础性质,我们省略掉了一些较为基础又总所周知的知识,比如Cn\mathbb{C}^nRn\mathbb{R}^n的定义,集合的定义等。大多数采用的是众所周知的符号。

  部分在多几何视图大概无用的知识点(子集和交并和直和等等),不会填入(如果有需要会在后面加)。

多视图几何的数学基础知识的掌握(1)

线性空间

  集合VV被称为线性空间或者在域R\mathbb{R}上的向量空间,仅当它在向量加法

+:V×VV+:V\times V \rightarrow V

和标量乘法

:R×VV\cdot:\mathbb{R}\times V \rightarrow V

例如αV1+βV2V,V1,V2V,α,βR\alpha V_1+\beta V_2 \in V,\forall V_1,V_2 \in V,\forall \alpha,\beta \in \mathbb{R}

上封闭。

  关于加法(+)(+),它形成一个交换群(存在零元素 0,逆元素V-V)。 标量乘法遵循R\mathbb{R}的结构:α(βu)=(αβ)u\alpha(\beta u)=(\alpha\beta) u。 乘法和加法遵循分配律:

(α+β)V=αV+βV(\alpha+\beta) V = \alpha V+\beta V

α(v+u)=αv+αu\alpha ({\mathrm v}+\mathrm u) = \alpha \mathrm v+\alpha \mathrm u

  这里我们需要给出向量空间关于在大学中较为严谨的定义。

线性空间的定义

  给定一个域FF(R\mathbb{R}C\mathbb{C}),一个非空集合VV叫做FF上的一个向量空间(vector space)也叫线性空间,如果定义了两种运算:向量加法+和纯量乘法(乘号通常省略不写),其中加法是V×VV\times VVV的一个映射,纯量乘法是F×VF\times VVV的一个映射,并满足以下几个性质:

  1. 交换律x,yV\forall x,y \in V,满足x+y=y+xx+y=y+x
  2. 结合律x,y,zV\forall x,y,z\in V,满足(x+y)+z=x+(y+z)(x+y)+z=x+(y+z)
  3. 存在零元素x+0=xx+0=x
  4. 存在逆元素xV,yV\forall x \in V,\exist y\in V,满足x+y=0x+y=0
  5. 数因子分配律x,yV,kF\forall x,y\in V,\forall k \in F,满足k(x+y)=kx+kyk(x+y)=kx+ky
  6. 分配律xV,k,lF\forall x\in V,\forall k,l\in F​,满足,(k+l)x=kx+lx,(k+l)x=kx+lx​
  7. 乘法结合律xV,k,lF\forall x\in V,\forall k,l\in F满足k(lx)=(kl)xk(lx)=(kl)x
  8. 乘法单位元xV\forall x\in V满足1x=x1x=x

小题目

  假定R+\mathbb{R}^+为正实数组成的集合,其加法和乘法运算定义为

mn=mn,km=mkm \boxplus n=mn,k \circ m=m^k

验证它是R+\mathbb{R}^+上的线性空间。

证明

  要证明是线性空间,则证明加法和数乘封闭,所以满足那八条性质才可。

  结合律(mn)p=mnp=m(np)=m(np)(m \boxplus n) \boxplus p=mnp=m \boxplus (np)=m\boxplus (n\boxplus p)

    :mn=mn=nm=nmm\boxplus n=mn=nm=n\boxplus m

  存在零元素:可以发现是1是零元素,因为m=m×1=mm\boxplus = m\times1=m

  存在逆元素:可以发现逆元素是1m\frac{1}{m},因为m1m=m×1m=1m\boxplus \frac{1}{m}=m\times \frac{1}{m}=1

  数因子分配律k(mn)=k(mn)=(mn)k=mknk=(km)(lm)k \circ (m\boxplus n)=k \circ (mn)=(mn)^k=m^kn^k=(k \circ m)\boxplus (l \circ m)

  分配律(kl)m=mk+l=mkml=(km)(lm)(k \boxplus l)\circ m=m^{k+l}=m^km^l=(k \circ m)\boxplus (l\circ m)

  乘法结合律:k(lm)=kml=(ml)k=mlk=mkl=(kl)mk \circ (l \circ m)=k \circ m^l=(m^l)^k=m^{lk}=m^{kl}=(kl) \circ m

  乘法单位元:1m=m1=m1 \circ m=m^1=m

  所以满足8条性质,故而是在R+\mathbb{R}^+上线性空间。

举个例子

  V=Rn,v=(x1,x2,xn)TV = \mathbb{R}^n,\mathrm v=\rm (x_1,x_2,x_n)^T

  nn维实数空间Rn\mathbb{R}^nnn维复数空间Cn\mathbb{C}^n,其中加法数乘运算为向量的加法和数乘元素

  次数不超过nn的多项式全体P[x]n={p=i=0naixia0,a1,...,anR}P[x]_n=\{p=\sum\limits_{i=0}^na_ix^i | a_0,a_1,...,a_n\in \mathbb{R} \}

子空间

  向量空间VV的子集WVW\sub V称为子空间,仅当0W0\in WWW++\cdot(对于αR\forall \alpha \in \mathbb{R})运算下是封闭的。

具体来说,子空间仅WVW\sub V这个条件是不够的,还需要满足下面的条件:

  1. 存在零元素0W0\in W
  2. 加法封闭v,wW\forall v,w\in W,满足v+wWv+w \in W
  3. 标量乘法封闭aF,uUa\in F,\forall u\in U,满足auUau\in U
举个例子
  • bFb\in F,则{(x1,x2,x3,x4)F4:x3=5x4+b}\{(x_1,x_2,x_3,x_4)\in F^4:x_3=5x_4+b\}F4F^4的子空间当且仅当b=0b=0
  • 区间[0,1][0,1]上全体实值连续函数的集合是R[0,1]R^{[0,1]}上的子空间
  • 0{0}VV的最小子空间,VVVV的最大子空间,空集不是VV的子空间,因为子空间必须是向量空间,而向量空间至少包含一个元素,即加法单位元

线性独立性和基

  一组向量集S={v1,...,vk}VS=\{v_1,...,v_k\}\sub V的张成子空间,是由这些向量的所有线性组合形成的子空间:

span(S)={vVv=i=1kαivi}{\rm span}(S) = \left\{v\in V | v=\sum\limits_{i=1}^k\alpha_iv_i\right\}

在以下情况下,集合S被称为线性独立

i=1kαivi=0αi=0i\sum\limits_{i=1}^k\alpha_iv_i=0 \Rightarrow \alpha_i=0 \forall i

  换句话说如果没有一个矢量可以表示为剩余矢量的线性组合。 否则该集合被称为线性相关的。

  一组向量B={v1,...,vn}B=\{v_1,...,v_n\}​如果它是线性无关的并且如果它可以张成向量空间VV​,则称为VV​的一组基。基是线性独立向量的最大集。

对于基的定义要知道两点:

  • {v1,...,vn}\{v_1,...,v_n\}是线性无关的
  • x\forall x都能由{v1,...,vn}\{v_1,...,v_n\}的组合线性表示,即x=i=1kβivix=\sum\limits_{i=1}^k\beta_i v_i

基的性质

  设BBBB^\prime为线性空间VV的两个基数。

  1. BBBB^\prime包含相同数量的向量。 该数字nn称为空间VV的维数(换句话说线性空间V中线性无关向量组所含向量的最大数量nn,称为VV的维数,记做dimV=n\dim V=n)。

  2. 任何矢量vVv\in V可以唯一地表示为B={b1,...,bn}B=\{b_1,...,b_n\}中的基矢量的线性组合:

    v=i=1nαibiv=\sum\limits_{i=1}^n \alpha_i b_i

  3. 特别地,BB的所有向量可以表示为另一个基向量组biBb_i^\prime\in B^\prime的线性组合:

    bI=j=1nαjibjb_I^\prime=\sum\limits_{j=1}^n \alpha_{ji}b_j

   该基变换的系数αji\alpha_{ji}可以组合在矩阵AA中。令B(b1,...,bn)B\equiv(b_1,...,b_n)B(b1,...,bn)B^\prime \equiv(b_1^\prime,...,b_n^\prime)作为基向量的矩阵,我们可以写:B=BAB=BA1B^\prime=BA \Leftrightarrow B=B^\prime A^{-1}

向量的内积

  在向量空间上,可以定义内积(点积,dt.:\rm dt.:,标积 \neq 乘法):

<,>:V×VR<\cdot,\cdot>:V\times V \rightarrow \mathbb{R}

其中有如下属性:

1. 线性性<u,αv+βw>=α<u,v>+β<u,w><u,\alpha v+\beta w>= \alpha<u,v>+\beta<u,w>
2. 对称性<u,v>=<v,u><u,v>=<v,u>​,注意是在R\mathbb{R}​上才成立
3. 正定性<v,v>0<v,v>\ge 0<v,v>=0v=0<v,v>=0 \Leftrightarrow v=0
4. 第一个位置的可加性<u+v,w>=<u,w>+<v,w><u+v,w>=<u,w>+<v,w>
5. 第一个位置的齐次性:λR,u,vV\forall \lambda\in \mathbb{R},\forall u,v \in V,满足<λu,v>=λ<u,v><\lambda u,v>=\lambda<u,v>

  标量积被认为是一种范数

:VR,v=<v,v>|\cdot|:V \rightarrow \mathbb{R},||v||=\sqrt{<v,v>}

λF,λv=λv\forall \lambda \in F,||\lambda v||=|\lambda| ||v||

  和一个度量指标

d:V×VR,d(v,w)=vw=<vw,vw>d:V\times V \rightarrow \mathbb{R},d(v,w)=||v-w||=\sqrt{<v-w,v-w>}

  用于测量长度和距离,使V成为度量空间(metric space)。 由于度量由标量积VV引起,因此称为希尔伯特空间(Hilbert space)。

在数学中,希尔伯特空间是欧几里德空间的一个推广,其不再局限于有限维的情形。与欧几里德空间相仿,希尔伯特空间也是一个内积空间,其上有距离和角的概念(及由此引申而来的正交性与垂直性的概念)。此外,希尔伯特空间还是一个完备的空间,其上所有的柯西序列等价于收敛序列,从而微积分中的大部分概念都可以无障碍地推广到希尔伯特空间中。希尔伯特空间为基于任意正交系上的多项式表示的傅立叶级数傅立叶变换提供了一种有效的表述方式,而这也是泛函分析的核心概念之一。希尔伯特空间是公式化数学和量子力学的关键性概念之一。

  现在我们就来说说内积的具体模样

规范和诱导内积

  当V=RV=\mathbb{R}时,我们可以为规范基B=InB=I_n定义规范内积:

<x,y>=xTy=i=1nxiyi<x,y>=x^Ty=\sum\limits_{i=1}^nx_iy_i

  它引出了标准的L2范数欧几里德范数

x2=xTx=x12+...+xn2||x||_2=\sqrt{x^Tx}=\sqrt{x_1^2+...+x_n^2}

  由B=BA1B=B^\prime A^{-1},应用基变换AA得到新基BB^\prime,然后由下式给出在新坐标系下的x,yx^\prime,y^\prime的规范内积:

<x,y>=xTy=(Ax)T(Ay)=xTATAY<x,y>ATA<x,y>=x^Ty=(Ax^\prime)^T(Ay^\prime)=x^{\prime T}A^TAY^{\prime} \equiv <x^\prime,y^\prime>_{A^TA}

Bx=(BA1)x=B(A1x)=Bxx=AxB x =(B^\prime A^{-1})x=B^\prime(A^{-1}x)=B^\prime x^\prime \Rightarrow x=Ax^\prime

  后一种乘积被称为矩阵A的诱导内积

  两个 vvww向量正交当且仅<v,w>=0<v,w>=0

值得注意的是:

  • 0正交于VV中的任意向量
  • 0是VV中唯一一个与自身正交的向量
勾股定理(毕达哥拉斯定理)

  设vvuuVV的正交向量,则u+v2=u2+v2||u+v||^2=||u||^2+||v||^2

证明

u+v2=<u+v,u+v>=<u,u>+<u,v>+<v,u>+<v,v>=u2+v2||u+v||^2 =<u+v,u+v>\\=<u,u>+<u,v>+<v,u>+<v,v>\\=||u||^2+||v||^2

正交分解

  设u,vVu,v\in Vv0v \neq 0,令c=<u,v>v2,w=u<u,v>v2vc=\frac{<u,v>}{||v||^2},w=u-\frac{<u,v>}{||v||^2}v,则<w,v>=0<w,v>=0u=cv+wu=cv+w

证明

  设u,vVu,v\in Vv0v \neq 0,把uu写成vv的标量倍加上一个正交于vv的向量ww,若下图所示:

多视图几何的数学基础知识的掌握(1)--线性代数相关

  令cFc\in F表示一个标量,则

u=cv+(ucv)u=cv+(u-cv)

  要取合适cc使得vv正交于(ucv)(u-cv),即

0=<ucv,v>=<u,v>cv2c=<u,v>v20=<u-cv,v>=<u,v>-c||v||^2 \Rightarrow c=\frac{<u,v>}{||v||^2}

  因此我们得到

u=cv+(ucv)=<u,v>v2v+u<u,v>v2v)u=cv+(u-cv)=\frac{<u,v>}{||v||^2}v+(u-\frac{<u,v>}{||v||^2}v)

  令w=u<u,v>v2vw=u-\frac{<u,v>}{||v||^2}v​,即可证得。

柯西-施瓦茨不等式

  设u,vVu,v\in V,则<u,v>u  v|<u,v>|\le ||u||\;||v||,等号成立当且仅当u,vu,v之一是另一个的标量倍。

证明

  若v=0v=0,则不等式两端都等于0。

因为所有向量都与零向量正交,零向量的模为0

  假设v0v\neq 0,考虑正交分解式子:

u=<u,v>v2v+wu=\frac{<u,v>}{||v||^2}v+w

  由于ww正交于vv,由于勾股定理有:

u2=<u,v>v22+w2=<u,v>v2+w2<u,v>2v2\begin{aligned} ||u||^2 & =\left\lVert \frac{<u,v>}{||v||^2}\right\rVert^2+||w||^2 \\ &= \frac{|<u,v>|}{||v||^2} +||w||^2 \\ & \ge \frac{|<u,v>|^2}{||v||^2}\end{aligned}

  然后两端同时乘以v2||v||^2,再开平方即可证明。

  显然w=0w=0时取等号,而当w=0w=0时由于正交分解式子可以得到u=cvu=cv,即uuvv的标量倍(或说vvuu的标量倍)。

三角不等式

  设u,vVu,v\in V,则u+vu+v|u|+v||\le ||u||+||v||,等号成立当且仅当u,vu,v之一是另一个的非负标量倍。

考虑三角形两边之和大于第三边求证

平行四边形恒等式

  设u,vVu,v\in V,则u+v2+uv2=2(u2+v2)||u+v||^2+||u-v||^2=2(||u||^2+||v||^2)

证明:

u+v2+uv2=<u+v,u+v>+<uv,uv>=u2+v2+<u,v>+<v,u>+u2+v2<u,v><v,u>=2(u2+v2)\begin{aligned} ||u+v||^2+||u-v||^2 & = <u+v,u+v>+<u-v,u-v> \\ & =||u||^2+||v||^2+<u,v>+<v,u> \\& \quad\quad+||u||^2+||v||^2-<u,v>-<v,u> \\ & = 2(||u||^2+||v||^2) \end{aligned}

克罗内克乘积(Kronecker Product)和矩阵的拼接(stack)

  给出两个矩阵ARm×nA\in \mathbb{R}^{m\times n}BRk×lB\in R^{k\times l},通过下面的方式可以定义克罗内克内积ABA\otimes B:

AB(a11Ba1nBam1BamnB)Rmk×nlA\otimes B \equiv \begin{pmatrix} a_{11}B &\cdots & a_{1n}B \\ \vdots & \ddots & \vdots \\ a_{m1}B & \cdots & a_{mn}B \end{pmatrix}\in \mathbb{R}^{mk\times nl}

  在Matlab中可以通过下面代码实现

C=kron(A,B)

例子

[1231][0321]=[1×01×32×02×31×21×12×22×13×03×31×01×33×23×11×21×1]=[0306214209036321]\begin{bmatrix} 1&2\\3&1 \end{bmatrix}\otimes\begin{bmatrix} 0&3\\2&1 \end{bmatrix}=\begin{bmatrix} 1\times0 &1\times3 & 2\times 0 & 2\times 3\\1\times2&1\times1 & 2\times2 & 2\times1 \\3\times0 & 3\times3 & 1\times 0 & 1\times3 \\ 3\times2 & 3\times1 & 1\times2 &1\times 1 \end{bmatrix}=\begin{bmatrix} 0 &3 & 0&6\\2&1& 4 & 2 \\0 & 9 & 0 & 3 \\ 6 & 3 & 2 &1 \end{bmatrix}

  给定一个矩阵ARm×nA\in \mathbb{R}^{m\times n},它的拼接AsA^s是通过拼接它的nn列向量a1, ,anRma_1,\cdots,a_n\in \mathbb{R}^m获得:

As(a1an)RmnA^s \equiv \begin{pmatrix}a_1\\ \vdots \\ a_n \end{pmatrix}\in \mathbb{R}^{mn}

python中的numpy有stack函数,除此之外还有hstack等等

例子

(123456789123)s=(159261372483)\begin{pmatrix}1&2&3&4 \\5 & 6 & 7& 8 \\ 9 & 1 & 2&3\end{pmatrix}^s=\begin{pmatrix} 1\\5\\9 \\2 \\6\\1\\3\\7\\2\\4\\8\\3 \end{pmatrix}

  这些符号允许重写代数表达式,例如:

uTAv=(vu)TAsu^TAv=(v \otimes u)^TA^s

证明就不证明了,有需要评论里说,我举例子验证和进行维数的判断,没任何问题,该式恒成立。

线性变换和矩阵

  线性代数研究线性空间之间线性变换的性质。 由于这些可以用矩阵表示,线性代数研究矩阵的性质。 两个线性空间VVWW之间的线性变换LL是映射LLVWV \rightarrow W这,如下所示:

  • L(x+y)=L(x)+L(y),x,yVL(x+y)=L(x)+L(y),\forall x,y\in V
  • L(αx)=αL(x),xV,αRL(\alpha x)=\alpha L(x),\forall x\in V,\alpha \in R

  由于线性,LL对空间VV的作用由其对VV的基矢量的作用唯一地定义。在规范基础上{e1,...,en}\{e_1,...,e_n\}, 我们有:

L(x)=Ax,xVL(x)=Ax,\forall x\in V

其中

A=(L(e1),...,L(en))Rm×nA=(L(e_1),...,L(e_n)) \in \mathbb{R}^{m\times n}

  所有的m×nm\times n的实矩阵用M(m,n)\mathcal{M}(m,n)表示。 在m=nm = n的情况下,令M(m,n)M(n)\mathcal{M}(m,n)\equiv \mathcal{M}(n)在域R上形成环(ring),即它在矩阵乘法和求和下闭合(引出了群的概念)。

  我们给出线性映射的一些规范化定义。

规范化定义

  设v1,..,vnv_1,..,v_nVV的基,w1,...,wnWw_1,...,w_n\in W。则存在唯一一个线性映射L:VWL:V\rightarrow W(有些书本会写成TT)使得对于任意的j=1,...,nj=1,...,n都有

Lvj=wjLv_j = w_j

对于证明就不证明了,有需要的话。留言评论我再修改博文添加。此博文只是用于实际的计算机处而非数学的课程博文

单射(injective)

  当Lv=LuLv=Lu时必有u=vu=v,则称线性映射L:VWL:V\rightarrow W是单射。

  换句话说,单射映射将不同输入映射成不同输出,即uvu\neq vTuTvTu\neq Tv

线性群GL(n)GL(n)SL(n)SL(n)

  存在形成一组的某些线性变换群(Group)。

  博主将群定义为一种集合加上一种运算的代数结构,当然这也可能并不规范,下面给出较为规范的定义。

一个群是具有操作:G×GG\circ:G\times G\rightarrow G的一个集合GG,它满足下面的性质:

  1. 封闭性g1g2G,g1,g2Gg_1\circ g_2 \in G,\forall g_1,g_2\in G
  2. 结合律(g1g2)g3=g1(g2g3),g1,g2,g3G(g_1\circ g_2)\circ g_3 = g_1 \circ (g_2 \circ g_3),\forall g_1,g_2,g_3\in G
  3. 幺(零)元eG:eg=ge=g,gG\exist e\in G:e\circ g= g \circ e = g,\forall g\in G
  4. 逆元:g1G:gg1=g1g=e,gG\exist g^{-1}\in G:g\circ g^{-1} = g^{-1}\circ g=e,\forall g\in G

示例

  所有可逆(非奇异)n×nn\times n实矩阵形成关于矩阵乘法的群。 该群称为一般线性群GL(n)GL(n)。 它由所有AMA\in \mathcal{M}组成,都满足:

det(A)0\det (A) \neq 0

  所有满足AGL(n)A\in GL(n)矩阵,其det(A)=1\det (A)=1形成一个群,被称为特殊线性群SL(n)SL(n)。而且值得一说的是,AA的逆也在这个群中,即det(A1)=det(A)1\det(A^{-1})=det(A)^{-1}

后期会涉及到李群和李代数,他们也是群的一种

群的矩阵表达

  如果存在单射变换(injective transformation),则组G具有矩阵表达或者被认为是矩阵群:

R:GGL(n)R:G\rightarrow GL(n)

  它保留了G的群结构,即逆(inverse)和组合(composition)由映射保留:

R(e)=In×n,R(gh)=R(g)R(h),g,hGR(e)=I_{n\times n},R(g\circ h)=R(g)R(h),\forall g,h\in G

  这样的映射RR被称为群同态(Group homomorphism)。

  关于群同态的描述可以参看维基百科,中文版英文版

中文版维基百科需要翻墙,没有条件还是去英文版吧,原汁原味。

  值得注意的,这群的矩阵表示有什么作用?

  使用群的矩阵表示的想法是让我们可以允许通过查看相应矩阵群的属性来分析更抽象的群。

示例

  我们知道对象的旋转形成一个群,因为存在零元素(无旋转)和逆元素(反向旋转),并且旋转的任何连接也是旋转(围绕不同的轴)。 如果旋转由相应的矩阵表示,则研究旋转群的属性更容易。

这就是旋转矩阵的群的引出,比如SO(2),SO(3)SO(2),SO(3)

仿射变换群A(n)A(n)

  我们使用矩阵AGL(n)A\in GL(n)和一个向量bRnb\in \mathbb{R}^n定义仿射变换L:RnRnL:\mathbb{R}^n\rightarrow \mathbb{R}^n:

L(x)=A(x)+bL(x)=A(x)+b

  所有这种仿射变换的集合称为维度nn的仿射群,由A(n)A(n)表示。

  除非b=0b = 0,否则上面定义的LL不是线性映射。通过引入齐次坐标来表示xRn\rm x\in \mathbb{R}^n(x1)Rn+1\begin{pmatrix}\rm x\\1\end{pmatrix}\in \mathbb{R}^{n+1}LL成为线性映射:

L:Rn+1Rn+1;(x1)(Ab01)(x1)L:\mathbb{R}^{n+1}\rightarrow \mathbb{R}^{n+1};\begin{pmatrix}\rm x \\ 1\end{pmatrix}\mapsto \begin{pmatrix}A & b \\0 & 1\end{pmatrix}\begin{pmatrix}\rm x \\ 1\end{pmatrix}

  具有AGL(n)A \in GL(n)bRnb\in \mathcal{R}^{n}的矩阵(Ab01)\begin{pmatrix}A & b \\0 & 1\end{pmatrix}称为仿射矩阵。 它是GL(n+1)GL(n+1)的一个元素。 仿射矩阵形成GL(n+1)GL(n+1)的子群。

留个思考题,为什么是子群呢?答案我就不揭秘了。(感觉很简单)

正交群O(n)O(n)

  如果一个矩阵AM(n)A\in \mathcal{M}(n)保留了内积性质就被称为是正交矩阵:

<Ax,Ay>=<x,y>,x,yRn<Ax,Ay>=<x,y>,\forall x,y \in \mathbb{R}^n

  感觉这样定义不够严谨。不过有些书是这么定义正交矩阵的。

  如果一个n×nn\times n的实矩阵AA满足

AAT=E,ATA=EAA^T=E,A^TA=E

  其中EE是单位矩阵,ATA^T表示是矩阵AA的转置矩阵,则称该矩阵AA为正交矩阵。

值得注意的是这样矩阵具有以下性质:

  • ATA^T也是正交矩阵
  • AA的各行是单位向量且两两正交,列也是如此
  • detA=1  or  1\det A = 1 \;or\; -1
  • AT=A1A^T=A^{-1}

  接下来说正交群。

  所有正交矩阵的集合形成正交群O(n)O(n),其是GL(n)GL(n)的子群。 对于正交矩阵RR,我们有

<Rx,Ry>=xTRTRy=xTy,x,yRn<Rx,Ry>=x^T R^T R y=x^Ty,\forall x,y\in \mathbb{R}^{n}

  因此,我们必然有RTR=RRT=IR^TR=RR^T=I,换句话说:

O(n)={RGL(n)RRT=I}O(n)=\{R\in GL(n)|RR^T=I\}

  谢天谢地,博主终于到此引出了正交群的概念。

  上述恒等式表明,对于任何正交矩阵R,我们得到det(RTR)=(det(R))2=det(I)=1\det(R^TR)=(\det (R))^2=\det (I)=1,使得det(R){±1}\det(R)\in \{\pm1\}

  具有det(R)=±1\det(R)=\pm1O(n)O(n)的子群称为特殊正交群SO(n)SO(n)SO(n)=O(n)    SL(n)SO(n) = O(n) \;\cap \;SL(n)。 特别地,SO(3)SO(3)是所有三维旋转矩阵的组。

回顾:O(n)O(n)是正交群,SL(L)SL(L)是特殊线性群(前面有讲述)

欧式群E(n)E(n)

  从Rn\mathbb{R}^nRn\mathbb{R}^n的欧几里德变换LL由正交矩阵RO(n)R\in O(n)和向量TRnT\in \mathbb{R}^n定义:

L:RnRn;xRx+TL:\mathbb{R}^n\rightarrow \mathbb{R}^n;x\mapsto Rx+T

  所有这些变换的集合称为欧几里德群E(n)E(n)。 它是仿射群A(n)的子组。 通过齐次坐标表示,我们得到:

E(n)={(RT01)RO(n),TRn}E(n)=\left\{\begin{pmatrix}R & T \\ 0 &1\end{pmatrix}\Bigg| R\in O(n) ,T\in \mathbb{R}^n\right\}

  如果RSO(3)R\in SO(3)(即det(R)=1\det (R)=1),则我们得到特殊欧式群SE(3)SE(3)。 特别地,SE(3)SE(3)代表R3\mathbb{R}^3中的刚体运动。

群的范围总结

  让我们来总结一下

SO(n)O(n)GL(n)SO(n)\sub O(n)\sub GL(n)

SE(n)E(n)A(n)GL(n+1)SE(n)\sub E(n) \sub A(n) \sub GL(n+1)

值域(range),扩张空间(span),零空间(Null Space)和核(Kernel)

  设ARm×nA\in R^{m\times n}是定义从Rn\mathbb{R}^nRm\mathbb{R}^m的线性映射的矩阵。 A的值域(range,即为列空间)或扩张空间(span,也是张成的空间)定义为Rm\mathbb{R}^m的子空间,可以通过A“可达”的空间:

range(A)={yRmxRn:Ax=y}{\rm range}(A) = \{y\in \mathbb{R}^m | \exist x\in \mathbb{R}^n:Ax=y\}

  矩阵A的值域由其列向量的张成的空间。

  矩阵A的零空间或核由被映射为零向量的向量集xRnx\in \mathbb{R}^n给出:

null(A)ker(A)={xR3Ax=0}{\rm null}(A) \equiv {\rm ker}(A) = \{x\in \mathbb{R}^3| Ax=0\}

  矩阵A的零空间由与其行向量正交的向量给出。

  用matlab的代码写如下:

Z=null(A)

  在研究线性方程的解时,值域和零空间的概念是有用的。 方程Ax=bAx=b有一个解xR3x\in \mathbb{R}^3当且仅当brange(A)b\in {\rm range}(A)。 而且,只有当ker(A)=0{\rm ker}(A)={0}时,该解才是唯一解。 实际上,如果xsx_sAx=bAx=bxoker(A)x_o \in {\rm ker}(A)的解,则xs+xox_s+x_o也是解:A(xs+xo)=Axs+Axo=bA(x_s+x_o)=Ax_s+Ax_o=b

可能有人把之称之为通解一般解

  矩阵求解不想额外扩展,如果有人想要额外扩展,我可能需要开个新博文详细讲解,但具体来说,我们需要记求解的时候是需要增广矩阵或者克拉默法则来求解的,另外有以下的几点总结(矩阵求解有需要的人下面博文评论,我就另外开一篇博文描述)。

  总结需要矩阵的秩的内容,如果不懂的,先跳过,后面讲解了矩阵的秩。

  • rank(A)<rank(A,b){\rm rank}(A) < {\rm rank}(A,b),则方程组无解
  • rank(A)=rank(A,b)=r=n{\rm rank}(A) = {\rm rank}(A,b) = r = n,则方程组有唯一解
  • rank(A)=rank(A,b)=r<n{\rm rank}(A) = {\rm rank}(A,b) = r < n,则方程组有无穷多解

对于有解的情况:

  • det(A)=0{\rm det}(A)=0,则无穷多解
  • det(A)0{\rm det}(A)\neq 0,则存在唯一解

矩阵的秩(Rank)

  我们把矩阵的值域的维度称为矩阵的秩,即:

rank(A)=dim(range(A)){\rm rank}(A) = {\rm dim}({\rm range}(A))

矩阵ARm×nA\in \mathbb{R}^{m\times n}的秩有如下的性质:

  • rank(A)=ndim(ker(A)){\rm rank}(A)=n-{\rm dim}({\rm ker}(A))

  • 0rankAA线min{m,n}0\le rank(A)等于A的线性独立行(或列)向量的最大数量。\le \min\{m,n\}

  • rank(A){\rm rank}(A)等于AA的线性独立行(或列)向量的最大数量。

  • rank(A){\rm rank}(A)是A的非零子式的最高阶,其中阶数为kk的子式(minor)是 AAk×kk\times k的子矩阵

  • 西尔维斯特不等式(Sylvester’s inequality):

    BRn×kB\in \mathbb{R}^{n\times k},然后ABRm×kAB\in \mathbb{R}^{m\times k},而且

    rank(A)+rank(B)nrank(AB)min{rank(A),rank(B)}{\rm rank}(A)+{\rm rank}(B)-n \le {\rm rank}(AB) \le \min\{{\rm rank}(A),{\rm rank}(B)\}

  • 对于任何非奇异矩阵CRm×mC \in \mathbb{R}^{m\times m}DRn×nD \in \mathbb{R}^{n\times n},我们有

    rank(A)=rank(CAD){\rm rank(A)}={\rm rank}(CAD)

  matlab中求矩阵的秩:

d=rank(A)

特征值和特征向量

  让ACn×nA\in \mathbb{C}^{n\times n}是复矩阵。一个非零向量vCnv\in \mathbb{C}^n被称为AA 的(右)特征向量,仅当它满足下面条件时:

Av=λv,λCAv=\lambda v,\lambda\in \mathbb{C}

  λ\lambda被称为AA的特征值。

  类似的,如果对于λC\lambda\in \mathbb{C},有vTA=λvTv^TA=\lambda v^T,则称为AA的左特征向量。

  矩阵A的谱(spectrum)σ(A)\sigma(A)是其所有特征值的集合。

  用matlab求特征值和特征向量:

[V,D]=eig(A)

  其中DD是包含特征值的对角矩阵,VV是矩阵,其列是对应的特征向量,使得AV=VDAV = VD

特征值和特征向量的性质

ARn×nA\in \mathbb{R}^{n\times n},然后

  1. 对于一些λR\lambda \in \mathbb{R},满足Av=λvAv=\lambda v,接着存在一个左特征向量ηRnηTA=ληT\eta \in \mathbb{R}^n:\eta^TA=\lambda\eta^T。因此σ(A)=σ(AT)\sigma(A)=\sigma(A^T)

    想想将ηTA=ληT\eta^TA=\lambda\eta^T两边都转置

  2. 与不同特征值相关联的矩阵AA的特征向量是线性无关的。

  3. 所有特征值σ(A)\sigma(A)是特征多项式方程det(λIA)=0{\rm det}(\lambda I - A)=0的根。因此det(A)\det (A)等于所有特征值的乘积(其中一些特征值可能多次出现)。

  4. 对于一些非奇异矩阵,如果B=PAP1B=PAP^{-1},则σ(B)=σ(A)\sigma(B)=\sigma(A)

  5. 如果λC\lambda \in \mathbb{C}是一个特征值,那么它的共轭λC\overline{\lambda} \in \mathbb{C}也是一个特征值。 因此对于实矩阵AA来说,σ(A)=σ(A)\sigma(A)=\overline{\sigma(A)}.

对称矩阵

  如果ST=SS^T=S,则矩阵SRn×nS\in \mathbb{R}^{n\times n}称为对称的。如果xTSx0x^TSx\ge 0,则对称矩阵SS称为半正定矩阵(由S0S \ge 0S0S \succeq 0表示)。 如果xTSx>0,x0x^TSx>0,\forall x \neq 0,则称SS为正定(用S>0S>0S0S \succ 0表示)。

SRn×nS\in \mathbb{R}^{n\times n}是实对称矩阵,则:

  1. SS的所有特征值都是实数。例:σ(S)R\sigma(S)\in \mathbb{R}
  2. 对应于不同特征值λiλj\lambda_i\neq \lambda_jSS的特征向量viv_ivjv_j是正交的。
  3. SS总是存在nn个正交的特征向量,它们构成Rn\mathbb{R}^n的基。 设V=(v1,...,vn)O(n)V=(v_1,...,v_n)\in O(n)是这些特征向量的正交矩阵,并且=diag(λ1,...,λn)\land = {\rm diag}(\lambda_1,...,\lambda_n)是特征值组成的对角矩阵。 然后我们有S=VVTS=V\land V^T
  4. 如果所有特征值都是正的(非负),则SS是正(半正)定的。
  5. SS为半正定且λ1,λn\lambda_1,\lambda_n是最大和最小的特征值。 那么λ1=maxx=1<x,Sx>\lambda_1=\max_{|x|=1}<x,Sx>λn=minx=1<x,Sx>\lambda_n=\min_{|x|=1}<x,Sx>

矩阵的范数

  有很多方法可以在矩阵ARm×nA\in \mathbb{R}^{m\times n}的空间(space)上定义范数。 它们可以基于AA操作的域空间上的范数来定义。 特别地,矩阵A的诱导2范数被定义为

A2maxx2=1Ax2=maxx2=1<x,ATAx>||A||_2\equiv \max\limits_{|x|_2=1}|Ax|_2=\max\limits_{|x|_2=1}\sqrt{<x,A^TAx>}

  或者,可以将AAFrobeniusFrobenius范数(FF范数)定义为:

Afi,jaij2=trace(ATA)||A||_f \equiv \sqrt{\sum\limits_{i,j}a_{ij}^2}=\sqrt{{\rm trace}(A^TA)}

国内书籍可能写成AF||A||_F

  请注意,这些范数通常不一样。 由于矩阵ATAA^TA是对称的并且是半正定的,我们可以将它对角化为:ATA=Vdiag(σ12,...,σn2)VTA^TA=V {\rm diag}(\sigma_1^2,...,\sigma_n^2)V^T,其中σ12σi20\sigma_1^2\ge\sigma_i^2\ge 0。这导致:

A2=σ1||A||_2=\sigma_1

而且

Af=trace(ATA)=σ12+...+σn2||A||_f=\sqrt{{\rm trace}(A^TA)}=\sqrt{\sigma_1^2+...+\sigma_n^2}

值得注意的矩阵的迹有如下性质:

  • Tr(A)=Tr(AT){\rm Tr}(A)={\rm Tr}(A^T)
  • Tr(ABC)=Tr(CAB)=Tr(BCA){\rm Tr}(ABC)={\rm Tr}(CAB)={\rm Tr}(BCA)
  • aR,a=Tr(a)a\in \mathbb{R},a={\rm Tr}(a)

斜对称矩阵

  如果AT=AA^T=-A,矩阵ARn×nA\in \mathbb{R}^{n\times n}称为斜对称(skew-symmetric)或反对称矩阵(anti-symmetric)。

  如果AA是实斜对称矩阵,则

  1. AA的所有特征值都是零或纯虚数,即形式为iwiw ,其中i2=1,wRi^2=-1,w\in \mathbb{R}

  2. 存在正交矩阵V,使得

    A=VVTA=V \land V^T

    其中\land是分块对角矩阵

    =diag{A1,...,Am,0,...,0}\land = {\rm diag}\{A_1,...,A_m,0,...,0\},其中实对称矩阵AiA_i有如下形式:

    Ai=(0aiai0)R2×2,i=1...,mA_i = \begin{pmatrix}0 & a_i \\ -a_i & 0 \end{pmatrix}\in \mathbb{R}^{2\times 2},i=1...,m

      特别地,任何斜对称矩阵的秩是偶数。

    例子-计算机视觉中的斜对称

      在计算机视觉中,一个常见的斜对称矩阵由矢量uR3u\in \mathbb{R}^3的帽算子(hat operator)给出:

    u^=(0u3u2u30u1u2u10)R3×3\hat{u}=\begin{pmatrix} 0 & -u_3 & u_2\\ u_3 & 0 & -u_1 \\ -u_2 & u_1 & 0 \end{pmatrix}\in \mathbb{R}^{3\times 3}

      这是从矢量R3\mathbb{R}^3的空间到R3×3\mathbb{R}^{3\times 3}中的斜对称矩阵的空间的线性算子。

  特别地,矩阵u^\hat{u}具有以下特性

u^v=u×v\hat{u} v = u\times v

  其中×\times表示R3\mathbb{R}^3中的标准向量积。 对于u0u \ne 0,我们得到rank(u^)=2{\rm rank}(\hat{u})=2并且由uu扩展的u^\hat{u}的零空间,因为u^u=uTu^=0\hat{u}u=u^T\hat{u}=0

奇异值分解(SVD)

  我们研究了矩阵的许多属性,例如秩,值域,零空间和矩阵的诱导范数。 许多这些属性可以通过所谓的奇异值分解(SVD)来获得。

  SVD:singular value decomposition

SVD可以看作是非方阵的特征值和特征向量的推广。

   SVD的计算在数值上是良态的(well-conditioned)。 它对于求解线性代数问题非常有用,例如矩阵求逆,秩计算,线性最小二乘估计,投影和固定秩近似。

  在实践中,奇异值分解和特征值分解都被广泛使用。

  博主认为有一篇关于SVD的描述还是不错,可以参考该文SVD分解及几何意义

  要说明奇异值分解,首先我们需要说一说什么是奇异值。

奇异值(singular values)

  这里我们不给出很严谨的数学定义(如果有需要则在评论中说明,我会添加)

  我们说奇异值是指给定一个矩阵ARm×nA\in \mathbb{R}^{m\times n},我们令q=min{m,n}q=\min\{m,n\},假设rank(A)=r{\rm rank}(A)=r

  那么当我们求AHAA^HA的特征值中非负特征值的算术平方根叫做奇异值

SVD的代数推导

  让我们定义一个矩阵ARm×nA\in \mathbb{R}^{m\times n},其中m0rank(A)=pm\ge 0,{\rm rank}(A)=p。接着存在如下性质:

  • URm×pU \in \mathbb{R}^{m\times p},其列是正交的
  • VRn×pV\in \mathbb{R}^{n\times p},其列是正交的
  • ΣRp×pΣ=diag(σ1,...,σp)\Sigma \in \mathbb{R}^{p\times p},\Sigma={\rm diag}(\sigma_1,...,\sigma_p),其中σ1...σp\sigma_1 \ge ... \ge \sigma_p,

以至于可得到:

A=UΣVTA=U\Sigma V^T

  注意,这概括了特征值分解。 而后者用正交变换VV分解对称方阵AA

A=VVTA=V \land V^T

  其中VO(n)=diag{λ1,...,λn}V \in O(n),\land = {\rm diag}\{\lambda_1,...,\lambda_n\}

  SVD允许利用具有正交列的两个变换UUVV来分解秩pp的任意(非方阵)矩阵AA,如上所示。 然而,我们将看到SVD基于对称方阵的特征值分解。

SVD分解的证明

  给定一个矩阵ARm×nA\in \mathbb{R}^{m\times n},其中mnm \ge n而且rank(A)=p{\rm rank}(A)=p,则矩阵

ATARn×nA^TA\in \mathbb{R}^{n\times n}

  是对称的,半正定的。 因此,它可以被分解为具有的非负特征值σ12...σn20\sigma_1^2\ge ...\ge \sigma_n^2\ge0的正交特征向量v1,...,vnv_1,...,v_nσ1\sigma_1被称为奇异值。

  由于ker(ATA)=ker(A){\rm ker}(A^TA)={\rm ker}(A)range(ATA)=range(AT){\rm range}(A^TA)={\rm range}(A^T)

  加上已知span{v1,...,vp}=range(AT){\rm span}\{v_1,...,v_p\}={\rm range}(A^T)span{vp+1,...,vn}=ker(A){\rm span}\{v_{p+1},...,v_n\}={\rm ker(A)}

  然后让

ui=1σiAviAvi=σiui,i=1,...,pu_i=\frac{1}{\sigma_i}Av_i \Leftrightarrow Av_i = \sigma_iu_i,i=1,...,p

  而uiRmu_i\in \mathbb{R}_m是正交的:

<ui,uj>=1σiσj<Avi,Avj>=1σiσj<vi,ATAvj>=δij<u_i,u_j>=\frac{1}{\sigma_i\sigma_j}<Av_i,Av_j>=\frac{1}{\sigma_i\sigma_j}<v_i,A^TAv_j>=\delta_{ij}

  然后完成{ui}i=1p\{u_i\}_{i=1}^pRm\mathbb{R}_m的基{ui}i=1m\{u_i\}_{i=1}^m。由于Avi=σiuiAv_i=\sigma_iu_i,我们可以得到:

A(v1,...,vn)=(u1,...,um)(σ10000000σ00000)A(v_1,...,v_n)=(u_1,...,u_m)\begin{pmatrix}\sigma_1 & 0&0&\cdots&0 \\ 0& \ddots& 0 &\vdots&0 \\ 0& \cdots& \sigma &\vdots&0\\ \vdots & \cdots & \cdots & \vdots & 0 \\ 0 &\cdots & \cdots & 0 & 0 \end{pmatrix}

  它具有AV~=U~Σ~A \widetilde{V} = \widetilde{U}\widetilde{\Sigma}的形式,因此:

A=U~Σ~V~TA=\widetilde{U}\widetilde{\Sigma} \widetilde{V}^T

  现在简单地删除所有乘以零奇异值U~\widetilde{U}的列和V~T\widetilde{V}^T的行,我们得到形式A=UΣVTA=U\Sigma V^T,其中URm×pU\in \mathbb{R}^{m\times p}VRn×pV \in \mathbb{R}^{n\times p}

  在matlab中,使用以下代码可以求矩阵的SVD分解

[U,S,V]=svd(A)

SVD的几何解释

  对于ARn×nA\in \mathbb{R}^{n\times n},奇异值分解A=UΣVtA=U\Sigma V^t使得U=(u0,...,un)U=(u_0,...,u_n)的列和V=(v1,...,vn)V=(v_1,...,v_n)形成Rn\mathbb{R}^n的正交基。 如果通过变换AA将点xRnx \in \mathbb{R}^n映射到点yRny \in \mathbb{R}^n,则以UU的基为底得到的坐标yy通过对角矩阵Σ\SigmaVV的基为底的xx坐标相关:每个坐标仅通过相应的奇异值进行缩放:

y=Ax=UΣVTxUTy=ΣVTxy=Ax=U\Sigma V^Tx \Leftrightarrow U^Ty=\Sigma V^Tx

  矩阵AA将单位球体映射为具有半轴长为σiui\sigma_iu_i的椭圆体。

  我们将αVTx\alpha\equiv V^Tx是点xx在以VV为基下的系数,同理yy在以UU为基下的系数被记为βUTy\beta\equiv U^Ty。圆的所有点都满足x22=iαi2=1|x|_2^2=\sum\limits_{i}\alpha_i^2=1。按照上面的推算可以得到βi=σiαi\beta_i=\sigma_i\alpha_i。 因此对于在球体上的点:

iai2=iβo2αi2=1\sum\limits_{i}a_i^2=\sum\limits_{i}\frac{\beta_o^2}{\alpha_i^2}=1

  其中指出,变换点位于沿着以UU为基的轴取向的椭圆体上。

  本博主推荐一篇博文,关于讲解SVD的几何意义

广义(Moore Penrose)逆

  对于某些二次矩阵,如果det(A)=0\det (A)=0,则可以定义逆矩阵。所有可逆矩阵的集合形成群GL(n)GL(n)

  还可以为任意(非二次)矩阵ARm×nA\in \mathbb{R}^{m\times n}定义(广义)逆(也称为伪逆)(dt。:伪逆)。 如果其SVD为A=UΣVTA=U\Sigma V^T,则伪逆定义为:

A=VΣUTA^{\dagger}=V\Sigma^{\dagger}U^T

其中:

Σ=(Σ11000)n×m\Sigma^{\dagger}=\begin{pmatrix}\Sigma_1^{-1} & 0\\ 0 &0\end{pmatrix}_{n\times m}

国内的书对于广义逆的上标可能直接是++而不是\dagger

其中Σ1\Sigma_1是非零奇异值的对角矩阵。

  在Matlab中这样求解出广义(伪)逆:

X = pinv(A)

  特别地,伪逆能以与二次可逆矩阵的逆相似的方式使用:

AAA=A,AAA=AAA^{\dagger}A=A,A^{\dagger}AA^{\dagger}=A^{\dagger}

  线性方程Ax=bAx = b,其中秩rmin{m,n}r\le \min\{m,n\}的矩阵ARm×nA\in \mathbb{R}^{m\times n}可以有多个或没有解。 xmin=Abx_{min}=A^{\dagger}bAxb2||Ax-b||^2中最小范数x||x||的极小化变量(minimizers)。

详细的说。

  当矩阵AA的列数多余行数的时候,使用使用伪逆求解线性方程是众多可能解法中的一种。特别地,x=Ax=A^{\dagger} 是方程所有可行解中欧几里得范数x2||x||_2最小的一个。

  当矩阵A 的行数多于列数时,可能没有解。在这种情况下,通过伪逆得到的xx
使得AxAxbb 的欧几里得距离Axb2||Ax-b||_2 最小。

总结

  本次博文到这里介绍,介绍了线性代数的知识,只要是感觉在计算机视觉尤其是多几何视图中需要的。