Einschub: Programmiertechnik

In vielen Programmiersprachen lassen sich mehrdimensionale Felder von Gleitkommazahlen verwalten. Intern werden diese Felder Element für Element der Reihe nach im Speicher abgelegt. Der Zugriff auf die einzelnen Elemente erfolgt über die Position (Adresse) der Elemente im Speicher. Je nach Programmiersprache liegen Einschränkungen ind der Speicherverwaltung vor. Man kann sie umgehen, wenn man die Organisation der Vektorfelder selbst übernimmt. Dann ist die eindeutige Nummerierung von beliebigdimensionalen Feldern entscheidend, um einzelne Einträge wiederzufinden. Als Beispiel nummerieren wir ein dreidimensionales Feld von dreidimensionalen Vektoren. Dabei hat die Dimension der Vektoren eine physikalische Bedeutung und die drei Dimensionen des Feldes eine Bedeutung wie in der linearen Algebra. Die Dreidimensionalität von Vektoren wird normalerweise durch x, y und z - Komponenten ausgedrückt. Sie wird im Beispiel repräsentiert durch eine C-typische Nummerierung von 0 bis 2. Die Felddimensionen sind so etwas wie Matritzendimensionen und werden durch Nummerierung von 0 bis zu irgendeiner ganzen Zahl repräsentiert. Verträglich mit Tabelle [*] lautet die Nummer der Komponente $v , i, j , k \dots $ :
\begin{displaymath}\begin{array}{rcl}
\mathrm{Nummer}\left[v,i,j,k \dots \right]...
...ight) \dots \\
& & \qquad \qquad \qquad \vdots \\
\end{array}\end{displaymath}     (1.38)

Die Gesamtzahl der Elemente ergibt sich durch ausmultiplizieren von Gleichung [*] mit
$v \equiv v_{\mathrm{max}} ,\qquad i \equiv i_{\mathrm{max}} ,\qquad \dots \qquad$:

$\displaystyle \mathrm{Gesamtzahl} \left[ v_{\mathrm{max}} , i_{\mathrm{max}}, j...
...left( j_{\mathrm{max}} + 1 \right)
\left( k_{\mathrm{max}} + 1 \right) \dots
$

Im Beispiel ergibt sich für die Anzahl

$\displaystyle \mathrm{Gesamtzahl} \left[ 2 , 1, 1 , 1 \right] + 1 = 3 \times 2 \times 2 \times 2 = 24 $


Table: Ausführung der Nummerierung im Beispiel (insgesamt 24 Elemente)
Nr. $k = 0 \dots 1$ $i = 0 \dots 1$ $j = 0 \dots 1$ $v = 0 \dots 2$
1 0 0 0 0
2 0 0 0 1
3 0 0 0 2
4 0 0 1 0
5 0 0 1 1
6 0 0 1 2
7 0 1 0 0
8 0 1 0 1
9 0 1 0 2
10 0 1 1 0
11 0 1 1 1
12 0 1 1 2
13 1 0 0 0
14 1 0 0 1
&vellip#vdots; &vellip#vdots; &vellip#vdots; &vellip#vdots; &vellip#vdots;