# Magische hyperkubus

Een magische hyperkubus is een uitbreiding van een magisch vierkant en de magische kubus. Een magische hyperkubus heeft meer dan drie dimensies, hoewel het magische vierkant en de magische kubus ook als vormen van een magische hyperkubus beschouwd kunnen worden.

## Conventies

Het is gebruikelijk de dimensie aan te duiden met de letter 'n' en de orde van een hyperkubus met de letter 'm'.
* Dimensie: het aantal richtingen in een hyperkubus.
* Orde: het aantal getallen langs een richting.
In onderstaande wordt het "analytische" getalsbereik [0..m$^n$−1] gebruikt, voor het "reguliere" getalsbereik [1..m$^n$] kan men 1 bij elk getal optellen. Dit heeft geen enkel gevolg met betrekking tot de eigenschappen van de hyperkubus.

## Notaties

Teneinde een en ander in de hand te houden wordt gebruikgemaakt van een speciale notatie:
* [ $_k$i; k=[0..n−1]; i=[0..m−1] ]: positie in hyperkubus
* ⟨ $_k$i; k=[0..n−1]; i=[0..m−1] ⟩: vector door hyperkubus
De notatie voor positie is ook in gebruik als referentie voor de waarde op die positie. Daar waar van belang kunnen dimensie en orde worden toegevoegd tot: $^n$[$_k$i]$_m$
Zoals in bovenstaande aangegeven doorloopt 'k' het aantal dimensies, terwijl de coördinaat 'i' de mogelijke coördinaten doorloopt. Er kunnen meerdere 'k' binnen de positie- c.q. vectorhaken worden opgegeven, maar nooit dezelfde waarde hebben. De volgorde van de k's is niet bepaald, en dus geldt bijvoorbeeld:
Uiteraard is ook bij gegeven 'k' slechts een waarde 'i'. Bij opgave van een specifieke waarde worden de overige waardes 0 verondersteld, dit is met name het geval als het aantal 'k's wordt beperkt door opgave van #k=1 bijvoorbeeld:
(#j=n−1 kan weggelaten worden) j doorloopt nu alle waardes in [0..k−1,k+1..n−1].
De waardes 'i' kunnen overige waardes aannemen maar zijn modulus m terug te voeren op het bereik [0..m−1], een richting '−1' is conceptueel iets eenvoudiger dan 'm−1', maar volstrekt gelijkwaardig.
Zonder opgave van restricties doorlopen zowel 'k' als 'i' alle waardes. In combinaties van posities en vectoren nemen gelijke letters gelijke waardes aan, waardoor het mogelijk is om een specifieke lijn in de hyperkubus aan te duiden (zie r-agonalen in de sectie over padvinders).
Opmerking: voor zover bekend is deze notatie niet algemeen in gebruik, aangezien de hyperkubus slechts door weinigen op deze manier wordt geanalyseerd.

## Constructie

Naast diverse specifieke constructies zijn er twee meer algemeen in gebruik, de Paardensprongconstructie en de Latin Prescription Construction.

### Paardensprongconstructie

(KnightJump-Construction)
Deze veralgemeniseert de paardensprong (schaken) (vectoren ⟨1,2⟩, ⟨1,−2⟩, ⟨−1,2⟩ en ⟨−1,−2⟩) tot meer algemene sprongen (vectoren ⟨$_k$i⟩).
De methode begint met een startpositie P$_0$ vervolgens n-vectoren die sequentieel worden gebruikt, als de plek reeds gevuld is, gebruikt men de volgende vector, hetgeen in de regel na m "sprongen" gebeurt (dit verklaart onderstaande formule voor de positie van het nummer 'k'). Men heeft dus een n bij n + 1 matrix:
die het hele proces omschrijft. De positie van een getal k wordt nu dus gegeven door
Dr. C. Planck geeft in zijn The theory of Path Nasiks uit 1905 condities om met deze methode "Path Nasik" (of modern {perfect}) hyperkubussen te creëren.

### Latin Prescription Construction

(modulaire vergelijkingen)
Deze methode wordt eveneens gekenmerkt door een n bij n + 1 matrix. Maar nu matrix-vermenigvuldigt met een n + 1 positie vector [x$_0$,...x$_{n−1}$,1], na deze vermenigvuldiging worden de n vergelijkingen modulo m genomen, en bij elkaar opgeteld vermenigvuldigd met machten van m.
Elke regel in een LP-matrix geeft dus de (latin) hyperkubus:
van radix m nummers (ook wel digits). Op deze LP$_k$'s wordt veelal digitverandering (zie Basismanipulaties) toegepast voordat deze LP$_k$'s gecombineerd worden tot de hyperkubus:
Beide methoden vullen de hyperkubus met getallen, het is niet gegarandeerd dat de betrokken hyperkubus magisch is, dit is afhankelijk van de gegeven waardes. De paardensprong garandeert dat alle getallen aanwezig zijn (indien de vectoren hyperkubus-vullend zijn gekozen), de Latin Prescription alleen indien de modulaire vergelijkingen orthogonale componenten (geen twee digits op dezelfde plek) opleveren.
J.R.Hendricks maakt veelvuldig gebruik van modulaire vergelijkingen.

### Vermenigvuldiging

Onder de verschillende manieren om vanuit twee hyperkubussen een nieuwe samen te stellen vormt de vermenigvuldiging de basis, deze wordt gegeven door:
Variaties op deze basisvermenigvuldiging geven vele opties, kwalificaties zijn meestal invariant onder vermenigvuldiging. Men kan derhalve alle aanzichtsvarianten van $^n$[$_k$l]$_{m2}$ inzetten in het laatste deel van bovenstaande. Veelal wordt tevens op het resultaat nog een bewerking uitgevoerd om een kwaliteitsverhoging van het resultaat te bewerkstelligen. Een en ander resulteert in bijvoorbeeld de J.R. Hendricks verdubbeling.

## Aanzichtsvarianten

(Aspectial variants)
Een hyperkubus kent n! 2$^n$ aanzichtsvarianten, die gegeven worden door coördinaat reflectie (x$_k$ --> -x$_k$) en coördinaat permutatie (x$_k$ --> x$_{p[k]}$) dit bewerkstelligt de aanzichtsvariant:
Waar reflect(k) waar is als de coördinaat k is gereflecteerd, alleen dan wordt 2$^k$ bij R opgeteld. Er zijn n coördinaten die mogelijk te reflecteren zijn, de n! mogelijke permutaties van de n coördinaten verklaart het aantal aanzichtsvarianten.
Aanzichtsvarianten worden in de regel als gelijk beschouwd, dien ten gevolge kan een hyperkubus in "normaal positie" worden getoond, gedefinieerd als die variant waarbij de opeenvolgende assen steeds grotere nummers vertonen, dus:
(hetgeen expliciet stelt: [$_k$0] het minimum van alle hoekpunten. De as-nabuur op volgorde van de asnummer)

## Basismanipulaties

Naast diverse meer specifieke manipulaties zijn de volgende van meer algemenere aard. "perm(0..n−1)" duidt een permutatie van de n getallen aan.
* #[perm(0..n−1)] : componentpermutatie
* ^[perm(0..n−1)] : coördinaatpermutatie (n == 2: transponeren)
* _2$^{as}$[perm(0..m−1)] : monagonaal permutatie (as ε [0..n−1])
* =[perm(0..m−1)] : digitverandering

### Componentpermutatie

Gedefinieerd als het onderling verwisselen van componenten. Hierdoor wijzigt men de factoren m$^k$ in m$^{perm(k)}$, daar er n componenthyperkubussen zijn is de permutatie dus over deze n componenten.

### Coördinaatpermutatie

De verwisseling van de coördinaat [$_k$i] in [$_{perm(k)}$i], wegens de n coördinaten hier dus ook een permutatie over deze n-richtingen.
De term 'transponeren' (gebruikelijk genoteerd als $^t$) is gebruikelijk bij twee dimensionale matrices het is wellicht beter om voor de hogere dimensies gebruik te maken van "coördinaatpermutatie".

### Monagonaalpermutatie

Gedefinieerd de permutatie [$_k$i] in [$_k$perm(i)] langs de gegeven "as"-richting. Gelijke permutaties langs verschillende richtingen kunnen worden samengevoegd door de factoren 2$^{as}$ op te tellen. Dit definieert permutaties langs alle r-agonaal richtingen in de hyperkubus.
Er zijn m nummers langs een gegeven richting dus de permutatie is over m nummers.
Opgemerkt zij dat reflectie een speciaal geval is:
tevens als alle assen dezelfde permutatie ondergaan (R = 2$^n$−1) is sprake van een n-agonaal permutatie, in dit geval wordt de 'R' meestal weggelaten dus:

### Digitverandering

Digitverandering wordt in de regel toegepast op componentniveau en kan technisch worden weergegeven door [$_k$i] in perm([$_k$i]) daar een component gevuld is met radix m digits is een permutatie over m nummers de aangewezen manier om dit aan te duiden.
(notitie: een digit is een radix m getal, wat de naam verklaart)

## Padvinders

J.R. Hendricks gaf de richtingen binnen een hyperkubus de naam pathfinders. Deze richtingen zijn het eenvoudigst in een ternair getalsysteem aan te duiden en wel als volgt:
Dit geeft 3$^n$ richtingen weer, maar een gegeven richting wordt zowel heen als terug doorlopen. Teneinde dit te voorkomen kan men zich beperken tot de bovenste helft [(3$^n$−1)/2,..,3$^n$−1)].
Hiermede kan tevens de diverse sommeringslijnen (ofwel r-agonalen) worden omschreven:
Teneinde een r-agonaal te definiëren zijn er (zoals aangegeven) in bovenstaande: 1 j, r-1 k's en dus n-r l's. Bovenstaande geeft alle r-agonalen zowel de hoofd (ongebroken) als de neven (gebroken) r-agonalen. De hoofd r-agonalen worden correct gegeven door:

