机器人相关技术所涉及的数学理论【个人学习总结】
目录
本总结主要针对机器人方向,包括但是不限于机器人运动与导航、SLAM、刚体动力学等方面所涉及的数学理论。之后或许还会包括研究生课程上所涉及的部分数学学习。
一、矩阵求导之矩阵迹函数相关公式
在看这篇将矩阵求导总结的非常好的知乎文章时,发现涉及的矩阵迹的性质还很不熟悉,但是网上总结得还很少。比如下面这个公式
d
f
=
t
r
d
(
A
B
)
=
t
r
d
A
⋅
B
+
t
r
B
⋅
d
A
df = trd(AB)=trdA\cdot B+trB\cdot dA
df=trd(AB)=trdA⋅B+trB⋅dA
我并不太清楚其推导(是他书写错了)。
矩阵迹公式总结 1
-
若A和B均为 n × n n\times n n×n的矩阵,则
t r ( A ± B ) = t r ( A ) ± t r ( B ) . tr(A\pm B)=tr(A)\pm tr(B)\,. tr(A±B)=tr(A)±tr(B). -
c为复常数,则
t r ( c A ) = c t r ( A ) tr(cA)=ctr(A)\, tr(cA)=ctr(A) -
若A和B均为 n × n n\times n n×n的矩阵,c1和c2为复常数,则有
t r ( c 1 A ± c 2 B ) = c 1 t r ( A ) ± c 2 t r ( B ) tr(c_1A\pm c_2B)=c_1tr(A)\pm c_2tr(B) tr(c1A±c2B)=c1tr(A)±c2tr(B) -
转置: t r ( A T ) = t r ( A ) . tr(A^T)=tr(A)\,. tr(AT)=tr(A).
-
复数共轭: t r ( A ∗ ) = [ t r ( A ) ] ∗ . tr(A^*)=[tr(A)]^*\,. tr(A∗)=[tr(A)]∗.
-
复共轭转置: t r ( A H ) = [ t r ( A ) ] ∗ . tr(A^H)=[tr(A)]^*\,. tr(AH)=[tr(A)]∗.
-
若A为 m × n m\times n m×n的矩阵,B为 n × m n\times m n×m矩阵,则
t r ( A B ) = t r ( B A ) tr(AB)=tr(BA) tr(AB)=tr(BA)
更进一步地,有:
t r ( A B C D ) = t r ( B C D A ) = t r ( C D A B ) = t r ( D A B C ) tr(ABCD)=tr(BCDA)=tr(CDAB)=tr(DABC) tr(ABCD)=tr(BCDA)=tr(CDAB)=tr(DABC) -
若A和B均为 n × n n\times n n×n的矩阵,且B非奇异,有
t r ( B A B − 1 ) = t r ( B − 1 A B ) = t r ( A ) tr(BAB^{-1})=tr(B^{-1}AB)=tr(A) tr(BAB−1)=tr(B−1AB)=tr(A) -
若A为一个 m × n m\times n m×n的矩阵,则
t r ( A H A ) = 0 ⟺ A = O m × n tr(A^HA)=0\iff A=O_{m\times n} tr(AHA)=0⟺A=Om×n -
x H A x = t r ( A x x H ) x^HAx=tr(Axx^H) xHAx=tr(AxxH)和 y H x = t r ( x y H ) y^Hx=tr(xy^H) yHx=tr(xyH).
-
分块矩阵的迹:
[ A B C D ] = t r ( A ) + t r ( D ) \begin{bmatrix} A & B\\ C & D \end{bmatrix}=tr(A)+tr(D) [ACBD]=tr(A)+tr(D)
其中, A ∈ C m × m , B ∈ C m × n , C ∈ C n × m , D ∈ C n × n . A\in C^{m\times m},B\in C^{m\times n},C\in C^{n\times m},D\in C^{n\times n}\,. A∈Cm×m,B∈Cm×n,C∈Cn×m,D∈Cn×n. -
t r ( A H A ) = t r ( A A H ) = ∑ i = 1 n ∑ i = 1 n a i j ∗ a j i . tr(A^HA)=tr(AA^H)=\sum_{i=1}^n \sum_{i=1}^n a_{ij}^*a_{ji\,.} tr(AHA)=tr(AAH)=∑i=1n∑i=1naij∗aji.
-
迹等于特征值之和:
t r ( A ) = ∑ i = 1 n λ i tr(A)=\sum_{i=1}^n\lambda_i tr(A)=i=1∑nλi -
对于任何正整数k,有
t r ( A k ) = ∑ i = 1 n λ i k tr(A^k)=\sum_{i=1}^n\lambda_i^k tr(Ak)=i=1∑nλik
二、Kalman Filter
Kalman Filter最初看的是师兄的笔记,比较形象有利于直观理解,但过程不够严谨,高博的证明2严谨性上要高一些(虽然也不是那种学院派的数学上的严谨)。
- 若随机变量
x
∼
N
(
μ
x
+
b
+
Σ
x
x
)
x\sim N(\mu_x+b+\Sigma_{xx})
x∼N(μx+b+Σxx),另一个变量满足
y = A x + b + w y=Ax+b+w y=Ax+b+w
其中 w ∼ N ( 0 , R ) w\sim N(0,R) w∼N(0,R),则有 y y y的分布为
p ( y ) = N ( A μ x + b , R + A Σ x x A T ) p(y)=N(A\mu_x+b,R+A\Sigma_{xx}A^T) p(y)=N(Aμx+b,R+AΣxxAT)
三、 Ceres最小二乘探析
1. 关于Dual number(对偶数):
Introduce:
计算机实现求导有一种近似方法,使用一个极小值获得导数的近似。
lim
h
→
0
f
(
x
+
h
)
−
f
(
x
)
h
\lim_{h \to 0} \frac{f(x+h)-f(x)}{h}
h→0limhf(x+h)−f(x)
h取很小的数就可以获得一个近似值。这种方法的缺陷是不精确。另一种方法是Dual number。Dual number的思想是重写基本函数(+,/,*等)。嵌入求导规则。Dual number的结构(a,b),a相当于普通数,而b则保存着导数。
性质3: