刚在微博上看到一道很有意思的数学问题,原题是:如果椭圆游泳池有一英尺宽的边缘,问:边缘外围是否仍为椭圆?这个问题背后还有个八卦故事,数学家Steven Strogatz是非线性动力学大师级人物,广为人知的是他和自己的高中数学老师Don Joffray有着深厚的友谊,这位老师是把他带入数学殿堂的引路人,一次他在接受采访时,Strogatz讲到自己和这位老师的故事,他们即使在毕业后也一直保持着联系,一开始是他写信请教老师问题,但转折点就是这个“elliptical pool”问题,老师第一次被问住了,反而是他给老师解释,这令他激动不已。
        有趣的问题就是这样,看起来足够简单,却要费一番脑筋才能想清楚。这里先定义一个概念,“一英尺宽的边缘”的数学含义,是指在椭圆的每个点的法线方向上扩展一定的长度,微博上另一位博主给出了一个很相像的动态图来描述,这里直接借用一下:

        这个问题有两种解决思路,一种是纯粹从数学公式入手,这里给出一个解法,首先对于任意一个椭圆,用参数函数表达:
\begin{equation}
x=a\cos\theta,\quad
y=b\sin\theta,\quad
0\le\theta\le 2\pi\tag1
\end{equation}
        利用微分知识可知,对于平面上任意一个连续的曲线函数,如果其参数方程表达为x=x(t),y=y(t),那么在任意点P0点处的法线方程可以表达为
\begin{equation}
\frac{y-y_0}{x-x_0}=-\frac{x'(t_0)}{y'(t_0)}\tag2
\end{equation}
        所以对于椭圆上任意一点(x0,y0),它的法线方程是
\begin{equation}
\frac{y-y_0}{x-x_0}=\frac{a\sin\theta}{b\cos\theta}\tag3
\end{equation}
        假设轮廓的宽度为K,那么椭圆上的点(x,y)对应的外廓的点(x’,y’)的方程为
\begin{equation}
\begin{aligned}
x’ &=a\cos\theta+K\frac{b\cos\theta}{\sqrt{(b\cos\theta)^2+(a\sin\theta)^2}}\\
y’ &=b\sin\theta+K\frac{a\sin\theta}{\sqrt{(b\cos\theta)^2+(a\sin\theta)^2}}
\end{aligned}
\tag4
\end{equation}
        如果这个轮廓是一个椭圆的话,那么必然(x’,y’)满足椭圆方程
\begin{equation}
(\frac{x’}{a+K})^2+(\frac{y’}{b+K})^2=1\tag5
\end{equation}
        把公式4代入5中既可发现只有在a=b时公式才成立,所这个轮廓不是椭圆。
        当然,如果只是想知道答案的话,可以不用这么麻烦,还有一种思路就是利用极端情况。设想一下这个椭圆极其“扁”,那么它的形状像是两条紧紧贴在一起的线段,不难想象,如果在这个椭圆外扩展一个宽度,那么新的轮廓的的上下边缘类似于两条分开的平行线段,但两端却无法平滑连在一起,这个形状类似于一个圆角的矩形,显然不是椭圆,下面是一个用Mathematica模拟的动态图
a = 10; K = 2; fx[t_, f_] := a*Cos[t]; fy[t_, f_] := a*f*Sin[t]; FX[t_, f_] :=    a*Cos[t] + K*(a*f*Cos[t])/Sqrt[(a*Sin[t])^2 + (a*f*Cos[t])^2]; FY[t_, f_] :=    a*f*Sin[t] + K*(a*Sin[t])/Sqrt[(a*Sin[t])^2 + (a*f*Cos[t])^2]; m = Table[    ParametricPlot[{{r*fx[t, f], r*fy[t, f]}, {FX[t, f],        FY[t, f]}}, {r, 0, 1}, {t, 0, 2 Pi}, Mesh -> False,      Ticks -> None, Frame -> False,      PlotRange -> {{-13, 13}, {-13, 13}}], {f,      PadRight[Table[i, {i, 1, 0.1, -0.05}], 30, 0.1]}]; Export["d:\\eclipse.gif", m]

4 thoughts on “一道数学趣题

  1. 最后对极端情况的描述里有些小错误:“但两端却无法平滑连在一起”。其实是平滑的,只是作图时在两端采样率不够而已。极扁的椭圆两端曲率非常大,要相应地调整采样率才能画出接近真实的“外扩曲线”。我在微博上发过一张很平滑漂亮的“胶囊曲线”。

  2. Export[“EllipseAnimation.gif”,Table[Manipulate[ParametricPlot[{{5 Cos[t],b Sin[t]},{Cos[t] (5+b/Sqrt[b^2 Cos[t]^2+25 Sin[t]^2]),Sin[t] (b+5/Sqrt[b^2 Cos[t]^2+25 Sin[t]^2])}},{t,0,2Pi},PlotRange->6.2,PlotPoints->100,PlotStyle->{Red,{Blue,Thin}}],{{b,a,”Short axis”},0.1,5}],{a,Range[0.1,5,.1]}]];

  3. 我是www.sphysics.cn站长,看到你的关于sph的文章很不错,能否转载呢?欢迎到sph中国坐坐,地址是www.sphysics.cn

发表评论

邮箱地址不会被公开。

This site uses Akismet to reduce spam. Learn how your comment data is processed.