前言
本次博客记录各个基础矩阵分解的线索由来,方便日后回忆
正文
-
LU分解
LU分解来源于高斯消元法,在手动计算消元法时,第一步是将 A A A矩阵通过初等行变换变为上三角 U U U,初等行变换对应于一组初等变换矩阵 E n … E 3 E 2 E 1 E_n\dots E_3E_2E_1 En…E3E2E1,将这一组矩阵看作 L L L, 即:
E n … E 3 E 2 E 1 A = U L − 1 A = U A = L U \begin{align} E_n\dots E_3E_2E_1 A&=U\\ L^{-1}A&=U\\ A&=LU \end{align} En…E3E2E1AL−1AA=U=U=LU -
QR分解
QR分解来源于斯密特正交化的计算过程. Q矩阵是一组由规范(模长为1)正交向量组成的规范正交矩阵. 在斯密特正交化计算的过程中后一个向量要减去它在前面所有向量上的投影部分,这也是 R R R矩阵中0的由来。比如:
R = [ r 11 r 12 … 0 r 22 … 0 0 … 0 … … ] R = \begin{bmatrix}r_{11}& r_{12} & \dots\\ 0 & r_{22} & \dots \\ 0 & 0 & \dots \\ 0 & \dots & \dots \end{bmatrix} R= r11000r12r220……………
r 11 r_{11} r11对应于一个进行正交化的向量,不需要减去向其他向量投影的分量,第一列下面全为0; r 12 , r 22 r_{12},r_{22} r12,r22对应于第二个进行正交化的向量,需要向第一个向量投影,并减去投影分量,故只有前两个值不为0, 其余为0. 其他类似.
更进一步写出QR的分量形式
Q = [ q 11 q 12 q 13 … q 1 n q 21 q 22 q 23 … q 2 n q 31 q 32 q 33 … q 3 n … … … … … q n 1 q n 2 q n 3 … q n n ] = [ q 1 , q 2 , … , q n ] Q R = Q [ r 11 r 12 r 13 … r 1 n 0 r 22 r 23 … r 2 n 0 0 r 23 … r 2 n … … … … … 0 0 0 … r n n ] Q=\begin{bmatrix}q_{11}& q_{12} & q_{13} & \dots & q_{1n}\\ q_{21} & q_{22} & q_{23} & \dots & q_{2n}\\ q_{31} & q_{32} & q_{33} & \dots & q_{3n}\\ \dots & \dots & \dots & \dots & \dots\\ q_{n1} & q_{n2} & q_{n3} & \dots & q_{nn} \end{bmatrix} =[q_1,q_2,\dots,q_n]\\ QR = Q \begin{bmatrix} r_{11} & r_{12} & r_{13} & \dots & r_{1n}\\ 0 & r_{22} & r_{23} & \dots & r_{2n}\\ 0 & 0 & r_{23} & \dots & r_{2n}\\ \dots & \dots & \dots & \dots & \dots\\ 0 & 0 & 0 & \dots & r_{nn}\\ \end{bmatrix} Q= q11q21q31…qn1q12q22q32…qn2q13q23q33…qn3……………q1nq2nq3n…qnn =[q1,q2,…,qn]QR=Q r1100…0r12r220…0r13r23r23…0……………r1nr2nr2n…rnn
Q R QR QR矩阵乘积写开后会发现与斯密特正交化的关系
q 1 r 11 = b 1 q 1 r 12 + q 2 r 22 = b 2 − b 2 ( b 2 T b 1 / b 2 T b 2 ) q_1 r_{11} = b_1\\ q_1r_{12}+q_2r_{22} = b_2-b_2( b^T_2b_1/b_2^Tb_2) q1r11=b1q1r12+q2r22=b2−b2(b2Tb1/b2Tb2)
正负号等可以写进 r i j r_{ij} rij中,不会造成影响. -
谱分解: 针对对称矩阵 A T = A A^T=A AT=A (Hermite矩阵是更进一步了) 有: eigenvalue 是实数(证明是通过反证法给出 λ ˉ = λ \bar{\lambda}=\lambda λˉ=λ完成),eigenvector正交(不同的特征值对应的特征向量必定正交,而对于相同的特征值可以通过斯密特正交化方法选取出正交的特征向量).
上述文字部分的公式证明如下:
(1) eigenvalue 为Real: A A A为对称矩阵
A x = λ x A\boldsymbol{x} = \lambda\boldsymbol{x} Ax=λx
对于 λ \lambda λ可能为实数也可能为虚数,假设为虚数 a + i b a+ib a+ib, 其共轭为 λ ˉ = a − i b \bar{\lambda}=a-ib λˉ=a−ib, 对于 A A A阵为实数的对称阵.(复数就是酉矩阵了).
A x = λ x A\boldsymbol{x}=\lambda\boldsymbol{x} Ax=λx 有: A x ˉ = λ ˉ x ˉ A\bar{\boldsymbol{x}}=\bar{\lambda}\bar{x} Axˉ=λˉxˉ,转置有:
x ˉ T A = x ˉ T λ ˉ \bar{x}^TA = \bar{x}^T\bar{\lambda} xˉTA=xˉTλˉ,
分别左乘 x ˉ 与 \bar{x}与 xˉ与右乘 x x x有:
x ˉ T A x = x ˉ T λ x \bar{x}^TAx=\bar{x}^T\lambda{x} xˉTAx=xˉTλx
x ˉ T A x = x ˉ T λ ˉ x \bar{x}^TAx=\bar{x}^T\bar{\lambda}x xˉTAx=xˉTλˉx
对比可知 λ \lambda λ为实数.
(2) 不同eigenvlaue的eigenvector必定正交: 假设 λ 1 ≠ λ 2 \lambda_1\neq \lambda_2 λ1=λ2,
( λ 1 x ) T y = ( A x ) T y = x T A y = x T A y = x T λ 2 y (\lambda_1 x)^Ty=(Ax)^Ty=x^TAy=x^TAy=x^T\lambda_2y (λ1x)Ty=(Ax)Ty=xTAy=xTAy=xTλ2y, λ 1 ≠ λ 2 \lambda_1 \neq \lambda_2 λ1=λ2,有 x T y = 0 x^Ty=0 xTy=0.
(3) 相同特征值的特征向量可以通过舒尔定理完成:
正交矩阵(酉矩阵) 可以相似于一个上(下)三角矩阵: 通过选取特征值与特征向量构造低阶次的酉矩阵逐步完成。构造的过程就证明了可通过构造以及斯密特正交化的方法实现对于相同特征值的正交特征向量的选取。例题可见《矩阵分析》P116,史荣昌著。Strang给出的解析是:
Schur定理给出: A = Q T Q − 1 A=QTQ^{-1} A=QTQ−1, 有 T = Q T A Q T=Q^TAQ T=QTAQ,转置还是 Q T A Q Q^TAQ QTAQ, T为三角阵,当 A T = A A^T=A AT=A, T T T就只可以是对角且为 Λ \Lambda Λ, 即 A = Q Λ Q − 1 A=Q\Lambda Q^{-1} A=QΛQ−1, 即 A A A有n个正交的特征向量于 Q Q Q中. 此处成立的话即使 A A A有重根特征值也会导出它可以通过斯密特正交化构造出相互正交的向量.
(如果不满足那就会引出约当块的相关知识了)
A = Q Λ Q T = [ q 1 , q 2 , … , q n ] [ λ 1 λ 2 … λ n ] [ q 1 T q 2 T ⋮ q n T ] = λ 1 q 1 q 1 T + λ 2 q 2 q 2 T + … A = Q\Lambda Q^T=[q_1, q_2,\dots, q_n]\begin{bmatrix} \lambda_1 & & & \\ & \lambda_2 & & \\ & & \dots & \\ & & & \lambda_n \end{bmatrix} \begin{bmatrix} q^T_1\\ q^T_2\\ \vdots\\ q^T_n \end{bmatrix} \\= \lambda_1q_1q^T_1+ \lambda_2q_2q^T_2 + \dots A=QΛQT=[q1,q2,…,qn] λ1λ2…λn q1Tq2T⋮qnT =λ1q1q1T+λ2q2q2T+…
-
SVD分解
A = U Λ V T A=U\Lambda V^T A=UΛVT其本质是将一行空间中的正交单位向量映射到一个正交单位列向量空间中.
A V = U Λ A [ v 1 , v 2 , v 3 , … , v r ] = [ u 1 , u 2 , … , u r ] Λ AV = U\Lambda\\ A [v_1,v_2,v_3,\dots, v_r]= [u_1,u_2,\dots, u_r]\Lambda AV=UΛA[v1,v2,v3,…,vr]=[u1,u2,…,ur]Λ
上式左侧就是行向量的线性组合.同时对于与行向量空间正交的 A A A的零空间基向量记作 v r + 1 , … , v n v_{r+1},\dots,v_{n} vr+1,…,vn. 对应的 A v r + 1 = σ u r + 1 = 0 u r + 1 Av_{r+1}=\sigma u_{r+1} = 0 u_{r+1} Avr+1=σur+1=0ur+1 也对 U U U 补充有 u r + 1 , … , u m u_{r+1},\dots,u_{m} ur+1,…,um ,
A V = U Λ A [ v 1 , v 2 , … , v r , v r + 1 , … , v n ] T = [ u 1 u 2 u 3 … u m ] [ σ 1 σ 2 0 ] AV = U\Lambda\\ A [v_1,v_2,\dots,v_r, v_{r+1},\dots, v_n]^T = \begin{bmatrix} u_1 & u_2 & u_3 & \dots & u_m \end{bmatrix} \begin{bmatrix} \sigma_1 & & &\\ & \sigma_2 && \\ & & & \\ & & & 0 \\ \end{bmatrix} AV=UΛA[v1,v2,…,vr,vr+1,…,vn]T=[u1u2u3…um] σ1σ20 [ v 1 , v 2 , v 3 , … , v r ] T [v_1,v_2,v_3,\dots, v_r]^T [v1,v2,v3,…,vr]T是行向量空间的规范正交基
[ v r + 1 , … , v n ] T [v_{r+1},\dots,v_n]^T [vr+1,…,vn]T是 N ( A ) N(A) N(A)零空间的规范正交基
[ u 1 , u 2 , u 3 , … , u r ] [u_1,u_2,u_3,\dots, u_r] [u1,u2,u3,…,ur]是列向量空间的规范正交基
[ u r + 1 , … , v m ] [u_{r+1},\dots,v_m] [ur+1,…,vm]是 N ( A T ) N(A^T) N(AT)的规范正交基
所以SVD的作用是将 行向量空间的规范正交基映射到列向量空间的规范正交基上,将 N ( A ) N(A) N(A)映射到 N ( A T ) N(A^T) N(AT)上.计算过程:
A T A = V Σ T U T U Σ V T = V Σ T Σ V T A^TA=V\Sigma^TU^TU\Sigma V^T=V\Sigma^T\Sigma V^T ATA=VΣTUTUΣVT=VΣTΣVT
V Σ T Σ V = Q Λ Q T V\Sigma^T\Sigma V=Q\Lambda Q^T VΣTΣV=QΛQT此处还要注意 A A A往往是高瘦矩阵(来自最小二乘法),即 A X = 0 AX=0 AX=0无解, X T A T A X = ∣ ∣ A X ∣ ∣ 2 > 0 X^TA^TAX=||AX||^2 >0 XTATAX=∣∣AX∣∣2>0,
A T A = V Σ T Σ V T A^TA=V\Sigma^T\Sigma V^T ATA=VΣTΣVT 计算过程也可以看作是对 ( A T A ) (A^TA) (ATA)这个矩阵求特征值与特征向量,完成后按照 A V = Σ U AV=\Sigma U AV=ΣU关系求出 U U U 从而完成SVD分解.
SVD中奇异值来自于 A T A A^TA ATA或者 A A T AA^T AAT这两个对称矩阵 -
SVD的应用: 伪逆的计算
矩阵逆的层层一般化: A − 1 A = I A^{-1}A=I A−1A=I-> ( A T A ) − 1 A T A = I (A^TA)^{-1}A^TA=I (ATA)−1ATA=I, A T ( A T A ) − 1 A = I A^T(A^TA)^{-1}A=I AT(ATA)−1A=I-> A + A = I A^{+}A=I A+A=I, 最初定义的逆,左右逆,伪逆.
最初定义的逆(2-sides inverse): A m × n A_{m\times n} Am×n
A − 1 A = A A − 1 = I A^{-1}A=AA^{-1}=I A−1A=AA−1=I
rank r = m = n左逆 ( A T A ) − 1 A T (A^TA)^{-1}A^T (ATA)−1AT
由来: 假设rank(A)=r=n, n<m, A此时必定为列满秩. 即各列线性无关,即零空间 N ( A ) = { 0 } N(A)=\{0\} N(A)={0}. 四个基本子空间(行空间及其正交补 N ( A ) N(A) N(A),列空间及其正交补 N ( A T ) N(A^T) N(AT),何为正交补?=> N ( A ) N(A) N(A)中的向量与行空间的向量内积为0…) ,中行空间及其正交补 N ( A ) N(A) N(A)只剩下行空间. 此时 A X = b AX=b AX=b要么一个解要么无解.
A T A A^TA ATA的维度为 ( n × m ) ( m × n ) = n × n (n\times m )(m\times n) = n\times n (n×m)(m×n)=n×n. A T A A^TA ATA可以看作是列向量作内积并求和,又知列满秩,列向量线性无关,此时 A T A A^TA ATA必定正定, A T A A^TA ATA可逆。 故 ( A T A ) − 1 (A^TA)^{-1} (ATA)−1存在。再考虑 A A A, 只需在 A A A前面补上 A T A^T AT,写出来有: [ ( A T A ) − 1 A T ] A = I [(A^TA)^{-1}A^T \ ] A=I [(ATA)−1AT ]A=I
右逆 A T ( A A T ) − 1 A^T(AA^T)^{-1} AT(AAT)−1
由来: 假设rank(A)=r=m ,m<n, A此时必定为行满秩,即各行线性无关,即 A X = b AX=b AX=b有无穷多解,且自由变量为 n − m n-m n−m个,四个基本子空间中列空间及其正交补 N ( A T ) N(A^T) N(AT)只剩下列空间。
A A T AA^T AAT的维度为 ( m × n ) ( n × m ) = m × m (m\times n)(n \times m) = m\times m (m×n)(n×m)=m×m. A A T AA^T AAT是行向量作内积并求和,也必定正交. ( A A T ) − 1 (AA^T)^{-1} (AAT)−1存在,再考虑 A A A, 在 A A A的右边补上 A T A^T AT有:
A [ A T ( A A T ) − 1 ] = I A[A^T(AA^T)^{-1}]=I A[AT(AAT)−1]=IA A A的逆的一个计算意义是:
A X = A [ x 11 x 12 … x 1 n x 21 x 22 … x 2 n … … … … ] = A [ X 1 X 2 … ] AX=A\begin{bmatrix} x_{11}& x_{12} & \dots &x_{1n}\\ x_{21}& x_{22} & \dots & x_{2n}\\ \dots & \dots & \dots & \dots\\ \end{bmatrix} = A \begin{bmatrix} X_1\\ X_2\\ \dots \end{bmatrix} AX=A x11x21…x12x22…………x1nx2n… =A X1X2…
逆存在,则 A A A所代表的变换操作是一一映射(将不同点映射到不同点上!!!),即将位于行空间中的 X X X变换为 A X = b AX=b AX=b列空间 s p a n { b } span\{b\} span{b}中。只是左右逆与最初定义的逆使得列空间中的向量映射回行空间时操作是不同的。伪逆 : 最一般的情况 r < m,n
此时它的计算需要通过SVD完成.
A = U Σ V T = U [ σ 1 σ 2 ] V T A = U \Sigma V^T = U\begin{bmatrix} \sigma_1 & & & \\ & \sigma_2 & & \\ & \end{bmatrix}V^T A=UΣVT=U σ1σ2 VT
A + = U Σ + V T = U [ 1 / σ 1 1 / σ 2 ] V T A^{+} = U \Sigma^{+} V^T = U\begin{bmatrix} 1/\sigma_1 & & & \\ & 1/\sigma_2 & & \\ & \end{bmatrix}V^T A+=UΣ+VT=U 1/σ11/σ2 VT
伪逆解的一个应用: 机器人零空间控制
q ˙ = J + x ˙ \dot{q} = J^{+}\dot{x} q˙=J+x˙
q ˙ \dot{q} q˙为机器人的关节速度向量, x ˙ \dot{x} x˙为机器人在任务空间下的速度向量.
而零空间优化的来源: (不一定准确) 参考文献
动图来源: 参考文献
q ˙ = J + x ˙ + ϕ ˙ − ϕ ˙ = J + x ˙ + ϕ ˙ − J + J ϕ ˙ = J + x ˙ + ( I − J + J ) ϕ ˙ \begin{split} \dot{q} &= J^{+}\dot{x} +\dot{\phi}-\dot{\phi} \\ &=J^{+}\dot{x}+\dot{\phi}-J^+J\dot{\phi}\\ &= J^{+}\dot{x}+(I-J^{+}J)\dot{\phi} \end{split} q˙=J+x˙+ϕ˙−ϕ˙=J+x˙+ϕ˙−J+Jϕ˙=J+x˙+(I−J+J)ϕ˙
一个实际例子假若
J + J = [ 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] J^+J=\begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0\\ \end{bmatrix} J+J= 100000010000001000000100000000000000
I − J + J = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 ] I-J^+J=\begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 0 & 0 & 1\\ \end{bmatrix} I−J+J= 000000000000000000000000000010000001
( I − J + J ) ϕ ˙ = [ 0 0 0 0 ϕ ˙ 5 ϕ ˙ 6 ] (I-J^+J)\dot{\phi}=\begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ \dot{\phi}_5\\ \dot{\phi}_6 \end{bmatrix} (I−J+J)ϕ˙= 0000ϕ˙5ϕ˙6
此时有:
[ q ˙ 1 q ˙ 2 q ˙ 3 q ˙ 4 q ˙ 5 q ˙ 6 ] = J + x ˙ + [ 0 0 0 0 ϕ ˙ 5 ϕ ˙ 6 ] \begin{bmatrix} \dot{q}_1\\ \dot{q}_2\\ \dot{q}_3\\ \dot{q}_4\\ \dot{q}_5\\ \dot{q}_6\\ \end{bmatrix} = J^{+}\dot{x}+\begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ \dot{\phi}_5\\ \dot{\phi}_6 \end{bmatrix} q˙1q˙2q˙3q˙4q˙5q˙6 =J+x˙+ 0000ϕ˙5ϕ˙6
等式两边同乘以 J J J有:
J q ˙ = x ˙ = J J + x ˙ + J [ 0 0 0 0 ϕ ˙ 5 ϕ ˙ 6 ] = x ˙ + [ 0 0 0 0 ω y ω z ] J\dot{q}=\dot{x}=JJ^+\dot{x}+J\begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ \dot{\phi}_5\\ \dot{\phi}_6 \end{bmatrix} = \dot{x}+\begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ \omega_y\\ \omega_z\\ \end{bmatrix} Jq˙=x˙=JJ+x˙+J 0000ϕ˙5ϕ˙6 =x˙+ 0000ωyωz
由此可知在零空间中的 ϕ ˙ \dot{\phi} ϕ˙并不会影响末端执行器的 x ˙ , y ˙ , z ˙ , ω x \dot{x},\dot{y},\dot{z},\omega_x x˙,y˙,z˙,ωx然而却会影响最后两个维度的速度. 表现为类似动图中末端执行器u
2023.6.29补充一个线性代数例子在机器人学中的应用
[
u
1
u
2
u
3
u
4
]
=
[
−
l
−
w
1
−
1
l
+
w
1
1
l
+
w
1
−
1
−
l
−
w
1
1
]
[
ω
b
z
v
b
x
v
b
y
]
\begin{bmatrix} u_1\\ u_2\\ u_3\\ u_4\\ \end{bmatrix}=\begin{bmatrix} -l-w & 1 & -1\\ l+w & 1 & 1 \\ l+w & 1 & -1\\ -l-w & 1 & 1\\ \end{bmatrix} \begin{bmatrix} \omega_{bz}\\ v_{bx}\\ v_{by}\\ \end{bmatrix}
u1u2u3u4
=
−l−wl+wl+w−l−w1111−11−11
ωbzvbxvby
上式在Modern Robotics的视频教程中, Kevin提到会出现小车打滑的现象. 经过与实验室博士师兄的指正, 发现是如下情况导致:
L
u
=
L
[
1
0
0
0
1
0
0
0
1
0
0
0
]
V
b
L\mathbf{u}=L\begin{bmatrix}1& 0 & 0 \\ 0 & 1 & 0\\ 0 & 0 & 1\\ 0 & 0 & 0\end{bmatrix}\mathcal{V}_b
Lu=L
100001000010
Vb,
u
′
=
[
1
0
0
0
1
0
0
0
1
0
0
0
]
V
b
=
A
V
b
\mathbf{u'}=\begin{bmatrix}1& 0 & 0 \\ 0 & 1 & 0\\ 0 & 0 & 1\\ 0 & 0 & 0\end{bmatrix}\mathcal{V}_b=\mathbf{A}\mathcal{V}_b
u′=
100001000010
Vb=AVb, 此时
r
a
n
k
(
A
∣
u
)
<
r
a
n
k
(
A
)
rank(A|u) < rank(A)
rank(A∣u)<rank(A), 方程无解. 其物理含义为: 当
u
1
′
,
u
2
′
,
u
3
′
u'_1,u'_2,u'_3
u1′,u2′,u3′为0, 而
u
4
′
u'_4
u4′不为0时,
V
b
\mathcal{V}_b
Vb只能为0. 注意:
u
i
′
u'_i
ui′是经过解耦后的变量, 当其放回原式,
u
′
\mathbf{u}'
u′会经由
L
L
L重新组合, 得到一个各个分量均有值的
u
\mathbf{u}
u. 物理含义即为即使
u
\mathbf{u}
u有值,
V
b
\mathcal{V}_b
Vb为0, 出现打滑.
从另一方面看,
[
1
0
0
0
0
1
0
0
0
0
1
0
]
u
′
=
V
b
\begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ \end{bmatrix} \mathbf{u}' = \mathcal{V}_b
100010001000
u′=Vb
此时 上式有解, 且解不为1 ,因为
r
a
n
k
(
A
∣
V
b
)
=
r
a
n
k
(
A
)
≤
4
rank(A|\mathcal{V}_b)= rank(A) \leq 4
rank(A∣Vb)=rank(A)≤4 (number of row in
u
′
\mathbf{u}'
u′). 即存在零空间.