代码改变世界

点积和叉积

2013-02-23 15:43  三戒1993  阅读(408)  评论(0编辑  收藏  举报
点积:指数量积(也称为标量积点积点乘内积)是接受在实数 R 上的两个向量并返回一个实数值标量二元运算。它是欧几里得空间的标准内积
叉积也被称为矢量积外积,是一种在向量空间向量二元运算。与点积不同,它的运算结果是一个伪向量而不是一个标量。并且两个向量的叉积与这两个向量都垂直。
--------------------
定义:
点积:

两个(来自正交规范向量空间)向量 a = [a1, a2, … , an] 和 b = [b1, b2, … , bn] 的点积定义为:

mathbf{a}cdot mathbf{b} = sum_{i=1}^n a_ib_i = a_1b_1 + a_2b_2 + cdots + a_nb_n

这里的 Σ 指示总和符号

例如,两个三维向量 [1, 3, ?5] 和 [4, ?2, ?1] 的点积是

begin{bmatrix}1&3&-5end{bmatrix} cdot begin{bmatrix}4&-2&-1end{bmatrix} = (1)(4) + (3)(-2) + (-5)(-1) = 3.

使用矩阵乘法并把(纵列)向量当作 n×1 矩阵,点积还可以写为:

mathbf{a} cdot mathbf{b} = mathbf{a}^T mathbf{b} ,

这里的 aT 指示矩阵 a转置

使用上面的例子,这将结果一个 1×3 矩阵(就是行向量)乘以 3×1 向量(通过矩阵乘法的优势得到 1×1 矩阵也就是标量):

begin{bmatrix}     1&3&-5 end{bmatrix}begin{bmatrix}      4-2-1 end{bmatrix} = begin{bmatrix}     3 end{bmatrix}.
叉积

两个向量 ab 的叉积写作 a × b (有时也被写成 ab,避免和字母 x 混淆)。叉积可以被定义为:

mathbf{a}timesmathbf{b} = mathbfhat{n} left| mathbf{a} right| left| mathbf{b} right| sin theta

在这里 θ 表示 ab 之间的角度(0° ≤ θ ≤ 180°),它位于这两个矢量所定义的平面上。而 n 是一个与 ab垂直单位矢量

这个定义有一个问题,就是同时有两个单位向量都垂直于 ab:若 n 满足垂直的条件,那么 -n 也满足。

“正确”的向量由向量空间的方向确定,即按照给定直角坐标系 (i, j, k) 的左右手定则。若 (i, j, k) 满足右手定则,则 (a, b, a × b) 也满足右手定则;或者两者同时满足左手定则

一个简单的确定满足“右手定则”的结果向量的方向的方法是这样的:若坐标系是满足右手定则的,mathbf{c} = mathbf{a}timesmathbf{b}当右手的四指从a以不超过180度的转角转向b时,竖起的大拇指指向是c的方向。由于向量的叉积由坐标系确定,所以其结果被称为伪向量

给定直角坐标系的单位向量 ijk 满足下列等式:

i × j = k           j × k = i           k × i = j

通过这些规则,两个向量的叉积的坐标可以方便地计算出来,不需要考虑任何角度:设

a = a1i + a2j + a3k = [a1, a2, a3]
b = b1i + b2j + b3k = [b1, b2, b3]

a × b = [a2b3 ? a3b2, a3b1 ? a1b3, a1b2 ? a2b1]

上述等式可以写成矩阵行列式的形式:

mathbf{a}timesmathbf{b}=det begin{bmatrix}  mathbf{i} & mathbf{j} & mathbf{k}  a_1 & a_2 & a_3  b_1 & b_2 & b_3  end{bmatrix}

叉积也可以用四元数来表示。注意到上述 ijk 之间的叉积满足四元数的乘法。一般而言,若将向量 [a1, a2, a3] 表示成四元数 a1i + a2j + a3k,两个向量的叉积可以这样计算:计算两个四元数的乘积得到一个四元数,并将这个四元数的实部去掉,即为结果。更多关于四元数乘法,向量运算及其几何意义请参见四元数与空间旋转

拉格朗日公式

  • 这是一个著名的公式,而且非常有用:
a × (b × c) = b(a · c) ? c(a · b),

可以简单地记成“BAC - CAB”。这个公式在物理上简化向量运算非常有效。需要注意的是,这个公式对微分算子不成立。

这里给出一个和梯度相关的一个情形:

 begin{matrix}  nabla times (nabla times mathbf{f})  &=& nabla      (nabla cdot  mathbf{f} )   - (nabla cdot nabla) mathbf{f}   &=& mbox{grad }(mbox{div }   mathbf{f} )  - mbox{laplacian }     mathbf{f}. end{matrix}

这是一个霍奇拉普拉斯算子霍奇分解 Delta = d partial + partial d 的特殊情形。

  • 另一个有用的拉格朗日恒等式是:
 |a times b|^2 + |a cdot b|^2 = |a|^2 |b|^2.

这是一个在四元数代数中范数乘法 | vw | = | v | | w | 的特殊情形。

--------------------------

几何意义:

点积:

在欧几里得空间中,点积可以直观地定义为

 mathbf{a} cdot mathbf{b} = |mathbf{a}| , |mathbf{b}| cos theta ;,

这里 |x| 表示 x范数(长度),θ 表示两个向量之间的角度

注意点积的形式定义和这个定义不同;在形式定义中,ab 的夹角是通过上述等式定义的。

这样,两个互相垂直的向量的点积总是零。若 ab 都是单位向量(长度为 1 ),它们的点积就是它们的夹角的余弦。那么,给定两个向量,它们之间的夹角可以通过下列公式得到:

 cos{theta} = frac{mathbf{a cdot b}}{|mathbf{a}| , |mathbf{b}|}

这个运算可以简单地理解为:在点积运算中,第一个向量投影到第二个向量上(这里,向量的顺序是不重要的,点积运算是可交换的),然后通过除以它们的标量长度来“标准化”。这样,这个分数一定是小于等于 1 的,可以简单地转化成一个角度值。

需要注意的是,点积的几何解释通常只适用于 mathbb{R}^n (n le 3)。在高维空间,其他的域或中,点积只有一个定义,那就是

left langle mathbf{a}, mathbf{b} right rangle = sum_{i=1}^n a_ib_i

点积可以用来计算合力。若 b 为单位向量,则点积即为 a 在方向 b 的投影,即给出了在这个方向上的分解。功即是力和位移的点积。

A ? B = |A| |B| cos(θ).
|A| cos(θ) 是 A B的投影。

叉积:

叉积的长度 |a × b| 可以解释成以 a b 为边的平行四边形面积。进一步就是说,三重积可以得到以 abc 为边的平行六面体体积