[文化课] 圆锥曲线

零. 前言

警告: 此文的内容不被高考所允许, 因此很可能无所取材.

博主长期做不起圆锥大题, 故有此篇. 多数参考知乎专栏.

他说了些很有意思的观点, 试举一例: "联立方程时, 要整理成只关于 \(x\) 的方程: 这就把点的坐标 \((x,y)\) 给割裂了. 点的坐标 \((x,y)\) 是整体的, 而不是 \(x,y\) 两个分开的实数."

一. 基础观点

显然, 不把点的坐标认为是 \((x,y)\) 两个实数的方法只有: 把点视为线性空间的矢量. 后文我会用 "几何对象" 和 "代数对象" 做区分.

引入 齐次坐标, 用三维线性空间中的矢量 (代数对象), 表示二维平面上的点 (几何对象). 对应规则是, 三维矢量 \((\lambda x,\lambda y,\lambda)\;(\lambda\ne 0)\) 对应点 \((x,y)\).

之所以叫齐次坐标: 在方程里, 所有项的次数是相同的, 因为对三维矢量 \((x,y,z)\) 中的 \(\frac{x}{z}\)\(\frac{y}{z}\) 建立方程, 实际上每个项都是 \(0\) 次的.

顺带一说, 点 \((x,y,0)\) 是个无穷远点, 从平面几何角度是 "看不到" 的, 但是在我们纯代数的研究中, 它没什么特别的. 类似地有 \((0,0,c)\) 无穷远直线.

由于几何对象和代数对象不完全相同, 后文用等号 = 表示代数对象完全相同, 而同余号 表示几何对象相同 (也就是代数对象的等比放缩).

另外, 几何对象线 \(\ell:ax+by+c=0\) 也可以拥有齐次坐标 \((a,b,c)\), 它满足 \((\lambda x,\lambda y,\lambda z)\equiv(x,y,z)\), 所以和点的地位相同.

不难发现点 \(a\) 在直线 \(\ell\) 上, 等价于 \(a\cdot\ell=0\), 这是我们熟悉的向量内积. 但点积是很几何的概念, 我们认为它不是自然存在的. 为了表示这层关系, 我们找到了替代品: 对偶空间.

我们认为, 点的代数对象属于线性空间 \(V\), 线的代数对象属于对偶空间 \(V^*\). 因此将 \(V\) 中的矢量称为 点矢, \(V^*\) 中称为 线矢. 注意这都是代数对象.

齐次坐标让我们可以叉乘. 根据 \((A\times B)\cdot X=0\;(X\in\{A,B\})\), 我们晓得点矢叉乘 \((A\times B)\) 代表 \(\ell_{AB}\). 对偶地, 线矢叉乘 \((A\times B)\) 代表 \(\ell_A\cap\ell_B\).

这告诉我们: 点矢的叉乘是线矢, 线矢的叉乘是点矢.

二. 点乘

想要定义点矢之间的点积, 需要借助外力: \(3{\times} 3\) 可逆对称 矩阵 \(G\). 我们称其为度规.

\(G\) 可以定义 \(V\mapsto V^*\) 的映射: \(a\mapsto Ga\). 其中 \(V^*\) 的基底是对偶基. 还有 \(V^*\mapsto V\) 的映射: \(\ell\mapsto G^{-1}\ell\).

在度规有定义时, 它们是天造地设的一对. 将点矢记为 \(a^o\), 则其对应线矢为 \(a_o\). 将线矢记为 \(\ell_o\), 则其对应点矢为 \(\ell^o\). 这里 \(o\) 只是形式上的记法, 用于区分类别, 有时省略.

此时定义点乘 \(a^o\cdot b^o = a^o\cdot b_o\), 别忘了线矢和点矢的点积是天然的. \(G\) 的对称性使得 \(a\cdot b = b\cdot a\) 交换律成立.

此时有重要等式:

\[\det(G)\big[(a^o\times b^o)\cdot(c^o\times d^o)\big]=(a^o\cdot c^o)(b^o\cdot d^o)-(a^o\cdot d^o)(b^o\cdot c^o) \]

注意左侧是线矢的点乘, 用的是 \(G^{-1}\), 而右侧用的是 \(G\). 代入是容易验证的, 只要别忘了 \(\det(G)\cdot G^{-1}\)\(G\) 对称时就是 \(G\) 的伴随矩阵. 显然, 如果是四个线矢, 同样成立.

