现在我正在做的项目是关于渗透,其描述如下: 半径为r的N个磁盘随机分布在一个单元上。如果磁盘足够接近(2r内),则它们已连接。连接的磁盘形成集群,随着磁盘密度的增加,将形成更多的集群。一旦密度达到阈值,方形区域的两个相对侧将由簇连接。我的任务是弄清楚这个门槛值。
现在我的算法如下:
np.random.uniform
创建一个存储N坐标的Nx2数组。findoverlap(coordinates_array, r)
,它使用一个循环检查两点之间的距离(如果有N个点,则有N(N-1)个检查,因为对于每个点我检查所有其他点N-1分),如果距离足够短,我将坐标存储在字典中。
例如{0:[1,2],1:[0,3],2:[0],3[1]}
表示磁盘0连接到磁盘1和2,磁盘1连接到磁盘0和3等。由于我想尝试模拟无限系统,我需要使r尽可能小。对于r = 0.02(方形区域为单位长度)和N为1000,重复模拟50次需要大约20分钟。
顺便说一句,我所拥有的课程适用于没有任何编程经验的第一年的理科学生,而且我已经完成了该项目的所有基本任务。我想我不需要做任何太花哨的东西,但我仍然希望尽可能好。