## Kwalificaties

Gegeven een hyperkubus $^n$H$_m$ gevuld met alle nummers in het "analytische nummerbereik" [0..m$^n$−1] is de magische som :
Dit verschilt van de magische constante wegens het feit dat dit artikel gebruikmaakt van het "analytische" getalsbereik, terwijl de magische constante gedefinieerd is op het "reguliere" getalsbereik. Ten aanzien van de magische eigenschappen maakt een en ander geen enkel verschil, maar het analytische getalsbereik is handiger te analyseren en te manipuleren.
Naast meer specifieke kwalificaties zijn de volgende de belangrijkste:
* {r-agonaal} : alle hoofd (ongebroken) r-agonalen sommeren tot de gegeven som.
* {pan r-agonaal} : ook alle (gebroken) r-agonalen sommeren tot de gegeven som.
* {magisch} : {1-agonaal n-agonaal}
* {perfect} : {pan r-agonaal; r = 1..n}
Deze serie start niet met '0' daar een nill-agonaal niet bestaat, de nummers komen overeen met de gebruikte naamgeving: 1-agonaal = monagonaal, 2-agonaal = diagonaal, 3-agonaal = triagonaal enz.. Tevens komt dit overeen met het aantal "−1" en "1" in de corresponderende padvinder.
Hier is niet ingegaan op de mogelijkheid van p-meervoudig-magische (p-multimagic) hyperkubussen waarbij de hyperkubus ook "magisch" sommeert als alle getallen tot de macht p zijn "machtsverheven". Bovenstaande kwalificaties worden dan simpel aan de betrokken macht voorgevoegd, wat kwalificaties als {r-agonaal 2-magisch} oplevert. Ook hier wordt "2-" spraakgebruikelijk door "bi" vervangen, "3-" door "tri" etc. ("1-magisch" zou "monomagisch" zijn, maar de "mono" wordt normaal gesproken weggelaten).
Ook is meestal "magisch" (ie {1-agonaal n-agonaal}) verondersteld. Zo is de Trump/Boyer {diagonaal} goedbeschouwd {1-agonaal 2-agonaal 3-agonaal} (zie Perfecte magische kubus).

## Speciale hyperkubussen

De volgende hyperkubussen hebben speciale functies:

### De "Normale hyperkubus"

Deze kan gezien worden als de bron van de getallen. Een procedure genaamd "Dynamisch numereren" maakt gebruik van het isomorfisme van elke hyperkubus en deze normaal, veranderen van deze bron in een andere bron wijzigt de hyperkubus. Hierbij beperk ik mij tot basisvermenigvuldigingen van "normale hyperkubussen" dan wel "normale hyperbalken" (let wel: bij een hyperbalk hebben alle richtingen mogelijk een andere orde).

### De "Constante 1"

Deze wordt meestal opgeteld bij een hyperkubus in het analytische getalsbereik om een hyperkubus in het reguliere getalsbereik te verkrijgen.

## Bestandsformaat

Gebaseerd op XML is het bestandsformaat XmlHypercubes ontwikkeld om de diverse hyperkubussen digitaal op te slaan en programmatisch te verwerken. Naast de mogelijkheid om een hyperkubus volledig te listen, bevat het formaat ook de mogelijkheid om genoemde constructies op te slaan alsmede enkele andere "producties" van hyperkubussen.