在研究几何对象时, \(\det(G)\) 就可直接拿掉.

三. 圆锥曲线

二次曲线\(3{\times 3}\) 对称矩阵 \(G\) 定义: 以 \(G\) 为度规, 则点矢 \(a\) 的几何对象属于该二次曲线, 当且仅当 \(a\cdot a=0\). 我们也将其称为 二次点列. 与之相对的是 二次线束: \(\ell\cdot\ell=0\)\(\ell\)\(G\) 对应的二次线束上.

\(G_{oo}\) 表示二次点列 (它类似线矢, 定义的是点的集合), 用 \(G^{oo}\) 表示二次线束. 在 \(G\) 可逆时, \(G\) 给出的二次点列, 其全部切线就是 \(G^{-1}\) 给出的二次线束. 因此用 \(G^{oo}\) 表示 \(G_{oo}\) 的逆矩阵, 反之亦然.

不难发现 \(G_{oo}\) 就是普通的二次曲线, 因为 \(a\cdot a\) 中包含了所有非齐次化意义下的二次或更低次项 (只需要调整 \(G\) 的系数). 而 \(G\) 的对称性能确保它 "唯一" (齐次坐标意义下).

\(G\) 可逆, 可作度规. 则 \(a^o\) 的极线是 \(a_o\). 线 \(\ell_o\) 的极点是 \(\ell^o\). 若 \(G\) 不可逆, 二次曲线会退化.

用两条线 \(a_o,b_o\) 构造二者构成的退化二次曲线 \(G\) 是简单的: 设 \(a_o=(a_1,a_2,a_3)\), 同理设 \(b_o\), 则 \(G_{i,j}=a_ib_j+a_jb_i\). 为了方便, 简写为 \(G_{oo}=a_ob_o+b_oa_o\), 再简写为 \(G_{oo}=a_o\otimes b_o\). 因为它本质上就是乘法.

同理, 构造退化二次线束为 \(G^{oo} = a^o\otimes b^o\), 其几何对象是所有经过 \(a^o\)\(b^o\) 的直线.

来看看 韦达定理 在哪里. 设直线 \(\ell_o\) 与非退化二次曲线 \(G_{oo}\) 交于 \(a,b\), 求 \(a,b\) 两点给出的退化二次线束. 有一种巧妙的思路转换, 但不易说清, 我直接写结论, 过程读者自证不难: 直线 \(m\) 属于该退化二次线束, 当且仅当 \(m\)\(\ell\) 的交点在 \(G\) 上, 或 \(m\)\(\ell\) 重叠.

因此可以翻译为 \((m\times l)\cdot(m\times l)=0\), 打开得 \((m\cdot m)(l\cdot l)-(m\cdot l)^2=0\).

可以看出, 我们得到了结果: 该退化二次线束的矩阵

\[F^{oo}=l^2G^{oo}-l^ol^o \]

值得注意的是 \(F^{oo}\) 确实是对称的, 因此 \(F^{oo}\equiv a^o\otimes b^o\).

我们可以不开根号, 就得到 \(F\). 这就是韦达定理, 因为 \(\begin{cases}a^o = (x_1,y_1,1)\\ b^o = (x_2,y_2,1)\end{cases}\) 时, 可以看到

\[a^o\otimes b^o = \begin{pmatrix} 2x_1 x_2 & x_1y_2+x_2y_1 & x_1+x_2\\ & 2y_1y_2 & y_1+y_2\\ & & 2 \end{pmatrix} \]

由对称性, 下半部分未给出.

同样的方法可以给出 \(a,b\) 的切线构成的退化二次点列. 还可以让 \(a^o\) 点引 \(G\) 的两条切线, 这两条切线构成的二次点列是 \(H_{oo} = a^2 G_{oo} - a_oa_o\). 而 \(\begin{cases}m_o=(k_1,-1,b_1)\\n_o=(k_2,-1,b_2)\end{cases}\) 的构造

\[m_o\otimes n_o = \begin{pmatrix} 2k_1k_2 & -(k_1+k_2) & k_1b_2+k_2b_1\\ & 2 &-(b_1+b_2)\\ & & 2b_1b_2 \end{pmatrix} \]

