2013-04-23 64 views
7

我在准备 比赛时遇到以下有趣问题。三角形内的最大曲面

你有一个长度为a, b, c和长度为L的绳子的三角形。你需要找到最大表面积的绳索所包围的表面,并且它必须完全位于三角形内部。

所以,如果L = a + b + c,那么它是三角形的面积。

否则,我们知道,圆具有最大的表面,以周边区域,因此,如果L是小于或等于该三角形的内切圆的周长,那么区域将是周长L.的圆的区域

因此,其余案例是alfa < L < a + b + c,其中alfa是内切圆的周长。

任何想法都会很棒!

EDIT:我想知道我是否应该专注于某种算法解决这个 或试图弄明白数学公式。比赛包含两种组合。边缘可以长达100,精确度为a,b,c,L,小数点后4位。

+1

我会说你确实有三个剩余的情况下,其中,所述内切圆为界/切断由三角形的一边,两边或三边(但L仍小于三角形的边界)。 – iamnotmaynard 2013-04-23 14:39:04

+0

我认为你不能割绳子(做第二个圆圈)? – 2013-04-23 15:13:58

+0

@TonyMorris我在想,如果L大于内切圆的周长,那么我们可以取这个长度,然后在剩余的间隙中创建更小的圆,但我不确定这是否是最优的。 – coredump 2013-04-23 15:23:47

回答

2

..answering我自己的意见/问题,可以证明的是,半径必须相等,

这里是一个有用的公式:

enter image description here

灰色区域A是

A = r^2 (alpha - Pi + 2/tan(alpha/2)) /2 

但更useful..the弧长很简单:

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],绳长,trainglearea,三角形长度都是你不需要计算的常数。迂腐解决r[l] = f(constants, r[2],r[3])子到第二表达并求解
d ropearea /d r[2] = 0d /d r[3] = 0其结果:

r =(1/2) (triangle_length - rope_length) /(Sum(1/tan(alpha[i]/2)) - Pi)  

(为一个[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) 
+0

我会尽快得到一些测试用例。我必须先尝试才能接受答案。 – coredump 2013-04-24 21:28:56

+0

我已经写了一个python解决方案来实现我的答案,它**不会在所有角落收敛相同的半径,但我在这里错过了有关您的答案的内容。我必须仔细检查一下,看看我能否弄清楚我错过了什么。 – 2013-05-02 05:31:15

+0

对不起,我不能跟着你(如果我错了,请纠正我):绘图中四角的面积是矩形三角形面积的两倍,边长为b,r,alpha为二等分线,即A + S = 2 * 1/2 * b * R 2;所以A + s = b * r。进一步tan(alpha/2)= r/b。所以b = r/tan(alpha/2)。此外s = r^2 *(pi-alpha)。因此A = r^2 *(alpha-pi + 1/tan(alpha/2)),而不是A = r^2(alpha-Pi + 2/tan(alpha/2))/ 2, 。 – 2013-05-03 06:32:17

3

由于一个圆的面积/周长最大,因此从inscribed circle开始。如果L小于该周长,则适当收缩。如果L较长,则增加3个弧中的最大值dA/dL。我不知道是否有封闭的形式,但最大的弧线将位于三角形的三边,而边线最接近平行。

这应该是微不足道的解决这个算法。用精度为4的小数点后,检查每个弧增加0.0001,看看哪个单位增量的dA/dL最大。

我动情几何过夜的图: Triangle with incircle 的内切圆构成平分由每个角度的并找到平分线的交叉点。我已经标记了半角“a1”(并且所有相关变量都有'1')。非圆形部分的区域是两个梯形(一个用红色轮廓表示)。我们可以计算单梯形的面积为L1 *(m1 + R)/ 2(注意,当L1,L2,L3都为零时,这些梯形全部为零,我们只能得到内切圆区域)。圆帽的半径为m1,与三角形的边保持相切。对于给定的L1的选择,m1 = R(x1-L1)/ x1。

从这里您可以轻松计算出三个扇区中的每一个的周长和面积,并以数字方式求解。

我不能证明这是最大面积,只是这是如何计算这个建筑的面积和周长。

+0

我想知道运行时间,但想法:) +1。 – coredump 2013-04-23 16:14:12

+3

我的代表太低,无法为问题添加评论,但2个圈子不能最大化A/L。考虑两个圆圈 - 现在在两个圆圈之间绘制切线(所以你有一个胶囊类的东西)。保持切线但删除两个圆的弧线,并且增加了面积并减小了边界。 – 2013-04-23 16:14:27

+1

我认为你走在正确的轨道上,但最终你会以一定比例增长三面。虽然推出的结果将是。 – agentp 2013-04-23 20:06:02

2

如果绳索的周长太小或太大,答案是微不足道的。有趣的情况是一个有6个顶点的形状变成了弧 - 弧 - 弧 - 弧 - 弧。弧线与相邻线条相切,半径相等。我没有一个严格的证明,但想象一个充满空气的二维气球,并挤压在三角形的边缘之间。

很容易表达整体形状,从而给出半径的周长;然后相反的方向(周长到半径)很容易找到数字。

+0

我想这就是它..我不确定半径需要是相同的。如果指定具有3个半径(@每个角)的相切圆弧,将唯一确定长度和面积。在一堆未知的事件中触发了一个简单的优化问题。 – agentp 2013-04-23 20:19:30

3

阅读这个问题的答案后:https://math.stackexchange.com/questions/4808/why-circle-encloses-largest-area,我同意纳米,且认为最佳曲线验证:

  • 曲率或者是恒定的,或平的,当它接触到三角形,这意味着它是由位于三角形侧的部分和圆弧,所有部分都具有相同的半径。
  • 没有角度,这意味着弧线与三角形边相切。

在这些条件下,通过三个相同半径R的圆来获得解,每个圆都与三角形的两边相切(见下文)。当R在0和内切圆的半径之间变化时,我们从三角形本身开始,并结束到内切圆,所有三个圆重合。曲线的长度是半径R的圆的周长+较小三角形的周长(p):L = 2 * Pi R + p。面积是较小三角形的面积(a)+半径R的一个圆盘+剩余矩形:A = Pi R^2 + p * R + a。

The described supposed solution

+2

我们如何知道半径是相等的?这似乎是正确的,可能是,但你怎么证明它? – agentp 2013-04-24 12:11:09