首页 > 其他分享 >外积,叉乘,矩阵乘法

外积,叉乘,矩阵乘法

时间:2024-01-31 15:11:58浏览次数:32  
标签:mathbf cdot 矩阵 外积 bmatrix 向量 乘法

外积,叉乘,矩阵乘法

在slam中,我们经常会遇到需要处理一些矩阵相乘的问题,例如我们在计算两个点的外积时,就需要算两个向量的叉乘,叉乘在计算机计算中比较麻烦,我们一般都是通过将其中一个向量转换成为一个反对称矩阵然后与另外一个进行矩阵乘法来解决的。

叉乘:

首先定义A ,B :

\[A = (a_1,a_2,a_3)\\B=(b_1,b_2,b_3) \]

叉乘为:

\[A \times B =\begin{bmatrix} i & j & k \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \\ \end{bmatrix} \]

叉乘结果:

\[A \times B = (a_2 \cdot b_3 - a_3 \cdot b_2) \mathbf{i} - (a_1 \cdot b_3 - a_3 \cdot b_1) \mathbf{j} + (a_1 \cdot b_2 - a_2 \cdot b_1) \mathbf{k} \]

矩阵乘法:

一个向量可以转换成一个反对称矩阵,这样可以在一定程度上避免直接进行叉乘运算,而是通过矩阵乘法来完成相同的任务。在三维空间中,任何向量都可以表示成一个3×3的反对称矩阵,这个矩阵与另一个向量进行矩阵乘法的结果,等价于两个向量的叉乘。

给定一个向量\({v} = (v_x, v_y, v_z)\) ,我们可以构造一个相应的反对称矩阵\(V\) 如下:

\[\begin{bmatrix} 0 & -v_z & v_y \\ v_z & 0 & -v_x \\ -v_y & v_x & 0 \end{bmatrix} \]

这个矩阵的特点是它的转置矩阵等于其自身的负矩阵,即\(\mathbf{V}^T = -\mathbf{V}\) ,这也是“反对称”这个名字的由来。

现在,如果我们有另一个向量\(\mathbf{u} = (u_x, u_y, u_z)\) ,通常情况下,我们可以通过\(\mathbf{v} \times \mathbf{u}\) 来计算它们的叉乘。但是,同样的结果也可以通过矩阵乘法来获得:

\[\mathbf{v} \times \mathbf{u} = \mathbf{V} \cdot \mathbf{u} \]

其中,矩阵\(\mathbf{V}\) 乘以向量\(\mathbf{u}\) 的结果是:

\[\mathbf{V} \cdot \mathbf{u} = \begin{bmatrix} 0 & -v_z & v_y \\ v_z & 0 & -v_x \\ -v_y & v_x & 0 \end{bmatrix} \begin{bmatrix} u_x \\ u_y \\ u_z \end{bmatrix}= \begin{bmatrix} -v_z u_y + v_y u_z \\ v_z u_x - v_x u_z \\ -v_y u_x + v_x u_y \end{bmatrix} \]

这个结果向量正是 \(\mathbf{v} \times \mathbf{u}\)的结果。

使用反对称矩阵代替直接的叉乘有时可以简化数学计算,特别是在涉及多个叉乘或需要将叉乘操作融入更大的线性代数框架时。例如,在计算机图形学、机器人学和控制理论中,反对称矩阵常常被用来表示旋转和处理与旋转有关的计算。

标签:mathbf,cdot,矩阵,外积,bmatrix,向量,乘法
From: https://www.cnblogs.com/oziasly/p/17999296

相关文章

  • 窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算
    原文:窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算-CSDN博客CSDN-一见已难忘在当今计算领域中,存内计算技术凭借其出色的向量乘矩阵操作效能引起了广泛关注。本文将深入研究基于向量乘矩阵的存内计算原理,并探讨几个引人注目的代表性工作,如DPE、ISAAC、PRIME等,它们在神经......
  • 矩阵
    一.矩阵的概念由\(n×m\)个数排成如下\(n\)行\(m\)列的一个表格\(\begin{bmatrix}a_{11}&a_{12}&\cdots&a_{1n}\\a_{21}&a_{22}&\cdots&a_{2n}\\\vdots&\vdots&&\vdots\\a_{n1}&a_{n2}&\cdot......
  • Visual Studio部署C++矩阵库Armadillo的方法
      本文介绍在VisualStudio软件中配置C++环境下线性代数运算库Armadillo的方法。  首先,我们需要在Armadillo库官网下载其源代码,直接点击下图所示红色框内部分即可。  点击上图所示位置后,将弹出一个新的下载界面;Armadillo库的源代码将随后自动下载。  接下来,我们在Vis......
  • 乘法逆元
    乘法逆元定义对于一个线性同余方程\(ax\equiv1\pmodp\),称\(x\)为\(a\bmodp\)下的逆元,可记作\(a^{-1}\)。求法快速幂求逆元我们需要使用费马小定理:\[\begin{aligned}ax&\equiv1\pmodp\\ax&\equiva^{p-1}\pmodp\\x&\equiva^{p-2}\pmodp\end{......
  • jax框架为例:求hession矩阵时前后向模式的自动求导的性能差别
    注意:本文相关基础知识不介绍。给出代码:fromjaximportjacfwd,jacrevimportjax.numpyasjnpdefhessian_1(f):returnjacfwd(jacrev(f))defhessian_2(f):returnjacfwd(jacfwd(f))defhessian_3(f):returnjacrev(jacfwd(f))defhessian_4(f):ret......
  • 4.矩阵键盘
    include<REGX52.H>sbitC1=P1^3;sbitC2=P1^2;sbitC3=P1^1;sbitC4=P1^0;sbitL1=P1^7;sbitL2=P1^6;sbitL3=P1^5;sbitL4=P1^4;voiddelay(inttime)//????{unsignedinti,j,y;for(y=0;y<time;y++){for(i=0;i<19601;i++){for(j=5;j>0;j--......
  • exgcd+乘法逆元相关笔记
    #include<iostream>#include<cstdio>usingnamespacestd;constintpass=0;//exgcd://求解二元一次不定方程//ax+by=(a,b)=(b,a%b)=bx'+(a%b)*y'=bx'+(a-b*(a/b))*y'=b*(x'-(a/b)*y')+ay'//则有y=(x'-(a/b)*y'),x=y'......
  • 矩阵相关
    矩阵相关运算结构体定义typedeflonglongll;constintN=110;intn,mod;structMat{ intn,m;//矩阵的行和列inta[N][N]; voidzero(){//0矩阵 memset(a,0,sizeof(a)); } voidone(){//n*n的单位矩阵 zero(); for(inti=1;i<=n;i++)......
  • WebGL之二维矩阵变换(高级)
    一,index.html<body> <scriptsrc="js/common/shaderUtil.js"></script> <scriptid="vertex-shader-2d"type="notjs"> attributevec2a_position; attributevec2a_texCoord; uniformmat3u_matrix;//2D变......
  • 算法随记_1 蛇形矩阵(偏移量法)
    蛇形矩阵title:(在线学习平台)link:(https://www.acwing.com/)cover:(https://cdn.acwing.com/media/activity/surface/log.png)输入两个整数n和m,输出一个n行m列的矩阵,将数字1到n×m按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入样例33输出样例12......