分享

向量叉乘与叉乘矩阵

 好景宜人 2017-03-22

http://www.cnblogs.com/monoSLAM/p/5349497.html

本文以三维向量来说明向量的叉乘计算原理以及叉乘矩阵如何求取

 

1、向量叉乘的计算原理

 

             a、b分别为三维向量:

 

                                   a=({a_1},{a_2},{a_3})

 

                                   b=({b_1},{b_2},{b_3})

 

             a叉乘b一般定义为:

 

                                   a{\times}b  或 a{\otimes}b

 

             可是这只是一个符号的定义啊,具体怎么得到代数值

 

                关键方法就是引入单位坐标向量

 

             这里用i j k来表示三维坐标轴,这里只是举例,可以扩展到更多维,只是比较抽象

 

                a、通过引入单位向量,向量就可以转化为代数形式:

 

                                          a{\rm{=}}{a_1}i+{a_2}j+{a_3}k

 

                                          {\rm{b=}}{{\rm{b}}_1}i+{b_2}j+{b_3}k

 

                 b、定义单位向量间的运算规则

 

                                          i*i=0           j*j=0           k*k=0

 

                                          i*j=k          j*k=i           k*i=j

 

                                         j*i=-k       k*j=-i        i*k=-j

 

                 c、计算叉乘

 

                                 a{\times}b=({a_1}i+{a_2}j+{a_3}k)*({b_1}i+{b_2}j+{b_3}k)

 

                                 a{\times}b=({a_2}{b_3}-{a_3}{b_2})i+({a_3}{b_1}-{a_1}{b_3})j+({a_1}{b_2}-{a_2}{b_1})k

 

2、计算叉乘矩阵

 

              a{\times}b=({a_2}{b_3}-{a_3}{b_2})i+({a_3}{b_1}-{a_1}{b_3})j+({a_1}{b_2}-{a_2}{b_1})k

 

              把叉乘结果写成向量的形式:

 

                                 a{\times}b=\left[\begin{array}{l}
{a_2}{b_3}-{a_3}{b_2}\\
{a_3}{b_1}-{a_1}{b_3}\\
{a_1}{b_2}-{a_2}{b_1}
\end{array}\right]

 

              变换形式得到叉乘矩阵:

 

                                 a{\times}b={\left[a\right]_\times}b=\left[{\begin{array}{*{20}{c}}
0&{-{a_3}}&{{a_2}}\\
{{a_3}}&0&{-{a_1}}\\
{-{a_2}}&{{a_1}}&0
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
{{b_1}}\\
{b{}_2}\\
{{b_3}}
\end{array}}\right]

 

               其中{\left[a\right]_\times}称为a向量的叉乘矩阵。

 

3、高维向量求取叉乘矩阵

 

                   对于三维和三维以下向量的叉乘计算和叉乘矩阵的求取通过定义单位向量间的运算规则可以计算得到。

 

               对于高维向量,这种方法显得有些繁琐不易理解且容易出错。

 

               下面介绍另外一种方法,先举个二维的例子:

 

                   假设向量a是一个二维的向量(这里只使用二维是为了让例子容易理解)

 

                                 a=\left({\begin{array}{*{20}{c}}
{{a_1}}&{{a_2}}
\end{array}}\right)

 

               这里引入一个反对称(anti-symmetric)矩阵H:

 

                                 H=\left[{\begin{array}{*{20}{c}}
0&{-1}\\
1&0
\end{array}}\right]

 

               通过计算aH{a^T},发现结果为0

 

               由叉乘的规则,a叉乘a的结果为0:

 

                                 a{\times}a={\left[a\right]_\times}a=0

 

               通过对比,可以发现 aH 就是a向量的叉乘矩阵,当a为列向量时{a^T}H为a向量的叉乘矩阵。

 

 

 

               如果a为三维向量,那么H为:

 

                H=\left[{\begin{array}{*{20}{c}}
{{H_1}}\\
{{H_2}}\\
{{H_3}}
\end{array}}\right]    {H_1}=\left[{\begin{array}{*{20}{c}}
0&0&0\\
0&0&{-1}\\
0&{-1}&0
\end{array}}\right]     {H_2}=\left[{\begin{array}{*{20}{c}}
0&0&1\\
0&0&0\\
{-1}&0&0
\end{array}}\right]     {H_3}=\left[{\begin{array}{*{20}{c}}
0&{-1}&0\\
1&0&0\\
0&0&0
\end{array}}\right]

 

               可以发现H就是由一个个反对称矩阵构成。

 

               如果向量a的维数为 p ,那 H 就有 \frac{{p(p-1)}}{2}个子矩阵。

 

4、扩展

 

               对于向量的点乘、四元数乘法都可以通过定义单位向量 i j k…之间的运算规则来推导。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多