跃跃欲试? 马上就来.

例题: 有椭圆 \({x^2\over a^2}+{y^2\over b^2}=1\), 点 \(P\) 作该椭圆的两条切线垂直, 求 \(P\) 点轨迹.

解: 设点 \(p^o=(x,y,1)\), 椭圆 \(G_{oo}=\begin{pmatrix}1\over a^2&&\\&1\over b^2&\\&&-1\end{pmatrix}\), 则 \(p_o=({x\over a^2},{y\over b^2},-1)\).

\(p^2={x^2\over a^2}+{y^2\over b^2}-1\), 得切线的二次点列

\[H_{oo}=p^2G - pp=\begin{pmatrix} {y^2\over a^2b^2}-{1\over a^2} & \dots & \dots\\ \dots & {x^2\over a^2b^2}-{1\over b^2} & \dots\\ \dots & \dots & \dots \end{pmatrix} \]

对比上面的矩阵, 我们需要 \({H_{1,1}\over H_{1,2}}=-1\). 化简之后得到 \(x^2+y^2=a^2+b^2\). 这就是蒙日圆.

. 利用 \(\ell\cdot\ell\) 的正负来判断 \(\ell\) 是否与椭圆有交点, 是很快的. 它会写为 \(A^2a^2+B^2b^2-C^2\).

四. 交比与对合

接下来, 我们考虑代数对象: 二维矢量. 注意我们仍然考虑齐次坐标. 在这里, 点积基本上是我们所熟知的那个 (不引入度规), 也不区分点矢和线矢.

考虑某种线性变换 \(M\), 如果任意矢量 \(a\) 满足 \(M(Ma)\equiv a\), 我们称 \(M\)对合变换. 因为这种变换下, \(a\)\(Ma\) 是配对关系, 二者地位相同.

由于 \(\begin{pmatrix}a & b\\ c& d\end{pmatrix}^{-1}\equiv\begin{pmatrix}-d & b\\c & -a\end{pmatrix}\), 显然 \(a+d=0\)\(M\) 是对合变换.

实际上 \(bc=0\)\(a=d\) 时也成立, 但这样 \(M\) 就是恒等变换 (齐次坐标意义下), 因此不谈.

\(\epsilon=\begin{pmatrix}0 & 1\\-1 & 0\end{pmatrix}\), 两个向量的普通点积 \(x\cdot y=0\) 的解就是 \(y=\epsilon x\), 因为是叉乘效果. 二维矢量的叉乘结果是实数, 简记为 \([ab]\), 因为它就是行列式. 同理, 三维矢量中的 \(a\cdot(b\times c)\) 可以简记为 \([abc]\).

不难验证: 对称矩阵 \(M\)\(\epsilon\) 会得到 \(a+d=0\) 的矩阵. 因此我们说: 对合变换由对称矩阵 \(M\) 定义, \(a,b\) 对合等价于 \((Ma)\cdot b=0\), 这里是普通点积.

\(Ma\equiv a\), 称这样的 \(a\) 为对合变换的 不动点. 容易发现, 若有两个不动点 \(p,q\), 可以确定 \(M=(\epsilon p)\otimes(\epsilon q)\). 这就是因式定理.

我们用四个二维矢量 \(a,b,c,d\) 可以定义 交比 \(J_{ab,cd}={[ac][bd]\over[ad][bc]}\). 它有个强大之处: 某个线性变换 \(M\) 同时作用于 \(a,b,c,d\) 之上时, 交比不变, 因为分子分母只会同时乘 \(\det(M)^2\).

不难发现, 交比在齐次坐标下是良定义的 (不会算出不同结果).

构造三维行列式, 容易说明 \(a[bc]-b[ac]+c[ab]=0\), 再叉乘 \(d\) 即得 \([ad][bc]+[db][ac]+[ab][cd]=0\). 不难验证则有

\[J_{ab,cd}=\frac{1}{J_{ba,cd}}=1-J_{ac,bd} \]

\(a,b,c,d\) 不共线, 则 \(J_{ab,cd}\ne 0\). 这立刻说明 \(J_{ac,bd}\ne 1\), 也就是说, 交比不可能为 \(1\).

