gpt4 book ai didi

python - 任何维度的无限体积的交集

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:48 24 4
gpt4 key购买 nike

我需要代码/文本/谷歌关键字/其他资源来实现这个类。速度无所谓。它应该只适用于任意数量的维度。

class InfiniteVolume: # such as a point, line, plane, volume, 4d-volume
def __init__(self, points): # two points for line, three points for plane, etc.
self.points = points
assert all(len(p)==len(points[0]) for p in points)

def vdim(self): # Dimensions of the volume. For example 2.
return len(self.points)-1

def wdim(self): # Dimensions of the world. For example 3.
return len(self.points[0])

def __contains__(self, point):
# ???

def intersect(self, other):
assert self.wdim() == other.wdim()
# ???

最佳答案

您正试图表示嵌入 M 维空间中的 N 维空间。例如,(N=2, M=3) 是 3 维“世界”中的一个平面。

如果愿意,您可以实现一组定义点,但表示此类子空间的自然方式是使用一组线性方程或基向量,因此这应该是底层实现。如果使用基向量,则有 N 个。如果使用方程式,每个方程式都会将维数减少 1,因此它们有 M-N 个。

要找到两个这样的子空间的交集,您只需组合它们的集合并减少(到一组线性无关的向量或方程)。交集的维数可以是从 0 到 N 的任何值。

这些技术简单明了,众所周知,属于 Linear Algebra 的标题。 .

编辑:
我认为处理基向量是最简单的。

  1. 使用这些点来获得基础向量。
  2. 使用基向量求正交空间的基向量(例如,如果空间是 2D 中的一条线,则正交空间是一条垂直线,如果空间是 3D 中的一条线,则正交空间空间是垂直于线的平面,如果空间是3d中的平面,则正交空间是垂直于该平面的线)。
  3. 如果你愿意,从正交空间的向量中得到空间方程是微不足道的。
  4. 要获得两个空间的交集,请将它们的底并集并归约为一个基础。解决一个共同点,你就完成了。

关于python - 任何维度的无限体积的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6871686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com