📌  相关文章
📜  可以刻在N边正多边形中的具有最大边的多边形(1)

📅  最后修改于: 2023-12-03 15:07:26.537000             🧑  作者: Mango

可以刻在N边正多边形中的具有最大边的多边形

在N边正多边形中,我们可以刻出很多不同的多边形,但具有最大边的多边形是什么样的呢?现在我们来探究一下。

圆为最大边的情况

当刻出的多边形的最大边是圆形的直径时,这个多边形是一个正多边形。因为圆形的周长是最大的,所以在圆形内刻出的任何多边形的周长都不会超过圆的周长,因此最大边肯定是圆的直径。

一条边为最大边的情况

当刻出的多边形的最大边不是圆形的直径时,这个多边形是一个五边形。这个五边形被称为“切比雪夫五边形”,它是由俄罗斯数学家P.L.切比雪夫发现的,它可以使得在五边形内能够刻出的任何多边形的周长都不会超过五边形的周长。

实现方式

如何实现切比雪夫五边形呢?

假设我们要刻在N边正多边形中具有最大边的多边形的边长为1,该多边形的中心与N边形的中心重合,并且该多边形的边数为n,那么我们可以得到:

$$\dfrac{1}{2}\times \cos\left(\dfrac{2\pi}{n}\right)\leq \dfrac{1}{N}$$

其中,$cos(\frac{2\pi}{n})$是五边形的一个内角余弦值。我们可以通过不断迭代,找到最小的n,满足上述不等式。

以下是一个实现切比雪夫五边形的Python代码:

import math

def chebyshev_polygon(n, r):
    '''
    n: Number of sides of the polygon
    r: Inscribed radius of the polygon
    '''
    res = []
    for i in range(n):
        angle = (2 * math.pi / n) * i
        x = r * math.cos(angle)
        y = r * math.sin(angle)
        res.append((x, y))
    
    return res

def find_n(max_edge_length, radius):
    eps = 1e-6
    n = 5
    while True:
        if 0.5 * math.cos(2 * math.pi / n) <= max_edge_length / radius + eps:
            return n
        
        n += 1

if __name__ == '__main__':
    max_edge_length = 0.25 # This is a quarter of the circumference of the circle
    radius = 1
    n = find_n(max_edge_length, radius)
    print(chebyshev_polygon(n, radius))
小结

通过以上的探究,我们知道可以刻在N边正多边形中的具有最大边的多边形有两种情况:最大边是圆的直径或者最大边是一个五边形。我们还介绍了找到一个边长固定的五边形的边数的方法,以及如何实现这个五边形。