椭圆与三维曲面上的优化
你有没有想过,GPS是如何找到离你最近的道路的?或者电子游戏是如何判断激光束击中弯曲飞船的哪个位置的?在这节课中,你将学习如何找到曲线上离任意给定点最近的点。我们将从二维的椭圆开始,然后进阶到三维曲面——椭球体。秘密武器是什么?一个关于垂直线的简单几何规则,它能让即使是棘手的优化问题也变得完全可解。
寻找曲线上最近点的问题无处不在:
- GPS导航:你的手机会找到道路上离你位置最近的点
- 机器人技术:机械臂计算到弯曲表面的最近距离
- 计算机图形学:光线追踪找到光线击中弯曲物体(如头盔和行星)的位置
- 卫星轨道:任务控制中心计算椭圆轨道到空间站的最近距离
椭圆和椭球体是自然界中最常见的形状——行星、轨道,甚至鸡蛋都大致是椭球形的!
本课内容
- 椭圆复习:圆心、轴、标准形式
- 优化:椭圆上离外部点最近的点
- 使用微分方程求法向量
- 几何直觉:法线必须指向外部点
- 建立和求解方程组
- 拓展到三维:椭球体和切平面
- 三维优化:椭球体上的最近点
课程视频
课程关键帧
预备知识
椭圆是一个被拉伸的圆。你可以想象把一个圆压扁,使它在一个方向上比另一个方向更宽。
以原点为中心的椭圆的标准形式为:
\[\frac{x^2}{a^2} + \frac{y^2}{b^2} = 1\]
- \(a\) = 宽度的一半(当 \(a > b\) 时为半长轴)
- \(b\) = 高度的一半(当 \(a > b\) 时为半短轴)
如果中心在 \((h, k)\) 而不是原点:
\[\frac{(x - h)^2}{a^2} + \frac{(y - k)^2}{b^2} = 1\]
两点 \((x_1, y_1)\) 和 \((x_2, y_2)\) 之间的距离为:
\[d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}\]
这直接来自勾股定理。在三维空间中,两点 \((x_1, y_1, z_1)\) 和 \((x_2, y_2, z_2)\) 之间的距离为:
\[d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2 + (z_2 - z_1)^2}\]
当你有一个像 \(x^2 + y^2 = 25\)(一个圆)这样的方程时,\(y\) 不是以”\(y = \dots\)“的形式写出来的——它和 \(x\) 混在一起。要求 \(\frac{dy}{dx}\),你需要对方程两边关于 \(x\) 求导,将 \(y\) 视为 \(x\) 的函数:
\[2x + 2y\frac{dy}{dx} = 0 \quad\Rightarrow\quad \frac{dy}{dx} = -\frac{x}{y}\]
这给出了曲线上任意一点处切线的斜率。
切线在某一点与曲线相切,沿曲线前进的方向延伸。法向量垂直于(成直角)切线。
如果切线的斜率为 \(m\),则法线的斜率为 \(-\frac{1}{m}\)(负倒数)。
法向量告诉你哪个方向是从曲面”直接向外”的——就像一根从球上伸出的箭头。
核心概念
椭圆复习
我们的椭圆以 \((5, -3)\) 为中心,半长轴 \(a = 8\)(水平方向),半短轴 \(b = 6\)(垂直方向):
\[\frac{(x - 5)^2}{64} + \frac{(y + 3)^2}{36} = 1\]
优化问题
目标:找到椭圆上离外部点 \(A = (20, 0)\) 最近的点 \(P = (x_0, y_0)\)。
我们要最小化距离:
\[d = \sqrt{(x_0 - 20)^2 + (y_0 - 0)^2}\]
约束条件是 \((x_0, y_0)\) 在椭圆上。
通过微分求法向量
对椭圆方程关于 \(x\) 进行隐函数求导:
\[\frac{2(x - 5)}{64} + \frac{2(y + 3)}{36}\cdot\frac{dy}{dx} = 0\]
化简:
\[\frac{x - 5}{32} + \frac{(y + 3)}{18}\cdot\frac{dy}{dx} = 0\]
所以椭圆上点 \((x_0, y_0)\) 处的切线斜率为:
\[\frac{dy}{dx} = -\frac{18(x_0 - 5)}{32(y_0 + 3)}\]
\((x_0, y_0)\) 处的切线方向沿向量 \(\left(1, \; -\frac{18(x_0 - 5)}{32(y_0 + 3)}\right)\),而在该点垂直于椭圆的法向量为:
法向量在椭圆的任意一点处”直接向外”指出。你可以通过求椭圆方程的梯度来找到它。对于以 \((h, k)\) 为中心的椭圆,\((x_0, y_0)\) 处的法线正比于 \(\left(\frac{x_0 - h}{a^2}, \frac{y_0 - k}{b^2}\right)\)。
\[\vec{n} = \left(\frac{x_0 - 5}{32}, \;\frac{y_0 + 3}{18}\right)\]
几何直觉
在曲线上离外部点最近的点处,连接它们的线必须垂直于曲线。如果不垂直,你可以沿曲线滑动并找到更近的点。这意味着从最近点到目标点的方向必须与法向量完全一致。
在椭圆上离 \(A\) 最近的点 \(P\)处,从 \(P\) 到 \(A\) 的连线必须垂直于椭圆——也就是说,它必须沿着法线方向。如果不垂直,你可以沿椭圆滑动并找到更近的点。
这意味着向量 \(\overrightarrow{PA} = (20 - x_0, \; 0 - y_0)\) 必须平行于法向量 \(\vec{n}\)。
两个向量平行,当且仅当它们的分量成比例:
\[\frac{20 - x_0}{\frac{x_0 - 5}{32}} = \frac{-y_0}{\frac{y_0 + 3}{18}}\]
化简为:
\[\frac{32(20 - x_0)}{x_0 - 5} = \frac{-18\,y_0}{y_0 + 3}\]
建立方程组
我们现在有两个未知数(\(x_0\) 和 \(y_0\))的两个方程:
方程1(点在椭圆上): \[\frac{(x_0 - 5)^2}{64} + \frac{(y_0 + 3)^2}{36} = 1\]
方程2(法线平行于 \(\overrightarrow{PA}\)): \[\frac{32(20 - x_0)}{x_0 - 5} = \frac{-18\,y_0}{y_0 + 3}\]
求解这个方程组(通过代入法或数值方法)即可得到最近点。
拖动滑块 \(t\) 让点 \(P\) 沿椭圆移动,观察距离的变化!
拓展到三维:椭球体
椭球体是椭圆的三维版本。我们考虑的椭球体为:
\[\frac{x^2}{1} + \frac{y^2}{4} + \frac{z^2}{9} = 1\]
这是一个拉伸的球体:沿 \(x\) 轴半径为1,沿 \(y\) 轴半径为2,沿 \(z\) 轴半径为3。
三维中的切平面和法向量
对于由 \(F(x, y, z) = 0\) 定义的曲面,梯度 \(\nabla F\) 给出法向量。
令 \(F(x, y, z) = x^2 + \frac{y^2}{4} + \frac{z^2}{9} - 1\),椭球体上点 \((x_0, y_0, z_0)\) 处的梯度为:
\[\nabla F = \left(2x_0, \;\frac{y_0}{2}, \;\frac{2z_0}{9}\right)\]
去掉公因子2,法线方向为:
对于由 \(F(x,y,z) = 0\) 定义的任何曲面,梯度 \(\nabla F\) 始终垂直于曲面。这是我们在二维中使用的法向量思想的三维版本,它在任何维度都适用。
\[\vec{n} = \left(x_0, \;\frac{y_0}{4}, \;\frac{z_0}{9}\right)\]
\((x_0, y_0, z_0)\) 处的切平面是在该点刚好与椭球体相切的平面,\(\vec{n}\) 从切平面直接向外指出。
三维优化:椭球体上的最近点
目标:找到椭球体上离 \(A = (5, 5, 5)\) 最近的点。
与二维的思路相同——在最近点处,从 \(P\) 到 \(A\) 的向量必须平行于法线:
\[\overrightarrow{PA} = (5 - x_0, \; 5 - y_0, \; 5 - z_0) \;\parallel\; \left(x_0, \;\frac{y_0}{4}, \;\frac{z_0}{9}\right)\]
这给出比例条件:
\[\frac{5 - x_0}{x_0} = \frac{5 - y_0}{\frac{y_0}{4}} = \frac{5 - z_0}{\frac{z_0}{9}}\]
结合椭球体方程 \(x_0^2 + \frac{y_0^2}{4} + \frac{z_0^2}{9} = 1\),这是一个可以求解的方程组。
几何推理是完全相同的:如果从曲面到外部点的连线不垂直于曲面,那么你可以沿曲面微调并找到更近的点。在真正的最近点处,没有”侧向”改进的可能——指向 \(A\) 的方向完全沿法线方向。
这个原理在任何维度都适用!
速查表
| 你想要什么 | 怎么做 |
|---|---|
| 椭圆标准形式 | \(\frac{(x-h)^2}{a^2} + \frac{(y-k)^2}{b^2} = 1\),中心 \((h,k)\) |
| 椭圆在 \((x_0, y_0)\) 处的法线 | \(\vec{n} = \left(\frac{x_0 - h}{a^2},\; \frac{y_0 - k}{b^2}\right)\) |
| 最近点条件 | \(\overrightarrow{PA} \parallel \vec{n}\)(法线指向目标点) |
| 椭球体标准形式 | \(\frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1\) |
| 椭球体在 \((x_0, y_0, z_0)\) 处的法线 | \(\vec{n} = \left(\frac{x_0}{a^2},\; \frac{y_0}{b^2},\; \frac{z_0}{c^2}\right)\) |
| \((x_0, y_0, z_0)\) 处的切平面 | \(\frac{x_0\,(x - x_0)}{a^2} + \frac{y_0\,(y - y_0)}{b^2} + \frac{z_0\,(z - z_0)}{c^2} = 0\) |
优化步骤
- 写出约束条件:点必须在曲线/曲面上
- 求导以找到法向量
- 建立等式:\(\overrightarrow{PA} \parallel \vec{n}\)(比例条件)
- 求解方程组