我在准备a时遇到了以下有趣的问题 比赛。
你有一个长度为a, b, c
的长三角形和一条长度为L
的绳索。你需要找到
表面由绳索包围,具有最大的表面积,并且必须完全在三角形内。
所以,如果是L = a + b + c
,那么它就是三角形的区域。
否则,我们知道圆圈的周长面积最大,所以如果L
小于或等于三角形内切圆的周长,则该区域将是圆的面积周长L.
所以,剩下的情况是alfa < L < a + b + c
,其中alfa
是内切圆的周长。
任何想法都会很棒!
EDIT
:我想知道是否应该专注于某种算法来解决这个问题
或试图找出一个数学公式。比赛包含两者的组合。边长度可以长达100,a,b,c,L
的精度在小数点后是4位数。
答案 0 :(得分:3)
由于圆圈具有最大的面积/周长,因此从inscribed circle开始。如果L小于该周长,则适当收缩。如果L更长,则增长3个弧中的任何一个使dA / dL最大化。我不知道是否有一个封闭的形状,但是最大的弧将位于三角形的第3个,并且两侧最接近平行。
在算法上解决这个问题应该是微不足道的。精度为4位小数,递增0.0001检查每个弧,看哪个弧的dA / dL最大。
我在一夜之间绘制了几何图形: 通过将每个角度二等分并找到平分线的交点来构造内切圆。我标记了半角“a1”(并且所有相关变量都为'1')。非圆形部分的面积是两个梯形(一个用红色轮廓表示)。我们可以将单个梯形的面积计算为L1 *(m1 + R)/ 2(注意,当L1,L2,L3都为零时,这些梯形都为零,我们只得到内切圆区域)。圆形帽的半径为m1,以保持与三角形边相切。对于给定的L1选择,m1 = R(x1-L1)/ x1。
从这里,您可以轻松计算三个扇区中每个扇区的周长和面积,并以数字方式求解。
我无法证明这是最大的区域,只是这是如何计算这种结构的面积和周长。
答案 1 :(得分:3)
在阅读了这个问题的答案后:https://math.stackexchange.com/questions/4808/why-circle-encloses-largest-area,我同意n.m.,并认为最佳曲线验证:
利用这些条件,通过三个相同半径R的圆获得解,每个圆与三角形的两边相切(见下文)。当R在0和内切圆的半径之间变化时,我们从三角形本身开始,并结束到内切圆,其中所有三个圆都重合。曲线的长度是半径R的圆周长+较小三角形的周长(p):L = 2 * Pi R + p。该区域是较小三角形的区域(a)+半径为R的一个圆盘+剩余的矩形:A = Pi R ^ 2 + p * R + a。
答案 2 :(得分:2)
如果绳子的周长太小或太大,答案是微不足道的。有趣的情况是具有6个顶点的形状,其呈线 - 弧 - 线 - 弧 - 线 - 弧。弧与它们的相邻线相切并且它们的半径相等。我没有严格的证据,但想象一个充满空气并挤在三角形两侧之间的2D气球。
很容易表示整体形状,因此给出半径的周长;然后,在数字上很容易找到相反的方向(周长到半径)。
答案 3 :(得分:2)
..回答我自己的评论/问题,可以证明半径必须相等,
这是一个有用的公式:
灰色区域A是
A = r^2 ( alpha - Pi + 2/tan(alpha/2) ) /2
但更有用......弧长只是:
s = 2 ( b - A/r )
从这里可以直接看出三个半径必须相等:
书写绳索长度和封闭区域:
ropelength = trianglelength - 2 Sum[r[i] a[i] ]
ropearea = trianglearea - Sum[r[i]^2 a[i] /2 ]
,其中
a[i]=( alpha[i] - Pi + 2/tan(alpha[i]/2) )
经过一些操作后,最大化区域会导致所有r [i]相等。注意三个a [i],ropelength,trainglearea,trianglelength都是你不需要计算的常量。小心翼翼地将r[l] = f( constants, r[2],r[3] )
sub解析为第二个表达式并解析为d ropearea /d r[2] = 0
和d /d r[3] = 0
的结果:
r =(1/2) (triangle_length - rope_length) /(Sum(1/tan(alpha[i]/2)) - Pi)
(a [i]的凌乱表达式最后只在最后一步被替换)。
ropearea = trianglearea - (trianglelength-ropelength)^2/(8 Sum[a[i])
= trianglearea - (1/2)(trianglelength-ropelength) r
编辑 - 一个有用的身份..与a,b,c,边长。
Sum(1/tan(alpha[i]/2)) = Sqrt( S^3 / ((S-a)(S-b)(S-c)) )
S = 1/2 (a+b+c) ! S is semiperimeter not to be confused with arc length s
以上表达式可用于再现内切圆的公式
rinscribed = Sqrt( ((S-a)(S-b)(S-c)) / S )