向量点积计算方法,向量的点积
向量点积计算方法,向量的点积有了上面的公式,接下来我们使用Julia语言来实际计算下这个角度值是多少说明:cos-1为反余弦函数函数,用来根据余弦值计算角度我们先不关注为什么这两种计算方法是等价的,点积的主要作用是可以用来计算角度,点积是线性代数很多内容的核心,可以用来简化大量的计算,线性代数也是计算机图形学必须要掌握的学科之一。例子:已知三维xyz坐标系a,b两点的坐标,如何计算向量a和b之间的夹角θ?根据前面的点积的公式和几何定义我们可以推导出计算角度θ的计算公式:
点积的定义线性代数中,n维向量v和w的点积定义如下,点积的结果为一个标量(只有数值,无方向):
针对二维和三维向量,向量a和b的点积根据定义计算公式可以写为:
另外,从几何意义上来说,a和b的点积还可以按照下面的公式来计算:
|a|、|b|表示向量的模(长度),θ表示向量a和b之间的夹角
我们先不关注为什么这两种计算方法是等价的,点积的主要作用是可以用来计算角度,点积是线性代数很多内容的核心,可以用来简化大量的计算,线性代数也是计算机图形学必须要掌握的学科之一。
例子:已知三维xyz坐标系a,b两点的坐标,如何计算向量a和b之间的夹角θ?
根据前面的点积的公式和几何定义我们可以推导出计算角度θ的计算公式:
说明:cos-1为反余弦函数函数,用来根据余弦值计算角度
有了上面的公式,接下来我们使用Julia语言来实际计算下这个角度值是多少
# 计算向量a和b之间的夹角
using LinearAlgebra
# 向量a b的定义
a = [4 8 10]
b = [9 2 7]
# 向量的点积
dot_product = dot(a b)
# 求向量a,b的模长
length_a = norm(a)
length_b = norm(b)
# 求θ角的余弦值
cos_θ = dot_product / (length_a * length_b)
# 求theta的弧度值
θ = acos(cos_θ)
print("θ的弧度值为:" θ)
# 求θ的角度值
print("\nθ的角度值为:" θ * (180/pi) "°")
运行结果向量a和b之间的夹角为38.2...°,你可以尝试使用其他的方法计算下试试,蛮复杂的。
θ的弧度值为:0.6672196386878
θ的角度值为:38.22886930505464°
证明点积的几何意义和坐标定义为什么是等价的
最后,来证明下为什么点积的坐标公式和几何定义是等价的,根据三角形的边长公式可知
说明:
1. a,b为向量,红色有向线段AB表示从b指向a的向量,三个向量组成一个三角形;θ为a和b之间的夹角;
2. 向量以三维向量为例进行演示,向量以坐标(x y z)表示。向量AB的坐标可以表示为(ax-bx ay-by az-bz)。
逐步展开推导如下
最后得出的结果等号两边刚好是叉积的坐标定义和几何定义,两种方式得出的结果是相同的,证明完毕。