向量的定义
从几何上讲,向量就是有方向,有大小的有向线段。
向量的运算
负向量
要得到任意维向量的负向量,只需要简单的将向量每个分量都变负即可。数学表达式:
−[ab...x]=[−a−b...−x]\begin{gathered}
-\begin{bmatrix}a\\b\\...\\x\end{bmatrix} =
\begin{bmatrix}-a\\-b\\...\\-x\end{bmatrix}
\end{gathered}−⎣⎢⎢⎡ab...x⎦⎥⎥⎤=⎣⎢⎢⎡−a−b...−x⎦⎥⎥⎤
向量大小
向量大小也常被称为向量的长度或模。
也就是向量各分量的平方和的平方根。计算公式如下:
∥v∥=∑i=1nvi2\lVert v \rVert = \sqrt{\sum_{i=1}^n v_{i}^2}∥v∥=i=1∑nvi2
向量与标量的乘法
标量与向量的乘法非常直接,将向量的每个分量都与标量相乘即可。标量与向量乘的顺序并不重要,但经常把标量写在左边,数学表达式为:
k[a1a2...an]=[a1a2..an]k=[ka1ka2...kan]\begin{gathered}
k\begin{bmatrix}a_{1}\\a_{2}\\...\\a_{n}\end{bmatrix}=
\begin{bmatrix}a_{1}\\a_{2}\\..\\a_{n}\end{bmatrix}k=
\begin{bmatrix}ka_{1}\\ka_{2}\\...\\ka_{n}\end{bmatrix}
\end{gathered} k⎣⎢⎢⎡a1a2...an⎦⎥⎥⎤=⎣⎢⎢⎡a1a2..an⎦⎥⎥⎤k=⎣⎢⎢⎡ka1ka2...kan⎦⎥⎥⎤
标准化向量
对任意非零向量vvv,都能计算出一个和vvv方向相同的单位向量vnormv_{norm}vnorm。这个过程就称为向量的标准化,要标准化向量,将向量除以它的模(大小)即可。
vnorm=v∥v∥,v≠0v_{norm}=\frac {v} {\lVert v \rVert} ,v\not =0vnorm=∥v∥v,v=0
零向量不能被标准化。数学上是不允许的,因为将导致除零。几何上也没有意义,因为零向量没有方向。
向量的加法和减法
如果两个向量的维度相同,那么它们能相加,或相减。结果向量的维度与原向量相同。
向量加法的运算法则很简单,两个向量相加,将对应分量相加即可。
[a1a2...an]+[b1b2...bn]=[a1+b1a2+b2...an+bn]
\begin{gathered}
\begin{bmatrix}a_1\\a_2\\...\\a_n\end{bmatrix}+
\begin{bmatrix}b_1\\b_2\\...\\b_n\end{bmatrix}=
\begin{bmatrix}a_1+b_1\\a_2+b_2\\...\\a_n+b_n\end{bmatrix}
\end{gathered}
⎣⎢⎢⎡a1a2...an⎦⎥⎥⎤+⎣⎢⎢⎡b1b2...bn⎦⎥⎥⎤=⎣⎢⎢⎡a1+b1a2+b2...an+bn⎦⎥⎥⎤
减法解释为加负向量:a−b=a+(−b)a-b=a+(-b)a−b=a+(−b)
一个点到另一个点的向量(减法的应用)
计算一个点到另一个点的位移是一种非常普遍的需求,可以使用向量减法来解决这个问题。
图1展示了怎样用b−ab-ab−a计算aaa到bbb的位移向量。

