这个问题挂出来已有两个多月了,至今没有收到解答,看来难度的确不小。这是一个有趣而富有挑战性的问题,本人终于找到了解决方法,在此奉献出来,算是自问自答。
对该问题曾尝试过许多方法,都无果而终,比如仿射几何或齐坐标变换等。因为是不规则四边形,无论作纵坐标,横坐标单独或综合进行仿射变化,都不可能将之变为对称四边形(如矩形或菱形),而对称四边形的最大内切椭圆问题则可以解决(参看文章:趣味数学(5): 极值问题的可视化求解 - dchen505的视频 - 知乎 https://www.zhihu.com/zvideo/1485602750087593984)。 由于事先不知道最大内切椭圆与四条边相切的具体位置,也无法用齐坐标变换方法求解,只好用代数法进行硬解,这是本人经历的最复杂的方程求解问题,也是本人尝试过的各种极值问题中的得意之作,在解决过程中学到不少新的知识,特此分享给大家,请耐心往下看。
I) 凸四边形最大内切椭圆问题解法:
将椭圆标准方程: (其中 ) 沿X轴旋转 (弧度),方程化为:
, 简化为:
(1)式: ,其中
(2)式:
(3)式:
(4)式:
可见 为非负实数。
将椭圆中心由坐标原点移到 , (1)式化为:
(5)式: ,
这是平面中任意一个椭圆的方程表达式,其中含有 五个未知数,与四边形的四条边相切,得到四个方程,可以消除其中四个未知数,保留一个未知参数,这便为获得最大内切椭圆提供了理论保证。
(5)式两边对 求导:
,得:
(6)式:
为简化起见,将四边形 的 点置于坐标原点, 置于X轴,如下图:
#1. 椭圆相切 (X轴) 于 点 ,即 , 由(6)式得:
,即 ,
点 在椭圆上,代入(5)式,有:
,得
(7)式: 或
注:因 ,故 (需确保 ),
得到椭圆中心纵坐标 与 A, B, C的关系式。代入(5)式,便可消除一个未知数 。
#2. 椭圆相切直线 于 点 , 的斜率 (已知数), 即
, 根据 直线方程
, 代入: ,解得:
点 在椭圆上,满足(5)式:
将 的表达式代入(一个复杂的方程),整理得到:
(8)式:
这样便得到椭圆中心坐标 与 A,B,C的关系式,代入(5)式,便可消除两个未知数。
同理,根据椭圆相切直线 和 于 点,两直线的斜率分别为:
和 ,可以分别导出:
(看上去简单,推导过程却很复杂,这里从略)
再将 的表达式代入,便得到两个很关键的方程:
(9)式:
(10)式:
对于每个 B 的数值,便可确定 A,C 的数值(视A,C为变量,B为常量),方程展开除去根号,会变成关于A和C的二元8次方程组,不可能获得实数范围的代数解(一元5次以上方程便没有根式表达式了),那该怎么办?可用牛顿求根公式的向量拓展形式(视多变量为一个向量)求得数值解。为了便于习惯上看,将变量 分别记为: 。 定义函数:
方程组: 和 的根等同于(9), (10)式的根。记偏导数:
根据 的数值,选取恰当的初始值 (即 的初始值 ),有快速迭代公式:
等式右边分子分母的各项函数在 处取值 ,这是一个收敛速度很快的高效算法。
的取值范围和初始值 的选取有一定的讲究,不能随便乱取,否则很可能收敛不到正确的根。该如何选取呢?以具体的例子来说明这一点:
设四边形的四个顶点坐标为: , 相应四条边的斜率为:
。
从(2), (3), (4)式知道:A, B, C取决于椭圆的大小(半长轴a, 半短轴b) 和方向 (长轴与X轴的夹角 )。如下图,在四边形内取一个初始椭圆,不要求和四条边相切,但a和b不能超出四边形两条对角线的一半,大致估计一下,可取初值 ,注意 是辐角 的周期函数, 按(3)式,周期为180°,因此 可以在0到180°内任意取值(化为弧度), 例如取15°, , 则初始椭圆如图中绿色虚点所示:
于是获得一个B的数值和A,C的初值:
代入上面求根公式的迭代序列,很快收敛到一个正确的根(只需迭代4步便可获得6位正确小数):
有了A,B,C的数值,便可确定椭圆的大小( 的值),方向 和中心位置 ,该椭圆便是正确的椭圆,如图中红色椭圆所示,与四条边均相切。
如何计算它们的数值呢? 可由公式(7), (8)直接算出, 的值可由方程组(2), (3), (4)推算,但解方程比较麻烦,可以简捷推算如下,需将(5)式化为标准方程。
首先:将椭圆平移,令 , (5)式化为:
(11)式:
将椭圆反向旋转 (弧度), 或坐标轴正向旋转 (逆时针方向为正) 以消除交叉项 .
,即 ,
令 , 代入(11)得
(12)式: ,其中
将(12)改写为标准方程: , 其中
现在可以进行计算:
根据求根结果, , 而 是带入参数, ,得:
,
椭圆方向
(椭圆旋转 可调整到水平方向), 根据(7),(8)式算出椭圆中心位置:
。有了 的数值,便可确定这个内切椭圆的面积: (当然这个椭圆不是最大的)。
因为初值 是随便取的,当 连续变动时(决定了 值连续变动),便得到一个有趣的动图, 椭圆总是与四条边相切,参看视频:
内切椭圆动图和面积曲线 https://www.zhihu.com/video/1489361461827252224当自变量 取遍区间 的数值时,得到 A,B,C变化曲线及相应的椭圆面积曲线,非常有趣的是,内切椭圆在 和 时均取到相同最大值 ,而且在该区间内居然有唯一的最小值,极值点 时取到最小面积 .
至此,已成功解决了凸四边形最大内切椭圆问题。前后花费不少时间,但觉得很值,点赞一下吧,谢谢!
补充说明:
===================================================
本文方法是针对最大面积椭圆需要和四条边均相切的情形。
对某些情形,比如三角形形切去一个小角而形成的四边形,与其中三条边相切则能获得面积更大的椭圆。如何判别用三条边相切还是用四条边相切构造最大椭圆,可以如下操作:
挑选最短的一条边 (如图,设最短边为GH), 将相邻两条边EH和FG作延长线交于K点。形成三角形EFK,在三角形内取最大内切椭圆,若椭圆不超过边界GH,那么该椭圆也是四边形EFGH的最大椭圆。若超过边界,则按上文方法处理。至于三角形内如何取最大内切椭圆,可以查看文章:
数学随笔8:三角形内接椭圆问题集锦 - dchen505的文章 - 知乎 https://zhuanlan.zhihu.com/p/460022986
感谢大家的点赞与评论,感谢 @mathe 提供的射影几何方法,得出相同的数值结果。
II) 凹四边形最大内切椭圆问题解法:
凹四边形可以看作三角形内取一个点作为凹点,与两个顶点作连线形成的四边形。根据凹点的不同位置,可分几种类型:
浅凹型:凹点靠近某条边;深凹型:凹点远离某条边;中凹型:凹点在三角形中心附近。
无论何种类型,凹四边形最大内切椭圆问题与凸四边形不同,可以用几何方法解决该问题,处理起来相对简单,先叙述两条与该问题有关的引理。
引理1:任意两个面积相同的三角形,其最大内切椭圆面积相同;
引理2:任意三角形,其最大内切椭圆面积与三角形面积之比 (恒定值)
显然,若引理2成立,则引理1也成立。这里给出引理2的证明。
先引用仿射几何的一个基本定理:仿射变换保持平面图形的面积比不变。这个定理的证明在仿射几何可以找到,百度搜索一下即可,这里不打算给出证明,但可以简单验证一下。以三角形为例。
如图,三角形面积 , 设仿射变换:
仿射后三角形面积
面积之比 这是个定值,只与横坐标,纵坐标的缩放比 有关,与三角形本身面积大小无关。
我们知道,在正三角形(等边三角形)的所有内切椭圆中,以内接圆面积为最大,证明可以参见上面提到的 [数学随笔8]文章,这里只是引用一下这个结论。
设等边三角形的边长 , 则 高 。正三角形面积 , 其内接圆的圆心位于正三角形的重心,内接圆的半径 , 内接圆面积
内接圆面积与正三角形面积之比
根据仿射变换保持面积比不变的特性,当正三角形映射成任意三角形时,其内接圆映射成面积最大的椭圆。因此对于任意三角形,其最大内切椭圆面积与三角形面积之比 ,引理2 证毕。
根据引理2,三角形面积越大,其最大内切椭圆的面积也越大。因此,要寻求凹四边形的最大内切椭圆的问题就变得简单了,只需在凹四边形内找出最大三角形就行。
任意四边型最大的内切椭圆必须至少和三条边相切,对于凹四边形,最多只能与三条边相切,因此凹四边形的最大椭圆就只能与三条边相切。为求取最大内切椭圆,以一个具体实例来讲述:
如图,设四边形EFGH的E点位于坐标原点,EF置于X轴,G为凹点,各点坐标如图。
过凹点G作FG的延长线交EH于K点,作HG的延长线交EF(X轴)于L点,可以求得K点坐标为(3, 4.5), L点坐标为(6, 0)。可以算出,
三角形 EFK 的面积
三角形 EHL 的面积
三角形EFK的最大内切椭圆如图中红色椭圆所示,按引理2,其面积
该椭圆的中心位于N点 (称为椭圆N),以下将阐述,椭圆N就是凹四边形内面积最大的内切椭圆。
该椭圆不经过凹点G。那么是否存在经过G点的更大面积椭圆呢?这是不可能的。按引理2,只需证明在凹四边形内不存比EFK更大面积的三角形就行了。
因为是凹四边形,其最大三角形必须经过凹点G,否则在四边形内任取一点M,以四边形的两条边和过M点的直线形成的三角形,其面积要么小于EFK的面积,要么小于EHK的面积。这是因为,三角形面积 = 。底边的最大值为 EF=9, 高的最大值=6,如果底边取最大值 (以F为一个顶点),经过M点的三角形,其高度不会超过K点的高度,否则就超出四边形的边界了,因此面积不会超过 。同理,若高度取最大值(以H为一个顶点),其底边的长度不能超过EL,否则就超出边界,因此面积不会超过 . 所以,凹四边形内,不经过凹点的三角形,其面积不可能超过 .
那么,经凹点G,能否作出比EFK更大面积的三角形呢?比如以牺牲底边的一些长度换取更大的高度从而获得更大面积呢?这也是不可能的。
如图,在线段LF之间任取一点P,坐标为 ,其中 ,直线PG交EH于Q点,可以求得,Q点坐标为: ,三角形EPQ的面积
该函数曲线在区间 内是单调递增的,在 取最大值,也就是 P点移动到F点时,三角形面积最大,因此,过凹点G的三角形,以EFK为面积最大的三角形。
可以看出,过凹点G的直线PQ,必须处于两直线FK和HL之间,准确地说,PQ的斜率 必须介于直线FK的斜率 (-0.75) 和 HL的斜率 (-3.0) 之间,即 ,否则直线将跑出四边形的边界。
回到之前的提问,经过凹点G的椭圆,是否存在比椭圆N更大的椭圆呢?
设椭圆M(图中绿色椭圆)是经过G点,与EH和EF两条边相切的任意一个椭圆。以G点作椭圆的切线PQ,上面已经说明,该切线必须处于两直线FK和HL之间,否则切线PQ或椭圆M将超出四边形的边界。椭圆M其实是属于三角形EPQ的一个内切椭圆,面积小于EPQ的最大内切椭圆,又因为三角形EPQ的面积小于最大三角形EFK的面积,因此椭圆M的面积必定小于椭圆N的面积。因此,椭圆N也是凹四边形的最大内切椭圆。
概括而言,凹四边形内如何获取最大内切椭圆,只需找出其最大三角形,可由凹点作延长线获得两个三角形,其中一个就是面积最大的三角形,在最大三角形内取最大内切椭圆,就是凹四边形的最大内切椭圆。
至此,关于任意四边形的最大内切椭圆问题以完整解决,有何疑问,欢迎提出和评论。