矩形内如何放置最多的正多边形?
来源:学生作业帮 编辑:百度作业网作业帮 分类:数学作业 时间:2024/06/16 15:56:35
矩形内如何放置最多的正多边形?
一个给定的长为L,宽为W的矩形内,放置面积相同的正三边形、正四边形、正六边形,不考虑各种多边形恰好契合矩形变长的情况,问哪个能放置最多?最好是能有公式证明!
一个给定的长为L,宽为W的矩形内,放置面积相同的正三边形、正四边形、正六边形,不考虑各种多边形恰好契合矩形变长的情况,问哪个能放置最多?最好是能有公式证明!
![矩形内如何放置最多的正多边形?](/uploads/image/z/19770342-6-2.jpg?t=%E7%9F%A9%E5%BD%A2%E5%86%85%E5%A6%82%E4%BD%95%E6%94%BE%E7%BD%AE%E6%9C%80%E5%A4%9A%E7%9A%84%E6%AD%A3%E5%A4%9A%E8%BE%B9%E5%BD%A2%3F)
正三边形、正四边形和正六边形最多.
因为每一块的面积都相同,所以放置数目越多,说明覆盖率越高.正三边形、正四边形和正六边形最多,是因为他们可以严丝合缝地拼接起来,最大化覆盖率(不算边角的话,覆盖率接近100%,为最优解).
至于为什么,只要算算内角就明白了.正n边形的每个内角为(n-2)/n*180度,如果要能严丝合缝地拼接,必须满足360度是该角度大小的整数倍(这样的话,顶点方能完美地拼接起来,不浪费面积).
设正好k个内角能凑满360度,则可列方程(n-2)/n*180*k=360,得(n-2)k=2n,得
k=2n/(n-2)=2+4/(n-2).
k若为整数,必须满足4是n-2的倍数,4的约数只有1、2和4,因此n-2=1、2或4,得n=3、4或6.
仅有正三边形、正四边形和正六边形可完美覆盖平面,这不是巧合,是可以严格推导出来的.
![](http://img.wesiedu.com/upload/d/ba/dbaeee108cd86d7e0134e93f3aeb921b.jpg)
![](http://img.wesiedu.com/upload/d/d5/dd50a54909af5726fe82450203afaa19.jpg)
再问: 这个我知道,所以我问的是 , 在这三者之间,谁能使固定矩形中,剩余的面积最少(不好率恰好契合的情况),拜托啊。。 求解
再答: 这显然要看你矩形W和L以及正n边形边长的倍数关系,你不给具体数的话,我也不知道。。。都有可能的。
再问: 所以这就是难点所在。。如果您会编程的话用MATLAB应该能做出来。。。可是我不会啊 。。。哎 蛋疼啊。。。。。。。。。。。。。。。。。。。。。。。。。哭了
再答: 原来你要的是个算法,这可就非常复杂了,没那么容易,你查查文献吧。先平行着矩形的边放,然后再看看有没有其他办法。公式是不可能了,也就是算法逼近有可能。 你查查英文的文献,关于packing algorithm的,应该能有所得。比如查Erich's Packing Center,里面有不少例子,可以看出这问题的复杂程度。
因为每一块的面积都相同,所以放置数目越多,说明覆盖率越高.正三边形、正四边形和正六边形最多,是因为他们可以严丝合缝地拼接起来,最大化覆盖率(不算边角的话,覆盖率接近100%,为最优解).
至于为什么,只要算算内角就明白了.正n边形的每个内角为(n-2)/n*180度,如果要能严丝合缝地拼接,必须满足360度是该角度大小的整数倍(这样的话,顶点方能完美地拼接起来,不浪费面积).
设正好k个内角能凑满360度,则可列方程(n-2)/n*180*k=360,得(n-2)k=2n,得
k=2n/(n-2)=2+4/(n-2).
k若为整数,必须满足4是n-2的倍数,4的约数只有1、2和4,因此n-2=1、2或4,得n=3、4或6.
仅有正三边形、正四边形和正六边形可完美覆盖平面,这不是巧合,是可以严格推导出来的.
![](http://img.wesiedu.com/upload/d/ba/dbaeee108cd86d7e0134e93f3aeb921b.jpg)
![](http://img.wesiedu.com/upload/d/d5/dd50a54909af5726fe82450203afaa19.jpg)
![](http://img.wesiedu.com/upload/2/c7/2c78073a7a87227fec921abcea91ff2b.jpg)
再问: 这个我知道,所以我问的是 , 在这三者之间,谁能使固定矩形中,剩余的面积最少(不好率恰好契合的情况),拜托啊。。 求解
再答: 这显然要看你矩形W和L以及正n边形边长的倍数关系,你不给具体数的话,我也不知道。。。都有可能的。
再问: 所以这就是难点所在。。如果您会编程的话用MATLAB应该能做出来。。。可是我不会啊 。。。哎 蛋疼啊。。。。。。。。。。。。。。。。。。。。。。。。。哭了
再答: 原来你要的是个算法,这可就非常复杂了,没那么容易,你查查文献吧。先平行着矩形的边放,然后再看看有没有其他办法。公式是不可能了,也就是算法逼近有可能。 你查查英文的文献,关于packing algorithm的,应该能有所得。比如查Erich's Packing Center,里面有不少例子,可以看出这问题的复杂程度。