A többdimenziós (például 7D) terek közvetlenül nem rajzolhatók ki a fizikai képernyőnkre, de egy matematikai vetítéssel (projekcióval) átalakíthatók 3D-s vagy 2D-s koordinátákká, majd megjeleníthetők.Az alábbi Python program a numpy segítségével hoz létre egy 7 dimenziós kockát (tesseraktot), mátrixműveletekkel 3D-re vetíti, a matplotlib segítségével pedig kirajzolja a térbeli szerkezetet és a tengelyeket.Szükség esetén a szükséges csomagokat a terminálban a pip install numpy matplotlib paranccsal telepítheted.
---------------
import numpy as np
import matplotlib.pyplot as plt
from itertools import product
# 7 dimenziós kocka csúcsainak generálása (-1 és 1 értékekkel)
# A 2^7 az 128 csúcsot jelent.
dimensions = 7
vertices = np.array(list(product([-1, 1], repeat=dimensions)))
# Véletlenszerű vagy fix transzformációs mátrix, amivel 7D-ből 3D-t csinálunk
# A gyakorlatban ez egy 3x7-es mátrix.
np.random.seed(42)
projection_matrix = np.random.rand(3, dimensions)
# A 7D pontok vetítése 3D-be
projected_vertices = np.dot(vertices, projection_matrix.T)
# Kocka éleinek meghatározása (szomszédok, amik csak 1 dimenzióban különböznek)
edges = []
for i, v1 in enumerate(projected_vertices):
for j, v2 in enumerate(projected_vertices):
# Hamming-távolság: hány koordinátában térnek el egymástól a 7D-ben?
if np.sum(np.abs(vertices[i] - vertices[j]) == 2) == 1:
edges.append((v1, v2))
# 3D ábra inicializálása
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
# Élek kirajzolása
for edge in edges:
xs = [edge[0][0], edge[1][0]]
ys = [edge[0][1], edge[1][1]]
zs = [edge[0][2], edge[1][2]]
ax.plot(xs, ys, zs, color='b', alpha=0.3)
# Pontok kirajzolása
ax.scatter(projected_vertices[:, 0], projected_vertices[:, 1], projected_vertices[:, 2], color='r')
ax.set_title("7D kocka 3D-s vetülete")
ax.set_xlabel("X tengely")
ax.set_ylabel("Y tengely")
ax.set_zlabel("Z tengely")
plt.show()
--------------
Nincsenek megjegyzések:
Megjegyzés küldése