大家好,欢迎来到IT知识分享网。
向量相乘分为:点积(例如:)和叉积(例如:),对于数来说,这些符号意思都是表示数字相乘,但是对于向量来说,却表示完全不同的操作。
点积
点积(也叫内积)是对两个向量的运算,返回一个标量。点积适用于二维、三维等任意维度的向量,可以用来测量向量之间的“对齐程度”。
计算公式:
假设:
表示的几何含义:
向量投影到向量所在的直线(三维是平面),投影长度乘上向量的长度。
余弦函数图:
利用计算公式,我们可以得到:
两向量的夹角和一个向量在另一个向量上面的投影;一般来说,点积越大,两向量夹角越小,彼此越靠近。
如果两个向量的夹角小于90°,则向量的点积为正;如果夹角大于90°,则向量的点积为负;如果夹角等于90°,则向量的点积为0。
from math import acos,sqrt,radians,degrees,pi #求向量的点积 def dot(u,v): return sum([c1*c2 for c1,c2 in zip(u,v)]) #向量的长度 def length(v): return sqrt(sum([item2 for item in v])) #求两个向量的夹角 def angle_between(u,v): return acos(dot(u,v)/(length(u)*length(v)))
举例:,夹角22.6°
,夹角=90°
,夹角132.2°
叉积
叉积(也叫向量积)以两个三维向量作为输入,其输出是另一个三维向量。它与点积的相似之处在于,输入向量的长度和相对方向决定了输出;不同之处在于,它的输出不仅有大小,还有方向。
计算公式:
假设:
表示的几何含义:
长度等于向量和向量所形成的平行四边形的面积;
方向垂直于两个向量所张成的平面,满足右手定则。
利用计算公式,我们可以得到:
一个垂直于两个向量所张成平面的向量;根据该向量可以判断方向。
举例:计算向量和的叉积。
#计算向量积 def cross_product(u,v): ux,uy,uz=u vx,vy,vz=v return (uy*vz-uz*vy,uz*vx-ux*vz,ux*vy-uy*vx) #(0, 0, 3) print(cross_product((1,1,0),(-2,1,0)))
解决问题
1.如何理解点积的几何意义?
设向量,向量,终点分别为:和,原点为O,夹角为。
在△OAB中,由余弦定理得:
利用距离公式对这个等式稍作处理:
去括号、合并:
2.叉积和行列式有什么关系?
向量和向量的叉积,形式上使用行列式可以表示为:
三维空间中,3 * 3矩阵的行列式是:三个向量所形成的平行六面体的有向体积(绝对值是体积,但需要根据方向判定其正负号)。这并非真正的叉积,但很接近。
假设我们把第一个向量看作变量,输入向量,通过矩阵的行列式可以计算出一个数,这个数就代表我们的输入向量与和所组成的平行六面体的有向体积。
上面的函数是线性的,所以我们可以将上面的行列式过程表示成一个变换过程:
当线性变换是从多维到一维时,线性变换过程又可以表示为点积形式:
可以求解出向量的坐标:
所以,问题其实变换为了,找到一个向量,使得和某个向量求点积的结果,等于对应的三维方阵行列式的值(即和向量、所组成的平行六面体的有向体积)。
左边是一个点积,相当于把向上投影,然后投影长度和的长度相乘。
右边平行六面体的体积,可以拆解为:底面积 * 高。底面积可以认为是和所组成的平行四边形的面积,高的话是在垂直于和所张成的平面的方向上的分量的长度。
点积 = 的长度*在上投影的长度
体积 = 和所组成的平行四边形的面积 * 在垂直于和所张成的平面的方向上的分量的长度
根据二者相等,可以认为的长度是和所组成的平行四边形的面积,的方向垂直于和所张成的平面。
这样我们的就找到了,而就是我们要找的叉积的结果。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/162823.html