\(J_{ab,cd}=-1\), 则称 \(a,b\)\(c,d\) 互相 调和分割. 称 \(a,b,c,d\) 构成 调和点列.

如果某个对合变换中, \(p,q\) 是不动点, \(a,b\) 对合. 将 \(p,q,a,b\) 同时作该变换, 交比不变, 因此有 \(J_{pq,ab}=J_{pq,ba}={1\over J_{pq,ab}}\). 而交比不能为 \(1\), 这说明 \(p,q\) 调和分割 \(a,b\).

可见, 对合的两个点调和分割不动点. 而对于任意 \(a\), 有唯一的 \(b\) 使得 \(a,b\) 调和分割 \(p,q\). 且该对合可以经由不动点构造出. 故曰: 两个点对合, 等价于调和分割不动点.

上面的讨论是二维矢量上的. 我们要在三维矢量空间内讨论之. 也就是说: 我们可能会取 \(V\) 的子空间 \(S\), 其中 \(\dim S=2\), 然后讨论其内的向量 (用二维矢量的方法). 交比在线性变化下不变, 因此是坐标系无关的; 在研究 \(S\) 内向量时, 我们可以任取基底而不影响其结果.

具体操作方法, 见此例. 现在有 \(\ell\) 和其上 \(a,b\) 两点. 另作直线 \(m,n\)\(\ell\) 分别交于 \(c,d\) 两点. 如何验证 \(a,b\)\(c,d\) 是否调和分割?

