标签: mathematical-lattices

找到球体中所有点阵的最佳方法

给定一堆任意向量(存储在矩阵A中)和半径r,我想找到落在半径r球内的那些向量的所有整数值线性组合.然后我将存储在矩阵V中的必要坐标.例如,如果是线性组合

K=[0; 1; 0]
Run Code Online (Sandbox Code Playgroud)

在我的球体内部,即类似的东西

if norm(A*K) <= r then
   V(:,1)=K
end
Run Code Online (Sandbox Code Playgroud)

等等

A中的向量肯定是给定晶格的最简单可能的基础,最大的向量将具有长度1.不确定是否以任何有用的方式限制向量但我怀疑它可能. - 他们不会像不太理想的基础那样有相似的指示.

我已经尝试了一些方法,但没有一个看起来特别令人满意.我似乎无法找到一个漂亮的模式来穿越晶格.

我目前的方法涉及从中间开始(即所有0的线性组合)并逐个经过必要的坐标.它涉及存储一堆额外的矢量来跟踪,所以我可以遍历坐标的所有八分圆(在3D情况下)并逐个找到它们.这个实现看起来非常复杂并且不够灵活(特别是它似乎不容易推广到任意数量的维度 - 虽然这对于当前目的来说并不是绝对必要的,但它是一个很好的选择)

有没有一个很好的方法来找到所有必需的点?

(*理想情况下既高效又优雅**.如果真的有必要的话,在球体之外有一些额外的点数并不重要,但最好不要那么多.我绝对需要球体内的所有向量. - 如果它有很大的不同,我对3D案例最感兴趣.

**我很确定我当前的实现都不是.)


我发现类似的问题:

找到围绕任意坐标的半径为r的球体中的所有点 - 这实际上是比我正在寻找的更普遍的情况.我只处理周期性格子,我的球体总是以0为中心,与格子上的一个点重合.但我没有一个点列表,而是一个矢量矩阵,我可以用它来生成所有点.

如何有效地枚举n维网格中的所有球体点 - 完全规则的超立方格子和曼哈顿距离的情况.我正在寻找完全任意的格子和欧氏距离(或者,为了效率目的,显然是正方形).

algorithm scilab mathematical-lattices

6
推荐指数
1
解决办法
1237
查看次数

使用grid_2d_graph在networkx中绘制MxM节点的方格时,删除旋转效果

我需要生成一个有100x100节点的常规图形(也称为网格网络).我开始使用10x10以下代码绘制图形:

import numpy
from numpy import *
import networkx as nx
from networkx import *
import matplotlib.pyplot as plt

G=nx.grid_2d_graph(10,10)        
nx.draw(G)

plt.axis('off')
plt.show()
Run Code Online (Sandbox Code Playgroud)

但我得到的是这个:

在此输入图像描述

有没有办法摆脱输出的这种旋转效应?我的最终网络看起来像棋盘,就像这样(请忽略标签):

在此输入图像描述

此外,我需要为每个节点提供其ID,范围从0到9999(在100x100网络的情况下).任何想法将不胜感激!

python grid rotation networkx mathematical-lattices

5
推荐指数
1
解决办法
1820
查看次数

获取位于 Shapely 多边形内的所有格点

我需要找到多边形内部和多边形上的所有格点。

输入:

from shapely.geometry import Polygon, mapping
sh_polygon = Polygon(((0,0), (2,0), (2,2), (0,2)))
Run Code Online (Sandbox Code Playgroud)

输出:

(0, 0), (1, 0), (2, 0), (0, 1), (1, 1), (2, 1), (0, 2), (1, 2), (2, 2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请建议是否有办法在使用或不使用 Shapely 的情况下获得预期结果。

我编写了这段代码,它给出了多边形内部的点,但它没有给出多边形上的点。还有更好的方法来做同样的事情:

from shapely.geometry import Polygon, Point

def get_random_point_in_polygon(poly):
    (minx, miny, maxx, maxy) = poly.bounds
    minx = int(minx)
    miny = int(miny)
    maxx = int(maxx)
    maxy = int(maxy)
    print("poly.bounds:", poly.bounds)
    a = []
    for x in range(minx, maxx+1):
        for y in range(miny, maxy+1):
            p = Point(x, y) …
Run Code Online (Sandbox Code Playgroud)

python mathematical-lattices shapely

5
推荐指数
2
解决办法
5224
查看次数

在R中生成晶格路径

例如,如果我有一个如下所示的晶格:

          133.1
         /
       121
      /  \
    110   108.9
   /  \  / 
 100   99
   \  /  \
    90    89.1
      \  /
       81
         \
          72.9
Run Code Online (Sandbox Code Playgroud)

格子从100开始,并且要么以1.1的系数上升,要么以0.9的系数下降.这个晶格有3个周期,它上升或下降.很明显,这个矩阵可以填充更长的时间.

矩阵形式的晶格如下所示:

     [,1] [,2] [,3]  [,4]
[1,]  100  110  121 133.1
[2,]   NA   90   99 108.9
[3,]   NA   NA   81  89.1
[4,]   NA   NA   NA  72.9
Run Code Online (Sandbox Code Playgroud)

我在R.工作.生成晶格矩阵的代码如下:

#Parameters
S0 <- 100 #price at t0
u <- 1.1 #up factor
d <- 0.9 #down factor
n <- 3 #number of periods

#Matrix for the prices
prices <- matrix(data=NA, …
Run Code Online (Sandbox Code Playgroud)

r matrix mathematical-lattices

4
推荐指数
1
解决办法
309
查看次数

减少格子

我有两个矩阵A和B,行数相同.考虑由B行生成的格子.我想减少B并且在减少期间相应地改变A. 也就是说,如果第i行和第j行B交换,则需要扫描A的第i行和第j行,类似地其他基本行操作.我怎么能这样做?

还有非常简单的C或C++ - LLL算法的实现

c c++ algorithm mathematical-lattices

3
推荐指数
1
解决办法
1624
查看次数

晶格上的点

我在编码采访中遇到了这个问题。

汉娜在格子中移动,每个点都可以用一对整数表示。她从A点移动到B点,然后向右转90度,开始移动直到到达晶格上的第一个点。找出她要达到的目标?本质上,问题归结为找到与直线垂直线相交的第一个点。有人可以提供伪代码或代码片段来说明我该如何解决吗?

algorithm geometry coordinate-systems data-structures mathematical-lattices

2
推荐指数
1
解决办法
1334
查看次数

在圆环上绘制igraph对象

我有一个缠绕在圆环上的晶格(图末尾的每个节点都链接到它们在网格上的相对节点)。

require("igraph")
require("rgl")

n = 10
g = graph.lattice(c(n,n)) # create a square lattice (nxn)

plot(g,vertex.size = 0.5,vertex.size = 4,vertex.label = NA,vertex.color = "red")

# want to connect up the corners (horribly done)
v1 = seq(from =1, to = n,by = 1)
v2 = seq(from = n, to = n^2, by = n)
v3 = seq(from = n^2, to = n^2 - n+1, by = -1)
v4 = seq(from = v3[length(v3)],to = 1,by = -n)

a = cbind(rbind(v1,v2), rbind(v3,v4))
a2 …
Run Code Online (Sandbox Code Playgroud)

layout r igraph rgl mathematical-lattices

1
推荐指数
1
解决办法
1009
查看次数