本周的Riddler经典是关于如何切割披萨以获得精确的切片面积比。
迪恩做了一个比萨饼与他的三个朋友分享。在他们四人中,他们每人想要不同数量的披萨。特别是,他们的食欲比是1:2:3:4。因此,迪恩想在披萨上做两个完整的直切(即和弦),得到四块面积比为1:2:3:4的披萨。
迪恩应该在哪里做这两片?
额外学分:假设迪恩和更多的朋友一起分披萨。如果六个人分享比萨饼,迪恩沿着三条在一个点相交的和弦切割,那么他能达到多大程度上接近1:2:3:4:5:6的比例?如果有八个人共享披萨怎么办?
我的解决方案:
[显示解决方案]
推导面积公式
首先假设披萨是一个半径为1的圆,然后使用坐标系,原点位于披萨的中心。由于所有切割都必须在圆内部的一个公共点相交,因此可以旋转圆,使交点位于正$x$-轴上。设交点为$X$,坐标为$(X,0)$。我们通过这一点进行$n$切割,这将导致$n$和弦在$x$-轴上方$n$点处与圆相交,在$n$轴下方$n$处相交,因此总共$2n$点。
- 让$\theta_i$表示点$i$与正$x$-轴的夹角,相对于交点$x$进行测量。
- 让$\phi_i$表示点$i$与正$x$-轴的夹角,相对于原点$O$测量。
- 让$L_i$表示点$i$和交点$X$之间的线段长度。
下图说明了$n=3$情况下的一组可能的削减。
现在我们必须计算不同切片的面积。在上面的图表中,在削减$1$和$2$之间的一个这样的部分是阴影。我们将把每个切片分成三角形部分$\triangle_{12}$和四舍五入部分$\bigcirc_{12{$。
- 三角形部分是三角形$XP_1P_2$。根据边长$XP_1=L_1$和$XP_2=L_2$以及角度$\angle P_1XP_2=\theta_2-\theta_1$,面积为
\[
\三角{12}=\压裂{1}{2} L_1L_2\sin(\theta_2-\theta_1)
\]
- 圆角部分是圆形扇区$O P_1P_2$和三角形$OP_1P_2$s之间的差值。由于披萨的半径为$1$,因此$OP_1=OP_2=1$。圆形扇区的面积为$\frac{1}{2}(\phi_2-\phi_1)$,三角形的面积为$\frac{1}{2}\sin(\phi_2-\phi_1)$。因此,切割$1$和$2$之间的切片具有总面积:
\[
\bigcirc{12}=\frac{1}{2}\左((\phi_2-\phi_1)-\sin(\phi_2-\phi_1)\右)
\]
我们的下一个任务是用$x$和$\theta_i$表示$\phi_i$和$L_i$。考虑点$P_i$。根据我们是通过$O\到P_i$还是通过$O\到X\到P_i$到达那里,我们可以用两种不同的方式来写它的坐标。这就产生了
\[
P_i=\begin{bmatrix}\cos\phi_i\\sin\phi_i\end{bmatricx}
=\开始{bmatrix}x+L_i\cos\theta_i\\L_i\sin\theta_i\end{bmatrix}
\]将这些方程平方并求和以消除$\phii$,我们得到
\[
1=(x+L_i\cos\theta_i)^2+L_i^2\sin^2
\]求解$L_i$并保持正根(因为$L_i \gt 0$),我们发现
\[
L_i=\sqrt{1-x^2 \ sin^2 \ theta_i}-x \ cos \ theta_i。
\]把所有的东西放在一起,我们现在有了一个切片面积的公式!在切割$1$和$2$之间的切片情况下,面积为:
$\显示样式
\开始{对齐}
A_{12}(x,θ_1,θ_2)&=frac{1}{2} L_1L_2\sin(\theta_2-\theta_1)+\frac{1}{2}\bigl((\phi_2-\phi_1)-\sin(\phi_2-\phi_1)\bigr)\\
\text{where:}\,\,&\ left \{\ begin{aligned}文本
L_i&=\sqrt{1-x^2\sin^2\theta_i}-x\cos\theta_i\\
\phi_i&=\arccos\left(\cos\theta_i\sqrt{1-x^2\sin^2\theta_i}+x\sin^2\theta_i \right)
\右端{对齐}。
\结束{对齐}
$
类似的公式适用于其余的切片,因此如果我们有$n$个切割,并且我们指定了交点的位置$x$和角度$\theta_1、\dots、\theta_n$,我们可以找到每个切片$A{ij}$的面积的公式。
寻找最佳切割集
如果我们有$n$的削减,就会有$2n$的切片。为了简单起见,让我们规范化区域,使总面积为$1+2+\dots+2n=2n^2+n$,并将规范化区域标记为$A_1、\dots、A{2n}$(以逆时针顺序,从$A{12}$开始)。这样做的原因是,例如,在$n=2$的情况下,我们希望$4$片的比率为$1:2:3:4$。因此,我们将总面积归一化为$1+2+3+4=10$。这样我们可以直接尝试使$A_1=1$、$A_2=2$等。
每个区域都是参数$\{x、\theta_1、\dots和\theta_n\}$的函数。目标是找到一组参数,这些参数给出的面积与数字$1,2,\点,2n$非常接近。有很多方法可以定义“亲密度”。我将使用最小二乘法标准,在这种情况下做得很好,因为它确保所有区域“大致相等地接近”它们应该是什么,并且没有大的偏差。
例如,在$n=2$的情况下,我们的任务是选择$(x,\theta_1,\theta _2)$,以便将以下函数最小化:
\[
J_1=(A_1-1)^2+(A_2-2)^2+
\]但还有更多……如果切片没有按照这个特定的顺序1、2、3、4出现呢?我们还应该检查其他排列!例如,我们还应该尝试以下功能:
\开始{align}
J_2&=(A_1-1)^2+(A_2-2)^2+\\
J_3&=(A_1-1)^2+(A_2-3)^2+\\
&\光盘
\完{align}输入全部,将有$(2n)!$排列,或者在$n=2$的情况下为$24$。如果我们利用反射中的对称性,这个数字可以减少2美元。
因此,我们的流程如下:
- 选择$\{1,2,\dots,2n\}的排列$p$$
- 求最小平方成本的$(x,\theta_1,\tosts,\theta _n)$
\[
J_p=\sum_{i=1}^{2n}\bigl(A_i(x,θ_1,点,θ_n)-p_i\bigr)^2
\]受约束$0\leq x\leq 1$和$0\leq\theta_1\lt\cdots\lt\theta_n\leq\pi$的约束。
- 如果我们可以获得$J_p=0$,那么我们就有了一个完美的匹配,我们可以停止。否则,返回步骤1并选择不同的排列$p$。重复上述步骤,直到测试完所有排列。
函数$J(x,theta_1,dots,theta_n)$是一个困难的(读:非凸)函数,但仍然相对良好(读:连续可微),因此标准的非自助解算器足以完成此任务。我使用了Matlab的约束非线性优化器fmincon公司.
要直接跳到结果:
[显示解决方案]
4片案例
对于$n=2$(4件)的情况,可以实现精确的理想比率。这里有一个可行的解决方案,我用它的标准化区域标记每个切片。
在上面的例子中,$x=0.3406$和$\theta={0^\circ,69.838^\cic}$。这个案例很好,因为$1+4=2+3$,所以其中一个切口实际上是一个直径,并穿过中心!总的来说,有六种排列可以为4个切片的情况提供有效的解决方案:
左栏中的每个解决方案在右栏中的旁边都有一个“孪生”,它来自于反映关于$x$-轴的解决方案。
6片案例
在这种情况下,不可能达到准确的理想比率。一些排列可以变得“更接近”(在最小二乘意义上),因此为了找到最佳排列,我们必须尝试所有可能的排列。可实现的最小最小二乘误差为0.0024$,它是通过单个排列(及其孪生排列)实现的。这就是解决方案。再次,我用其标准化区域标记每个切片。
这个解对应于$x=0.3488$和$\theta=\{19.200^\circ,80.363^\cic,160.910^\cic\}$。
8片案例
这个案例与前一个案例类似。这一次,可实现的最小最小二乘误差为0.0032$,再次通过单个排列(及其孪生排列)实现。这就是解决方案。
该解决方案对应于$x=0.1875$和$\theta=\{13.768^\大约,28.356^\大约,68.600^\大约,135.310^\大约。有趣的是,即使有一些排列会导致均衡分割,例如$2+3+5+8=1+4+6+7$(这样的分割意味着其中一个分割穿过中心),但这些均衡分割都不会产生与上述所需比率接近的解决方案。