椭圆与三维曲面上的优化
本节课讨论如何求曲线或曲面上离给定点最近的点。从二维的椭圆开始,然后推广到三维的椭球体。核心方法是一个关于垂直性的几何条件,它能将复杂的优化问题转化为可解的方程组。
寻找曲线或曲面上最近点的问题在多个领域中均有应用:
- 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\)“的显式形式给出。要求 \(\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)\]
动画演示:在椭圆上寻找离目标点最近的点
Closest Point on Ellipse to Target
几何直觉
在曲线上离外部点最近的点处,连接二者的线段必须垂直于曲线。若不垂直,则可沿曲线微调以找到更近的点。这意味着从最近点到目标点的方向必须与法向量完全一致。
在椭圆上离 \(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\) 沿椭圆移动,观察距离的变化。
动画演示:距离函数的颜色编码网格
Distance Function Shown as Color-Coded Dots
Each dot shows the distance from that grid point to the target A. Darker blue = closer, darker red = farther. The ellipse boundary is overlaid.
拓展到三维:椭球体
椭球体是椭圆的三维版本。我们考虑的椭球体为:
\[\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}\)(比例条件)
- 求解方程组