距离公式
该公式用来计算两点之间的距离。
首先定义距离为两点之间线段的长度。因为向量是有向线段,所以从几何意义上说,两点之间的距离等于从一个点到另一个点的向量的长度。
先计算从a到b的向量d,在3D的情况下:
d=b−a=[bx−axby−aybz−az]
\begin{gathered}
d=b-a=\begin{bmatrix}b_x-a_x\\b_y-a_y\\b_z-a_z\end{bmatrix}
\end{gathered}
d=b−a=⎣⎡bx−axby−aybz−az⎦⎤
a到b的距离等于向量d的长度:
距离(a,b)=∥d∥=(bx−ax)2+(by−ay)2+(bz−az)2
距离(a,b)=\lVert d \rVert = \sqrt{(b_x-a_x)^2+(b_y-a_y)^2+(b_z-a_z)^2}
距离(a,b)=∥d∥=(bx−ax)2+(by−ay)2+(bz−az)2
这样就推导出了3D距离公式,2D距离公式也很好推导出来:
距离(a,b)=∥b−a∥=(bx−ax)2+(by−ay)2
距离(a,b)=\lVert b-a \rVert = \sqrt{(b_x-a_x)^2+(b_y-a_y)^2}
距离(a,b)=∥b−a∥=(bx−ax)2+(by−ay)2
向量点乘
向量点乘就是对应分量乘积的和,其结果是个分量。向量点乘不能省略点乘号。
[a1a2...an]⋅[b1b2...bn]=a1b1+a2b2+...+anbn
\begin{gathered}
\begin{bmatrix}a_1\\a_2\\...\\a_n\end{bmatrix}\cdot
\begin{bmatrix}b_1\\b_2\\...\\b_n\end{bmatrix}=a_1b_1+a_2b_2+...+a_nb_n
\end{gathered}
⎣⎢⎢⎡a1a2...an⎦⎥⎥⎤⋅⎣⎢⎢⎡b1b2...bn⎦⎥⎥⎤=a1b1+a2b2+...+anbn
用连加符号简写:
a⋅b=∑i=1naibi
a\cdot b=\sum_{i=1}^n a_ib_i
a⋅b=i=1∑naibi
一般来说,点乘结果描述了两个向量的“相似”程度,点乘结果越大,两向量越相近。
点乘等于向量大小与向量夹角的cos值的积:
a⋅b=∥a∥∥b∥cosθ
a\cdot b=\lVert a \rVert \lVert b \rVert \cos\theta
a⋅b=∥a∥∥b∥cosθ
解得:
θ=arccos(a⋅b∥a∥∥b∥)
\theta = \arccos(\frac {a\cdot b} {\lVert a \rVert \lVert b \rVert})
θ=arccos(∥a∥∥b∥a⋅b)
如果a、b是单位向量,就可以避免上面公式的除法运算:
θ=arccos(a⋅b)
\theta = \arccos(a\cdot b)
θ=arccos(a⋅b)
如果不需要θ\thetaθ的确切值而只需要a和b的夹角类型,可以只取用点乘结果的符号。
- 如果a⋅ba\cdot ba⋅b大于0,则0°⩽θ<90°0\degree\leqslant\theta<90\degree0°⩽θ<90°
- 如果a⋅ba\cdot ba⋅b等于0,则θ=90°\theta = 90\degreeθ=90°
- 如果a⋅ba\cdot ba⋅b小于0,则90°<θ⩽180°90\degree<\theta\leqslant180\degree90°<θ⩽180°
注意:如果a、b任意一个向量为零,那么a⋅ba\cdot ba⋅b的结果也为零。因此点乘对零向量的解释是,零向量对任意其他向量都垂直。(当然,前面定义零向量平行于或垂直于任意向量那是不对的,因为零向量没有方向。)
向量的投影
给定两个向量v和n,能将v分解成两个分量:v⊥v_{\perp}v⊥和v∥v_{\parallel}v∥。它们分别垂直和平行于n,并且满足v=v⊥+v∥v=v_{\perp}+v_{\parallel}v=v⊥+v∥。一般称平行分量v∥v_\parallelv∥为v在n上的投影。
我们使用点乘计算投影:

