向量代数与空间解析几何
向量代数
向量及其表达形式
定义:既有方向又有大小的向量称为向量。
向量的相等性体现在大小和方向,与空间位置无关。
向量表达形式为。
向量运算
设,,,均不是零向量。
数量积
称为内积或点积。
- 。
- ,则,其中为夹角。
- 。
- 称在上的投影。
点积 = 余弦相似度的分子,推荐系统和 NLP 天天用。 把两个向量的「方向接近程度」压成一个数。机器学习里把文档、用户、词都表示成高维向量,再用余弦相似度 衡量它们有多像——这正是搜索、推荐、词向量(word2vec)的核心。神经网络一层全连接的本质,也是输入向量与每个权重向量做点积。
一句话:点积告诉你「两个向量方向上有多合拍」。 结果是一个数(不是向量):同向为正、垂直为 0、反向为负。两种算法等价——按坐标 ,或按 。它最常用来求夹角、判断垂直(点积为 0 即垂直),以及求一个向量在另一个方向上的投影。
向量积
也称为外积、叉积。
- ,其中,用右手规则确定方向(转向角不超过),其中为夹角。
- 或。
- 。
向量积的计算也可以如此理解,将两个向量上下摞在一起,然后右边再复制一份:
,向量积的第一个值就是2、3列的行列式值,第二个值就是3、4列的行列式值,第三个值就是4、5列行列式值,第1和第6列不用。
叉积 = 求法向量,3D 图形学的基本操作。 得到一个同时垂直于两者的向量,长度等于二者张成的平行四边形面积。游戏和渲染引擎里,用三角形两条边叉乘求出面的法向量,再据此做光照、背面剔除、碰撞判定;物理里的力矩、洛伦兹力也都是叉积。注意它不满足交换律(),方向由右手定则决定。
一句话:叉积的结果是一个「垂直于这两个向量的新向量」。 和点积不同,叉积算出来还是个向量:方向用右手定则(四指从 转向 ,拇指所指),大小是 ,正好等于两向量围成的平行四边形面积。两向量平行时叉积为零向量。计算时套那个含 的行列式即可。
混合积
- 。
- 交换两行不改变值:。
- 交换一行改变符号:。
- 三向量共面。
混合积 = 有向体积,也是判断「同向/共面」的开关。 是个 行列式,绝对值等于三向量张成的平行六面体体积,正负号表示三者构成右手系还是左手系。计算几何里用它判断点在平面哪一侧、四点是否共面(值为 0 即共面);3D 建模、凸包算法里的「定向」判断都依赖它的符号。
一句话:混合积先叉乘再点乘,结果是个数,等于「平行六面体的体积」。 ,可以直接写成三个向量按行排成的行列式。最有用的结论:它等于 0 当且仅当三个向量共面(挤扁成零体积)。轮换三个向量值不变,交换其中两个则变号。
向量方向角与方向余项
- 与轴、轴、轴正向的夹角、、为的方向角。
- ,,称为的方向余弦,且,,。
- 称为向量的单位向量(表示方向的向量)。
- 任意向量,,,称为的方向余弦,为的模,,,,。
空间解析几何
平面方程
假设平面的法向量。
- 一般式:。
- 点法式:。
- 三点式:(平面过不共线的三点)。
- 截距式:(平面过,,三点)。
直线方程
假设直线的方向向量。
- 一般式:,其中不平行于。(两个平面的交线,该直线方向向量)
- 点向式(标准式、对称式):。(直线上一点与方向向量成比例)
- 参数式:,为直线上已知点,为参数。
- 两点式:。(直线过不同的两点)
位置关系
直线关系
设,分别为直线,的方向向量。
- 。
- 。
平面关系
设平面,的法向量分别为,。
- 。
- 。
直线与平面关系
设直线的方向向量为,平面的法向量为。
- 。
- 。
距离
距离公式:
- 二维点到直线距离:点到直线的距离为。
- 三维点到平面距离:点到平面的距离为。
- 二维平行直线到直线距离:直线到直线的距离为。
- 二维非平行直线到直线夹角:直线到直线的夹角为()。
- 三维平行平面到平面距离:平面到平面的距离为。(在另一个面上任取一点计算该点到平面距离)
三维点到直线距离:(已知直线一般式方程和点)
- 根据一般式方程依次求一阶导得出两个面的法向量、。
- 使用向量积得出方向向量。
- 在上任意找到一点,计算向量,计算向量积,取其模,这个模即为三点所成三角形面积的两倍。
- 求出方向向量的模,所以到的距离可以化为两倍三角形面积。
- 所以,解得。
点到平面/直线距离 = 碰撞检测和 SVM 间隔的几何核心。 点到平面公式 在游戏物理里用来判断物体是否穿透墙面;在机器学习里,支持向量机(SVM)最大化的「间隔」正是样本点到分类超平面的这个距离,分母 就是法向量的模。点到直线距离用叉积模除以方向向量模,思路一样。
一句话:点到平面的距离 = 把点坐标代进平面方程,再除以法向量的长度。 平面 的系数 就是法向量。把点代入分子取绝对值、除以 就是垂直距离。两平行平面间距离只是把常数项之差 除以同一个模。记住「代入 ÷ 法向量长度」这个套路就够用了。
空间曲线
空间曲线某点的切线向量等于该点代入各自导数。
表达式
- 一般式:,表示两个曲面的交线。
- 参数方程:,。
空间曲线在坐标面投影
如求曲线在平面上的投影曲线,讲中的消去,得到,则曲线在面上的投影曲线包含于。
空间曲面
曲面方程
隐式表达式:,显式表达式:。
二次曲面
- 球面:。
- 椭球面:。
- 单叶双曲面:。
- 双叶双曲面:。
- 椭圆抛物面:()。(常见的有旋转抛物面)
- 椭圆锥面:。(常见的有旋转锥面)
- 双曲抛物面(马鞍面):()。(常见形式如)
柱面
空间解析几何中一般认为缺少变量的方程为柱面。
是动直线沿定曲线平行移动所形成的曲面。
- 椭圆柱面:(当为圆柱面)。
- 双曲柱面:。
- 抛物柱面:。
旋转曲面
绕某轴转,其就不变,把另外一个字母写成另外两个字母的平方和的开方。
如对旋转,则改为。
是曲线绕一条定直线旋转一周所形成的曲面。
给定一条直线,其方向向量为,上有一点。
现在给定一条曲线。
在上找一点,然后再讲绕旋转一周得到一个纬圆,去纬圆上一点,则为旋转曲面上任意一点。
因为在曲线上,所以,。
同一个纬圆到上的距离相等,既,即。
每一个纬圆的平面与旋转中心的方向向量垂直,而在平面上,所以该连线向量,即。
为了得到旋转曲面面积,需要消去,得到。
例题:求曲线绕轴旋转一周所形成的曲面方程。
解:令在曲线上,所以,。
然后任意一点到的距离与到距离相同,取,则。
两条连线垂直轴,即,即。
消去,根据,所以。
根据交线方程解得,。
再代入得到,解得。
场论初步
方向导数
偏导数就是一个函数在坐标轴方向上的变化率,而方向导数就是函数在某点沿其他特定方向上的变化率。
定义:设三元函数在点的某空间邻域内有定义,从点出发的射线,为上切在内的任一点,则进行在坐标轴上投影。
以表示与之间的距离。若极限存在,则称此极限为函数在点沿方向的方向导数,记为。
方向导数计算公式定理:设三元函数在点处可微分,则在点处沿任一方向的方向导数都存在,且,其中,,为方向的方向余弦。
例题:求函数在点处沿点指向方向的方向导数。
解:这是一个隐式的三元函数,所以基本上解决方法类似。不过需要将对求偏导。
,,代入,得到。
然后求方向余弦,对于方向余弦就是除它的模。
方向导数就是点乘:。
方向导数 = 沿任意方向的「上坡陡度」,梯度下降的基础。 它衡量函数沿某个方向走时变化有多快,等于梯度与该方向单位向量的点积。深度学习训练时,损失函数对参数的方向导数告诉我们「往这个方向调参,loss 升得快还是降得快」;反向传播算出的就是各方向的变化率。沿梯度反方向时方向导数最负——下降最快,这正是梯度下降法的依据。
一句话:方向导数就是「站在山坡上,朝某个指定方向走时的陡峭程度」。 偏导数只看沿 轴或 轴的坡度,方向导数能看任意方向。算法很固定:先求各偏导(梯度),再点乘你指定方向的单位向量(方向余弦)。所以一定记得把方向向量先除以自己的长度化成单位向量,否则结果会错。
梯度
在一个数量场中,函数在给定点处沿不同的方向,其方向导数一般是不相同的。为研究哪个方向的方向导数最大,最大值为多少,增加速度最快,就引入了梯度。
定义:设三元函数在点处具有一阶偏导数,定义为函数在点处的梯度。
方向导数与梯度关系
方向导数为梯度×梯度方向余弦。
函数在某点的梯度是一个向量,其方向与取得最大方向导数的方向是一致的,其模就是方向导数最大值。
梯度 = 「最陡上坡方向」,整个深度学习都建立在它之上。 指向函数增长最快的方向,模长就是最大变化率。训练神经网络就是反复算损失对参数的梯度、再朝梯度反方向走一小步(梯度下降)来把 loss 降下去;自动微分框架(PyTorch、TensorFlow)的核心任务就是高效地算这个梯度。图像处理里的梯度则用来检测边缘(亮度变化最快处)。
一句话:梯度是个向量,指向函数「上升最快」的方向。 把各个偏导数排成一个向量就是梯度。它有两个关键性质:方向是上升最快的方向(反方向就是下降最快),长度是这个最快变化率的大小。所以求「沿哪个方向方向导数最大」这类问题,答案永远是梯度方向,最大值就是梯度的模。
散度与旋度
定义:设向量场,则散度,旋度。
散度与旋度 = 描述向量场的「源」与「漩涡」,流体和电磁仿真离不开。 散度 是个标量,衡量某点是「源」还是「汇」(流出还是流入);旋度 是个向量,衡量场在该点的旋转强度与轴向。计算流体力学(CFD)、电磁场仿真、乃至图形学里的流体/烟雾模拟,都要离散地计算散度和旋度;散度为零的场叫「无源场」,旋度为零的叫「无旋场」(对应有势场)。
一句话:散度看「向外冒还是往里吸」,旋度看「转不转」。 把向量场想成水流:散度是个数,正的表示这点像个泉眼(往外冒水),负的像个排水口;旋度是个向量,表示水流在这点打转的强度和转轴方向。散度按公式把三个分量各自求偏导再相加;旋度套那个含 和偏导算子的行列式来算。