\(a\) 的二维坐标表示形式是 \(a'\), 其余类似. 关键在如何计算叉乘. 注意到 \([a'c']=a'\cdot(\epsilon c')\), 这里是普通点积. 怎么去理解 \(\epsilon c'\) 呢? 观察 \(m\). 由于 \(m\in V^*\) 在子空间内也是线性泛函, 因此必然存在坐标表示形式, 记为 \(m'\). 这个坐标必然满足 \(m'\cdot c'=0\), 因此 \(m'\equiv\epsilon c'\).

同样的道理 \(n'\equiv\epsilon d'\). 但还需验证 \(m'\)\(n'\) 的比例系数是否相同. 这很简单: 注意到 \(m\mapsto m'\) 的过程是, 先得到 \(c=\ell\times m\), 再得到 \(c'\), 再得到 \(\epsilon c'\). 这都是对 \(m\) 作线性变换. 因此终过程是 \(m'=\mathscr Am\). 而真实值必然也是线性变换. 所以得到的结果相差必定是相同的倍数, 即 \(\mathscr A\) 与真实的线性变换之间的倍数.

所以 \(a'\cdot(\epsilon c')\) 就是 \(m\) 作用在 \(a\) 上, 即 \(m\cdot a\). 经过这样的转化, 我们会发现, 调和分割的条件是 \((m\cdot a)(n\cdot b)+(m\cdot b)(n\cdot a)=0\). 我们就用三维矢量, 表示了二维矢量的限制.

再说点别的. 此段可跳过. 考虑二次点列 \(G\), 类似地, 可以将其限制到 \(\ell\) 上, 得到 \(G'\), 仍然对称. 因此 \(G'\) 就给出对合, 不动点为 \(\ell\)\(G\) 的交点. 然后调和分割点 \(a,b\) 满足 \(a\cdot b=0\), 以 \(G\) 为度规.

换句话说: 若 \(a\cdot b=0\), 则 \((a\times b)\)\(G\) 的交点被 \(a,b\) 调和分割.

五. 二次交比

二次曲线 \(G\) 上取四个点 \(a,b,c,d\), 再任取 \(p\), 则这四个点与 \(p\) 所成直线是 \(\dim=2\) 的子空间, 交比有定义. 类似上面推导, 二维叉乘可以直接变为三维空间的线与点的内积, 而线是点矢叉乘得到. 于是 \(J=\frac{[pac][pbd]}{[pad][pbc]}\).

我们稍做处理. 仍令 \(G\) 为度规. 根据行列式的性质, \([p^oa^oc^o]=\det(G)[p_oa_oc_o]\), 令线矢为行向量, 点矢为列向量, 则

\[\det(G)[p_oa_oc_o]^2 =\det\begin{pmatrix} p_o\cdot p^o & p_o\cdot a^o & p_o\cdot c^o\\ a_o\cdot p^o & a_o\cdot a^o & a_o\cdot c^o\\ c_o\cdot p^o & c_o\cdot a^o & c_o\cdot c^o \end{pmatrix}\\ =\det\begin{pmatrix} 0 & p\cdot a & p\cdot c\\ a\cdot p & 0 & a\cdot c\\ c\cdot p & c\cdot a & 0 \end{pmatrix} =2(p\cdot a)(p\cdot c)(a\cdot c) \]

对分子分母同时处理, 最终得到 \(J^2={(a\cdot c)(b\cdot d)\over (a\cdot d)(b\cdot c)}\). 而 \(J\) 关于 \(p\) 是连续变化的, 因此 \(J\) 是常数 (而不是两个相反数胡乱变化). 既然 \(J\)\(p\) 无关, 我们就直接认为这个 \(J\)\(a,b,c,d\) 四个点的交比. 由于点在二次点列上, 称其为 二次交比.

考虑调和点列, 只需 \(J^2=1\). 移项我们会拿到: \((a\times b)\cdot(c\times d)=0\).

二次交比本质上还是交比. 故根据之前所说, 若 \(p,q\) 是不动点, 则调和分割条件 \((a\times b)\cdot(p\times q)=0\) 等价于 \(a,b\) 对合条件.

\(\ell=p\times q\) 做替换, 我们知道 \(\ell\) 给出了对合变换, \(\ell\)\(G\) 的交点就是不动点.

它有什么用? 考虑这样的问题: 过椭圆上定点, 做两条直线分别与椭圆相交于另外两点 \(a,b\). 若两直线斜率和为定值, 问 \(a,b\) 所连直线是否经过定点. 答案是肯定的: 斜率和为定值, 这是对合条件. 而椭圆上的对合由直线 \(\ell\) 确定, 则 \(a,b\) 连线恒过 \(\ell\) 对应的极点, 证毕.

而这个对合是很容易找到不动点的: 若斜率和为 \(s\), 则斜率为 \(s\over 2\) 的直线是不动的, 以及 斜率不存在的直线, 即与 \(y\) 轴平行的直线.

从变换角度: 没有哪条直线可以跟这条直线对合, 因此这条直线必然跟自己对合, 是不动点. 从代数角度: 设点 \((x_0,y_0)\), 则斜率为 \(k\) 的直线的三维矢量 \((k,-1,y_0{-}kx_0)\). 从中可见, 以 \(i=(1,0,-x_0),\;j=(0,-1,y_0)\) 为基底, 坐标为 \((k,1)\), 对合矩阵是 \(\begin{pmatrix}0 & 1\\1 & -1\end{pmatrix}\). 无斜率直线的坐标则为 \((1,0)\), 明显看出这是不动点.

该结论可逆用: 过定点的直线与圆锥曲线交于两点, 与圆锥曲线上第三点所成的两直线对合. (因此 "双线参" 总是本质且高效的普通解法.)

但联立极线和椭圆, 有悖于初衷. 不妨找到方法使得: 给出 \(l_o\)\(G\)\(s^o\) 时, 设 \(l_o\)\(G\) 交于 \(a^o,b^o\), 能否直接求出 \(H_{oo}=(a^o{\times} s^o)\otimes(b^o{\times} s^o)\) 呢?

我不知道怎么推导, 但是可以证明

\[H_{oo}=s_o\otimes l_o-(s\cdot l)G_{oo} \]

理由是: 直线 \((a^o{\times} s^o)\) 上的所有点 (除 \(a^o\) 点) 可表示为 \((s^o{+}\lambda a^o)\). 代入上式, 知该直线属于 \(H_{oo}\). 对 \((b^o{\times}s^o)\) 同理, 故 \(H_{oo}\) 就是这两条直线. 恰好这个 \(H_{oo}\) 还是对称的.

因此 "逆用结论" 不再需要解方程. 正用结论也不需要解方程了! 只需要构造

\[H_{oo}\times_2G^{oo}=-(s\cdot l) \]

因为 \(G_{oo}\times_2 G^{oo}=3\). 别忘了逆矩阵可以用伴随矩阵得到.

正用结论时, 写出 \(H_{oo}\) 是不用解二次方程的. 靠上式得到 \((s\cdot l)\) 后, 直接有 \(H_{oo}+(s\cdot l)G_{oo}=s_o\otimes l_o\), 由于 \(s_o\) 已知, 作除法即可.

如果顶点在坐标轴上, 暴力联立也很快, 可以采用.

. 椭圆 \(\frac{x^2}{6}+\frac{y^2}{3}=1\), 过 \((3,0)\) 引直线, 问椭圆上 \((2,1)\) 与两个交点所成直线的对合关系.

解: 极线为 \(\ell:x=2\), 交点为 \((2,\pm 1)\), 与 \((2,1)\) 所成直线分别为: \((2,1)\) 处的切线 (这就是我要说的: 当点重合时, 所成直线为切线) 即 \(\ell:x+y=3\)\(\ell:x=2\). 斜率为 \(k_1=+\infty,\;k_2=-1\), 因此对合条件为 \(k_1+k_2=-2\).

顺带一说, 整个推导过程并不要求坐标是实数, 因此过椭圆内定点时, 其极线会与椭圆相交于坐标为复数的位置, 不必担心.

六. 仿射几何的中点

已经确定 \(a,b,c\) 共线时, 取 \(s\)\(\ell_{ab}\)\(\ell_{\infty}\) (无穷远直线) 的交点, 则 \(c\)\(a,b\) 中点, 等价于 \(c,s\) 调和分割 \(a,b\). 证明略.

于是考虑这个问题: 过定点 \(a\) 的直线与圆锥曲线 \(G\) 的交点的中点的轨迹.

由于直线是否为无穷远直线并不重要, 因此下文将无穷远直线简写为 \(\ell\).

设该点为 \(m\)\(s=(m\times a)\times l\equiv(l\cdot m)a-(l\cdot a)m\) 要使得 \(m,s\) 调和分割 \((m{\times}s)\)\(G\) 的交点. 前面说过, 以 \(G\) 为度规, 等价于 \(m\cdot s=0\). 代入得

\[m\cdot s = (l\cdot m)(a\cdot m)-(l\cdot a)(m\cdot m)=0 \]

可以看出结果是 \(H_{oo}=l_oa_o-(l\cdot a)G\). 但是它不对称! 因此做对称化处理得到

\[H_{oo}=l_o\otimes a_o-2(l\cdot a)G_{oo} \]

但是, 根据 初级的愚蠢的 解析几何观点, 交点不能是无穷远点或复数点, 因此该圆锥曲线还需额外寻找范围, 非常讨厌.

七. 例子

该部分只是记录些我曾用过的此方法. 理论上, 下面的内容都无须阅读.

. 设椭圆 \({x^2\over a^2}+{y^2\over b^2}=1\), 设 \(P,N,M\) 是椭圆上三点, 满足 \(M,N\) 关于 \(x\) 轴对称. 设 \(PM,PN\) 分别与 \(x\) 轴相交于 \(R,S\), 求证: \(x_Rx_S=a^2\).

解: 设左右顶点为 \(A,B\). 以 \(x\) 轴为对合直线, 则 \(M,N\) 对合, 则 \(M,N,A,B\) 是二次调和点列, 则 \(MP,NP,AP,BP\) 是调和线束, 与 \(x\) 轴相交, 则 \(R,S,A,B\) 是调和点列 (同时叉乘, 叉乘是线性变换, 不改变交比), 不难证明只需 \(x_R x_S=a^2\).

另解: 构造 \(P\) 关于 \(x\) 轴对称点 \(Q\), 则 \(R,S\) 是两种 "两组边交点". 结论是二者互极 (点乘为零), 证明是向量式爆算: 设四点 \(a,b,c,d\), 只需证

\[[(a\times b)\times(c\times d)]\cdot[(a\times c)\times(b\times d)]\\ \equiv[(a\times b)\cdot(a\times c)]\;[(c\times d)\cdot(b\times d)]-[\cdots][\cdots]\\ \equiv[(a\cdot b)(a\cdot c)][(b\cdot d)(c\cdot d)]-[(a\cdot b)(d\cdot b)][(a\cdot c)(d\cdot c)]=0 \]

由于形式类似, 省略了部分繁琐的东西.


应该不会再有新东西了. \(\tt 2022/12/22\) 终.

posted @ 2022-11-16 16:48  OneInDark  阅读(700)  评论(10编辑  收藏  举报