下面我们先求v∥v_\parallelv∥。观察到v∥v_\parallelv∥平行于n,它可以表示为:v∥=n∥v∥∥∥n∥v_\parallel=n\frac {\lVert v_\parallel \rVert} {\lVert n \rVert}v∥=n∥n∥∥v∥∥。
因此只要求出v∥v_\parallelv∥的模就能计算出该投影向量的值了。很幸运,三角分解能帮助我们求出该值:cosθ=∥v∥∥∥v∥\cos\theta=\frac{\lVert v_\parallel \rVert}{\lVert v \rVert}cosθ=∥v∥∥v∥∥
cosθ∥v∥=∥v∥∥\cos\theta\lVert v \rVert=\lVert v_\parallel \rVertcosθ∥v∥=∥v∥∥
将其代入之前的公式:
v∥=ncosθ∥v∥∥n∥=ncosθ∥v∥∥n∥∥n∥2=nv⋅n∥n∥2
\begin{gathered}
v_\parallel=n\frac {\cos\theta\lVert v \rVert} {\lVert n \rVert}
\\=n\frac {\cos\theta\lVert v \rVert\lVert n \rVert} {\lVert n \rVert^2}
\\=n\frac{v\cdot n}{\lVert n \rVert^2}
\end{gathered}
v∥=n∥n∥cosθ∥v∥=n∥n∥2cosθ∥v∥∥n∥=n∥n∥2v⋅n
当然,如果是n单位向量,那除法就没必要了。
知道了v∥v_\parallelv∥,求v⊥v_\perpv⊥就很容易了,如下:
v⊥+v∥=vv⊥=v−v∥=v−nv⋅n∥n∥2
v_\perp+v_\parallel = v
\\v_\perp=v-v_\parallel
\\=v-n\frac{v\cdot n}{\lVert n \rVert^2}
v⊥+v∥=vv⊥=v−v∥=v−n∥n∥2v⋅n
向量的叉乘
另一种向量乘法称作叉乘或叉积,尽可应用于3D向量。
术语叉乘来自记法a×ba\times ba×b中的叉号。
叉乘的公式为:
[x1y1z1]×[x2y2z2]=[y1z2−z1y2z1x2−x1z2x1y2−y1x2]
\begin{bmatrix}x_1\\y_1\\z_1\end{bmatrix}\times\begin{bmatrix}x_2\\y_2\\z_2\end{bmatrix}=\begin{bmatrix}y_1z_2-z_1y_2\\z_1x_2-x_1z_2\\x_1y_2-y_1x_2\end{bmatrix}
⎣⎡x1y1z1⎦⎤×⎣⎡x2y2z2⎦⎤=⎣⎡y1z2−z1y2z1x2−x1z2x1y2−y1x2⎦⎤
当点乘和叉乘放在一起时,叉乘优先计算,因为点乘返回一个标量,同时标量和向量之间不能叉乘。
向量叉乘不满足交换律,满足反交换律:
a×b=−(b×a)a\times b=-(b\times a)a×b=−(b×a)
叉乘也不满足结合律。
几何解释
叉乘得到的向量垂直于原来的两个向量。

图中,向量a和b在一个平面中。向量a×ba\times ba×b指向该平面的正上方,垂直于a和b。
a×ba\times ba×b的长度等于向量的大小与向量夹角sin值的积,如下:
∥a×b∥=∥a∥∥b∥sinθ\lVert a\times b\rVert=\lVert a\rVert\lVert b\rVert\sin\theta∥a×b∥=∥a∥∥b∥sinθ
可以看到,∥a×b∥\lVert a\times b\rVert∥a×b∥也等于以a和b为两边的平行四边形的面积。

如果a、b平行或任意一个为0,则a×b=0a\times b=0a×b=0。叉乘对零向量的解释为:它平行于任意其他向量。(当然,前面定义零向量平行于或垂直于任意向量那是不对的,因为零向量没有方向。)
已经证明了a×ba\times ba×b垂直于a、b。但是垂直于a、b有两个方向。那a×ba\times ba×b指向哪个方向呢?通过将a的头和b的尾相接,并检查从a到b是顺时针还是逆时针,能够确定a×ba\times ba×b的方向。
-
左手坐标系:
如果a和b呈顺时针,则a×ba\times ba×b指向您。
如果a和b呈逆时针,则a×ba\times ba×b远离您。 -
右手坐标系:
如果a和b呈顺时针,则a×ba\times ba×b远离您。
如果a和b呈逆时针,则a×ba\times ba×b指向您。

本文详细介绍了向量的基础概念及各类运算,包括向量的加减法、标量乘法、标准化、点乘与叉乘等。并给出了这些运算的具体应用实例。
2311

被折叠的 条评论
为什么被折叠?



