偶尔在一个数学题里面看到求两向量所在平面的法线,常规方法可以通过法线与两向量垂直这一特点,列两个方程求解;另外一种方法可以通过求解两个向量的叉积,用矩阵行列式 (determinant) 的方式,之前还没见过,在这篇博客里记录下。
两个向量的叉积(cross product),又称作外积,表达式为:
a × b = ∥ a ∥ ∥ b ∥ sin θ \mathbf{a}\times\mathbf{b}=\|a\|\|b\|\sin\theta a×b=∥a∥∥b∥sinθ
它的几何意义就是这两个向量所在平面的法线,其中 θ \theta θ 为两向量的夹角,法线的长度为这两个向量形成的平行四边形的面积。(两个向量点积的表达式为: a ⋅ b = ∥ a ∥ ∥ b ∥ cos θ \mathbf{a}\cdot\mathbf{b}=\|a\|\|b\|\cos\theta a⋅b=∥a∥∥b∥cosθ )
- 叉积本质上是一个几何运算,用来构造一个垂直于两个给定向量的向量,并且其长度为两个向量所构成的平行四边形的面积
向量叉积的方向根据右手定则确定。
具体在求解上,求解矩阵行列式非常方便,假如为三维向量,
a
×
b
=
∣
i
j
k
a
1
a
2
a
3
b
1
b
2
b
3
∣
=
(
a
2
b
3
−
a
3
b
2
)
i
+
(
a
3
b
1
−
a
1
b
3
)
k
+
(
a
1
b
2
−
a
2
b
1
)
k
\mathbf{a}\times\mathbf{b}= \begin{vmatrix} i&j&k\\ a_1&a_2&a_3\\ b_1&b_2&b_3\\ \end{vmatrix}=(a_2b_3-a_3b_2)i+(a_3b_1-a_1b_3)k+(a_1b_2-a_2b_1)k
a×b=
ia1b1ja2b2ka3b3
=(a2b3−a3b2)i+(a3b1−a1b3)k+(a1b2−a2b1)k
其中, i , j , k i,j,k i,j,k 为叉积所在坐标系各个坐标轴的单位向量。因此,根据上面的计算,叉积向量可以表示为:
( a 2 b 3 − a 3 b 2 , a 3 b 1 − a 1 b 3 , a 1 b 2 − a 2 b 1 ) \big(a_2b_3-a_3b_2,~~ a_3b_1-a_1b_3, ~~a_1b_2-a_2b_1\big) (a2b3−a3b2, a3b1−a1b3, a1b2−a2b1)
为什么可以这样求?这跟叉积,点积以及行列式,余子式的几何意义有关。(其实有点复杂)
- 三个向量行列式的几何意义是这三个向量形成的平行六面体的体积,
- 两个向量行列式的几何意义是这两个向量形成的平行四边形的面积
- 计算行列式的展开就是把整个三维体积拆解为不同的二维平行四边形的面积和相应方向上的高度的加权和
∣ i j k a 1 a 2 a 3 b 1 b 2 b 3 ∣ = ∣ a 2 a 3 b 2 b 3 ∣ i + ∣ a 1 a 3 b 1 b 3 ∣ j + ∣ a 1 a 2 b 1 b 2 ∣ k (1) \begin{vmatrix} i&j&k\\ a_1&a_2&a_3\\ b_1&b_2&b_3\\ \end{vmatrix}=\begin{vmatrix}a_2&a_3\\b_2&b_3\end{vmatrix}i+\begin{vmatrix}a_1&a_3\\b_1&b_3\end{vmatrix}j+\begin{vmatrix}a_1&a_2\\b_1&b_2\end{vmatrix}k\tag{1} ia1b1ja2b2ka3b3 = a2b2a3b3 i+ a1b1a3b3 j+ a1b1a2b2 k(1)
- 三个向量组成的平行多面体有一个体积公式
V = ∣ c ⋅ ( a × b ) ∣ V=|\mathbf{c}\cdot(\mathbf{a}\times \mathbf{b})| V=∣c⋅(a×b)∣
将向量 c \mathbf{c} c 看成 ( i , j , k ) (i,j,k) (i,j,k),
而叉积向量 a × b \mathbf{a}\times \mathbf{b} a×b 看成 ( ∣ a 2 a 3 b 2 b 3 ∣ , ∣ a 1 a 3 b 1 b 3 ∣ , ∣ a 1 a 2 b 1 b 2 ∣ ) (\begin{vmatrix}a_2&a_3\\b_2&b_3\end{vmatrix},~~\begin{vmatrix}a_1&a_3\\b_1&b_3\end{vmatrix},~~\begin{vmatrix}a_1&a_2\\b_1&b_2\end{vmatrix}) ( a2b2a3b3 , a1b1a3b3 , a1b1a2b2 ), 可以得到公式 (1),因此可以使用行列式来计算叉积!