点积
定义
设有两个向量 a ⃗ \vec a a 和 b ⃗ \vec b b,他们的夹角为 θ \theta θ,那么他们的点积就是 ∣ a ⃗ ∣ ∣ b ⃗ ∣ cos θ |\vec a||\vec b|\cos\theta ∣a∣∣b∣cosθ。式子: a ⋅ b = ∣ a ⃗ ∣ ∣ b ⃗ ∣ cos θ a\cdot b=|\vec a||\vec b|\cos\theta a⋅b=∣a∣∣b∣cosθ
计算式
用上面的那个公式计算点积的话很麻烦,于是有一个计算式(设向量
a
⃗
(
x
1
,
x
2
,
x
3
,
.
.
.
)
,
b
⃗
(
y
1
,
y
2
,
y
3
,
.
.
.
)
\vec a(x_1,x_2,x_3,...),\vec b(y_1,y_2,y_3,...)
a(x1,x2,x3,...),b(y1,y2,y3,...)):
a
⃗
⋅
b
⃗
=
x
1
y
1
+
x
2
y
2
+
x
3
y
3
+
.
.
.
\vec a\cdot \vec b=x_1y_1+x_2y_2+x_3y_3+...
a⋅b=x1y1+x2y2+x3y3+...
所以,点积也可以用矩阵来表示:
a
⃗
⋅
b
⃗
=
(
x
1
x
2
x
3
⋮
)
∗
(
y
1
y
2
y
3
⋯
)
\vec a\cdot \vec b= \left( \begin{matrix} x_1\\ x_2\\ x_3\\ \vdots \end{matrix} \right)* \left( \begin{matrix} y_1 & y_2 & y_3 & \cdots \end{matrix} \right)
a⋅b=⎝⎜⎜⎜⎛x1x2x3⋮⎠⎟⎟⎟⎞∗(y1y2y3⋯)
那么问题来了,怎么证明这个计算式呢?
证明如下
考虑向量 a ⃗ , b ⃗ \vec a,\vec b a,b 只有两维的情况,也就是 a ⃗ ( x 1 , y 1 ) , b ⃗ ( x 2 , y 2 ) \vec a(x_1,y_1),\vec b(x_2,y_2) a(x1,y1),b(x2,y2)。
再设 i , j i,j i,j 为单位向量,即 i ⃗ ( 1 , 0 ) , j ⃗ ( 0 , 1 ) \vec i(1,0),\vec j(0,1) i(1,0),j(0,1)。
那么显然,向量
a
,
b
a,b
a,b可以表示成这个样子:
a
=
x
1
i
⃗
+
y
1
j
⃗
b
=
x
2
i
⃗
+
y
2
j
⃗
a=x_1\vec i+y_1\vec j\\ b=x_2\vec i+y_2\vec j
a=x1i+y1jb=x2i+y2j
那么就有
a
⃗
⋅
b
⃗
=
(
x
1
i
⃗
+
y
1
j
⃗
)
⋅
(
x
2
i
⃗
+
y
2
j
⃗
)
=
x
1
i
⋅
x
2
i
⃗
+
x
1
i
⃗
⋅
y
2
j
⃗
+
y
1
j
⃗
⋅
x
2
i
⃗
+
y
1
j
⃗
⋅
y
2
j
⃗
=
x
1
x
2
⋅
i
⃗
2
+
x
1
y
2
⋅
i
⃗
j
⃗
+
y
1
x
2
⋅
i
⃗
j
⃗
+
y
1
y
2
⋅
j
⃗
2
\begin{aligned} \vec a\cdot \vec b&=(x_1\vec i+y_1\vec j)\cdot(x_2\vec i+y_2\vec j)\\ &=x_1i\cdot x_2\vec i+x_1\vec i\cdot y_2\vec j+y_1\vec j\cdot x_2\vec i+y_1\vec j\cdot y_2\vec j\\ &=x_1x_2\cdot \vec i^2+x_1y_2\cdot \vec i\vec j+y_1x_2\cdot \vec i\vec j+y_1y_2\cdot \vec j^2 \end{aligned}
a⋅b=(x1i+y1j)⋅(x2i+y2j)=x1i⋅x2i+x1i⋅y2j+y1j⋅x2i+y1j⋅y2j=x1x2⋅i2+x1y2⋅ij+y1x2⋅ij+y1y2⋅j2
因为
i
⃗
\vec i
i 和
j
⃗
\vec j
j 两向量的夹角是
90
°
90\degree
90°,所以
cos
θ
=
0
\cos\theta=0
cosθ=0,根据定义式
a
⋅
b
=
∣
a
∣
∣
b
∣
cos
θ
a\cdot b=|a||b|\cos\theta
a⋅b=∣a∣∣b∣cosθ,得到
i
⃗
⋅
j
⃗
=
0
\vec i\cdot \vec j=0
i⋅j=0。于是乎就消掉了两个单项式。
(
接
上
式
)
=
x
1
x
2
⋅
i
⃗
2
+
y
1
y
2
⋅
j
⃗
2
(接上式)=x_1x_2\cdot \vec i^2+y_1y_2\cdot \vec j^2
(接上式)=x1x2⋅i2+y1y2⋅j2
又因为两个相同的向量
i
⃗
\vec i
i 相乘等于
1
(
i
⃗
⋅
i
⃗
=
∣
i
⃗
∣
∣
i
⃗
∣
cos
θ
=
1
∗
1
∗
1
=
1
)
1~(\vec i\cdot \vec i=|\vec i||\vec i|\cos\theta=1*1*1=1)
1 (i⋅i=∣i∣∣i∣cosθ=1∗1∗1=1),所以式子就变成了
(
接
上
式
)
=
x
1
x
2
+
y
1
y
2
(接上式)=x_1x_2+y_1y_2
(接上式)=x1x2+y1y2
推广一下,就得到了向量
a
⃗
,
b
⃗
\vec a,\vec b
a,b在更高维时的证明。
应用
first 根据定义式 a ⃗ ⋅ b ⃗ = ∣ a ⃗ ∣ ∣ b ⃗ ∣ cos θ \vec a \cdot \vec b=|\vec a||\vec b|\cos\theta a⋅b=∣a∣∣b∣cosθ,移项一下,可以得到 θ = a c c c o s a ⃗ ⋅ b ⃗ ∣ a ⃗ ∣ ∣ b ⃗ ∣ \theta=acc~cos\frac {\vec a \cdot \vec b} {|\vec a||\vec b|} θ=acc cos∣a∣∣b∣a⋅b,于是乎,可以用来求两向量间的夹角。
second 还有一个更便捷的用法,因为一个角大于 90 ° 90\degree 90° 时,他的 cos \cos cos 值是负数,等于 90 ° 90\degree 90° 时,他的 cos \cos cos 值是0,小于 90 ° 90\degree 90° 时,他的 cos \cos cos 值是正数,所以,我们也可以利用 a ⃗ ⋅ b ⃗ \vec a \cdot \vec b a⋅b 的值的正负来判断两向量的位置关系(通常用于判断是否垂直)。
叉积
定义
模长
叉积叉出来的是一个向量,他的模长等于 ∣ a ⃗ ∣ ∣ b ⃗ ∣ sin θ |\vec a||\vec b|\sin\theta ∣a∣∣b∣sinθ
方向
两个向量叉出来的向量我们规定它的方向垂直于那两个向量,并且满足右手定则1。
计算式
一般来说,只有二、三维和七维的向量存在叉积,七维向量的叉积太神了我并不会,所以这里只能讲讲二和三维的。
先讲三维的,设
a
⃗
(
x
1
,
y
1
,
z
1
)
,
b
⃗
(
x
2
,
y
2
,
z
2
)
\vec a(x_1,y_1,z_1),\vec b(x_2,y_2,z_2)
a(x1,y1,z1),b(x2,y2,z2),那么他们的叉积可以写成行列式的形式:
a
×
b
=
∣
i
j
k
x
1
y
1
z
1
x
2
y
2
z
2
∣
a\times b= \left| \begin{matrix} i & j & k\\ x_1 & y_1 & z_1\\ x_2 & y_2 & z_2 \end{matrix} \right|
a×b=∣∣∣∣∣∣ix1x2jy1y2kz1z2∣∣∣∣∣∣
其中,
i
,
j
,
k
i,j,k
i,j,k 是三个维度的单位向量,即
i
(
1
,
0
,
0
)
,
j
(
0
,
1
,
0
)
,
k
(
0
,
0
,
1
)
i(1,0,0),j(0,1,0),k(0,0,1)
i(1,0,0),j(0,1,0),k(0,0,1),然后再推一推上面的柿子,得到:
=
i
(
y
1
z
2
−
z
1
y
2
)
+
j
(
z
1
x
2
−
x
1
z
2
)
+
k
(
x
1
y
2
−
y
1
x
2
)
=i(y_1z_2-z_1y_2)+j(z_1x_2-x_1z_2)+k(x_1y_2-y_1x_2)
=i(y1z2−z1y2)+j(z1x2−x1z2)+k(x1y2−y1x2)
所以他们叉乘出来的向量的坐标就是 ( y 1 z 2 − z 1 y 2 , z 1 x 2 − x 1 z 2 , x 1 y 2 − y 1 x 2 ) (y_1z_2-z_1y_2~,~z_1x_2-x_1z_2~,~x_1y_2-y_1x_2) (y1z2−z1y2 , z1x2−x1z2 , x1y2−y1x2)。
二维叉积的话只需要让 z z z 坐标为 0 0 0 然后带入上式,就会得到坐标为 k ( x 1 y 2 − y 1 x 2 ) k(x_1y_2-y_1x_2) k(x1y2−y1x2),即垂直于原来的两个向量,然后模长为 x 1 y 2 − y 1 x 2 x_1y_2-y_1x_2 x1y2−y1x2。
应用
first 根据叉积的方向,如果向量 a ⃗ \vec a a 通过顺时针旋转 180 ° 180\degree 180° 以内可以与向量 b ⃗ \vec b b 的方向相同,那么 c ⃗ \vec c c 的模长就是负数,反之,就是正数。
所以,可以通过判断叉积的模长的正负来判断两个向量间的旋转关系。(顺便就可以证明,叉积不满足交换律)
这个用法可以推广出一些其他的用法,比如折线拐向什么的,重点讲讲判断两线段是否相交。
判断方法:跨立实验。
如果两线段
A
B
AB
AB 和
C
D
CD
CD 相交(方便理解,弄了个图),
那么,向量
A
D
⃗
\vec {AD}
AD 和
A
C
⃗
\vec {AC}
AC 必定一个在
A
B
⃗
\vec {AB}
AB 左边,一个在右边。
显然,向量
D
A
⃗
\vec {DA}
DA 和
D
B
⃗
\vec {DB}
DB 也必定
D
C
⃗
\vec {DC}
DC 的两边。
那么可以得出,只要满足这两个要求, A B AB AB 和 C D CD CD 就相交。
second 两向量叉出来的新向量,它的模长在值上是与原先的两向量构成的平行四边形的面积是相等的,这个琢磨琢磨叉积的模长定义式就能知道。
当右手的四指的方向与向量 a ⃗ \vec a a 的方向相同时,四指自然向前弯曲 ( 0 ° < θ < 180 ° ) (0\degree<\theta<180\degree) (0°<θ<180°),方向可以与 b ⃗ \vec b b 相同,此时大拇指竖起来的方向就是 c ⃗ \vec c c 的方向。 ↩︎