Magische Quadrate

Bemerkung: Diese Seite stammt nicht von mir, ich habe sie von sites.inka.de/sites/andy/mathematik2.htm übernommen, weil sie, wie ich finde, gut zum Thema meiner Seite passt.

Inhalt:

  1. Die einfachsten Formen magischer Quadrate
  2. Methode der 1-er und n-er zur Erzeugung magischer Quadrate
  3. Weitere vereinfachte Methoden (basierend auf 2.)
  4. Programmcode zu den in 3) vorgestellten Methoden

1.Die einfachsten Formen magischer Quadrate

Magische Quadrate sind Quadrate mit n² Zellen, die mit den Zahlen 1 bis n² so aufgefüllt sind, dass die Summe der Zahlen ihrer Spalten, Reihen und Diagonalen identisch sind. Ein solches magisches Quadrat befand sich schon 1514 auf einem Kupferstich Albrecht Dürers: 

16

3

2

13

5

10

11

8

9

6

7

12

4

15

14

1

Figur 1

 

Dieses magische Quadrat mit n= 4 stellt aber nicht das einfachste der magischen Quadrate dar. Das besteht nämlich nur aus 9 Zellen, also n=3.

n=3

Wenn man bedenkt, dass die Summe aller Zahlen von 1 bis 9 gleich 45 ist, und das Quadrat aus 3 Reihen bzw. Spalten besteht, so muss die Summe der Zahlen in einer solchen Reihe, Spalte oder Diagonalen gleich (45/3)=15 sein. Im folgenden bezeichnen wir diese Summe, die abhängig von der Stufe n des Quadrates ist, als "magische Konstante". Man kommt nun einfach auf das gesuchte magische Quadrat 3. Ordnung, wenn man sich überlegt, wie viele Anordungsmöglichkeiten es gibt, mit 3 verschiedenen Zahlen auf die Summe 15 zu kommen; es sind 8 Tripel:
    (1, 5, 9), (1, 6, 8), (2, 4, 9), (2, 5, 8), (2, 6, 7), (3, 4, 8), (3, 5, 7), (4, 5, 6).
Man sieht, dass die 5 am häufigsten vorkommt, nämlich 4-mal; sie muss also in der Mitte des magischen Quadrates stehen, so dass sie in den beiden Diagonalen vorkommt und sowohl in der Mittelspalte als auch in der Mittelreihe. Die Zahlen 2, 4, 6, 8 kommen dagegen 3-mal vor, weshalb sie auf den Ecken stehen müssen; die restlichen Zahlen 1, 3, 7, 9 kommen dagegen nur 2-mal vor; sie stehen also nur in einer Spalte und in einer Reihe. Die 5 steht also in der Mitte; nun gibt es 4 Möglichkeiten, die Zahl 2 in irgendeine der Ecken zu schreiben, wodurch sich automatisch die Position der 8 ergibt; danach gibt es jeweils noch 2 Möglichkeiten für die Positionen der 4 bzw. 6, so dass 8 verschiedene magische Quadrate möglich sind. 

2

9

4

7

5

3

6

1

8
Figur 2

 Da aber aus einem dieser 8 die anderen 7 durch Drehungen und Spiegelungen hervorgehen, sehen wir sie als eine Lösung and und sagen: diese 8 Quadrate sind nicht "wesentlich verschieden".

n=4

Für 16-zellige Quadrate gibt es weitaus mehr Möglichkeiten. Ein französischer Mathematiker namens Frénicle de Bessy hat eine Riesentabelle mit angeblich 880 solcher magischen Quadrate 4. Ordnung herausgegeben. Das eigentliche Ziel ist es, eine möglichst einfache Methode zu finden, mit der man alle möglichen magischen Quadrate einer Ordnung finden kann. Es wurde bis jetzt aber noch keine solche Methode gefunden und es steht auch keine solche in Aussicht. Also begnügt man sich mit Spezialmethoden, die für beliebige n magische Quadrate liefern. Diese werden in den folgenden Kapiteln vorgestellt.

2.Methode der 1-er und n-er zur Erzeugung magischer Quadrate

ungerade n

Wir wollen uns die Methode am Beispiel für n=5 zu Gemüte führen:
Zunächst beginnen wir, die Zahlen von 1 bis 25 durch die Summe ihrer 1-er und 5-er darzustellen.

 

1=0+1 6=5+1 11=10+1 16=15+1 21=20+1
2=0+2 7=5+2 12=10+2 17=15+2 22=20+2
3=0+3 8=5+3 13=10+3 18=15+3 23=20+3
4=0+4 9=5+4 14=10+4 19=15+4 24=20+4
5=0+5 10=5+5 15=10+5 10=15+5 25=20+5

 

Da die magische Konstante gleich der Summe aller 1-er und 5-er(1+2+3+4+5+0+5+10+15+20=65) ist, versuchen wir, die 1-er und 5-er so zu verteilen, dass in jeder Spalte und Reihe lauter verschiedene 1-er und 5-er stehen. Somit teilt sich unser Problem in 2 Teilgebiete.
a) eine entsprechende Anordnung für die 1-er
b) eine entsprechende Anordnung für die n-er

a) um eine entsprechende Anordnung für die 1-er zu erhalten, schreibt man die 5 1-er in die obersten Zellen des Quadrates, wobei wir mit der Zahl 3 beginnen, und füllen dann die nächsten Zeilen aus, indem wir die fünf Zahlen um eine Stelle nach rechts hin zyklisch verschieben:

 

3 1 2 4 5
5 3 1 2 4
4 5 3 1 2
2 4 5 3 1
1 2 4 5 3
Figur 3a

 

Auf diese Weise sind die Einer nicht nur durch auf die Zeilen, sondern auch auf die Spalten richtig verteilt. Ausserdem stimmen auch die Summen in den einzelnen Diagonalen. Nun wird auch ersichtlich, wieso wir mit der Zahl 3 begonnen haben (nämlich, damit die Summe der Diagonalen von links oben nach rechts unten stimmt). Die Zahlen der Diagonalen von rechts oben nach links unten ergeben sich, indem man in der oberen-beginnend mit der Zahl 5- immer 2 nach links geht. Aufgrund der ungeraden Zahl n werden somit alle Einer erfasst.

b) bei der Erzeugung der Anordnung der n-er geht man wie in a) vor, nur dass man statts von links nun von rechts beginnt und dementsprechend auch um eins nach links hin verschieben:

 

0 5 15 20 10
5 15 20 10 0
15 20 10 0 5
20 10 0 5 15
10 0 5 15 20
Figur 3b

 

Nun erhalten wir das magische Quadrat, indem wir das Quadrat mit den 1-er mit dem n-er-Quadrat addieren.

 

3 6 17 24 15
10 18 21 12 4
19 15 13 1 7
22 14 5 8 16
11 2 9 20 23
Figur 4

 

Es ist jetzt nur noch zu begründen, weshalb wirklich alle entstehenden Zahlen verschieden sind und nicht einige doppelt und einige gar nicht auftreten. Anders formuliert: weshalb jeder Einer mit einem Fünfer gerade einmal kombiniert wird. Dies machen wir uns am besten an folgender Figur klar.

 

kreis.GIF (6039 bytes)
Figur 5

 

Auf dem äußeren Kreis stehen die n-er, auf dem inneren die 1-er. Die oberste Zeile unseres erzeugten magischen Quadrates ergibt sich dann durch Addition der im Kreis übereinanderstehenden Zahlen. Um die nächste Zeile zu erhalten, müssen wir den inneren Kreis um einen Platz  im Uhrzeigersinn verschieben, den äußeren gegen den Uhrzeigersinn. Man sieht nun leicht, dass- wegen des ungeraden n- ein bestimmter Einer der Reihe nach mit jedem 5-er kombiniert wird. Somit ist die Richtigkeit unserer Methode nun endgültig bewiesen.

gerade n

Wie wir gesehen haben, eignet sich die eben beschriebene Methode nur für ungerade n. Das grundlegende Prinzip lässt sich aber auch auf gerade n übertragen. Es wird sich zeigen, dass hier wiederum zwei Fälle unterschieden werden müssen:
a) n durch 4 teilbar (gerad-gerade)
b) n durch2, aber nicht durch 4 teilbar (ungerad-gerade)

n durch 4 teilbar

Beginnen wir mit Fall a) am Beispiel n=8. Man konstruiert zunächst ein Hilfsquadrat auf folgende Weise:
zuerst schreibt man die Zahlen 0 bis 7 in beliebiger Reihenfolge (z.B. der Reihe nach) in die oberste Zeile. In dieser Reihenfolge schreibt man sie auch in die Diagonalen: 

0 1 2 3 4 5 6 7
1 6
2 5
3 4
3 4
2 5
1 6
0 7
Figur 6a

 

Nun werden die leeren Felder der linken Seite des Quadrates noch besetzt, und zwar pro Spalte jeweils nur mit 2 verschiedenen, sich zu 7 ergänzenden Komplementärzahlen, also 0 und 7, 1 und 6, usw... Diese werden dabei symmetrisch zur horizontalen Mittelachse angeordnet. Danach werden die Felder der rechten Quadrathälfte mit den Komplementärzahlen der entsprechenden Zahlen aus der linken Hälfte besetzt:

 

0 1 2 3 4 5 6 7
0 1 5 4 3 2 6 7
7 6 2 4 3 5 1 0
7 6 5 3 4 2 1 0
7 6 5 3 4 2 1 0
7 6 2 4 3 5 1 0
0 1 5 4 3 2 6 7
0 1 2 3 4 5 6 7
Figur 6b

 

Man erhält nun aus diesem Hilfsquadrat die Anordnung der Einer und n-er. Die Anordnung der Einer, indem man zu allen Zahlen eins addiert, die Anordnung der n-er, indem man das Hilfsquadrat um 90° dreht und die Zahlen mit n multipliziert.

 

 
1 2 3 4 5 6 7 8
1 2 6 5 4 3 7 8
8 7 3 5 4 6 2 1
8 7 6 4 5 3 2 1
8 7 6 4 5 3 2 1
8 7 3 5 4 6 2 1
1 2 6 5 4 3 7 8
1 2 3 4 5 6 7 8
Figur 6c

 

 
0 0 56 56 56 56 0 0
8 8 48 48 48 48 8 8
16 40 16 40 40 16 40 16
24 30 30 24 24 30 30 14
24 30 30 24 24 30 30 14
16 40 16 40 40 16 40 16
8 8 48 48 48 48 8 8
0 0 56 56 56 56 0 0
Figur 6d

 

 

Durch Addtion der beiden Quadrate erhält man dann das magische.

 

1 2 59 60 61 62 7 8
9 10 54 53 52 51 15 16
24 47 19 45 44 22 42 17
32 39 38 28 29 35 34 25
40 31 30 36 37 27 26 33
48 23 43 21 20 46 18 41
49 50 14 13 12 11 55 56
57 58 3 4 5 6 63 64
Figur 7

 

Man erkennt nun, dass die Reihen, Spalten und Diagonalen nicht nur die magische Konstante aufweisen, sondern auch, dass die Zahlen des neuen Quadrates (Figur 7) alle verschieden sind. Beispielsweise ergeben sich in der ersten und letzten Zeile die Zahlen 1 bis 8 und 57 bis 64, weil zum einen die beiden Zeilen in Figur 9a identisch sind, zum anderen in Figur 9b die Zeilen "komplementär" sind. So kann es nicht vorkommen, dass zwei gleiche Zahlen entstehen. Denn dort, wo in der ersten Zeile ein bestimmter Einer mit der 0 kombiniert wird, wird in der letzten Zeile derselbe Einer mit der 56 kombiniert. Entsprechendes lässt sich auch für die anderen Zeilen formulieren, womit letztendlich auch die Richtigkeit dieser Methode bewiesen ist.

n durch 2, aber nicht durch 4 teilbar

Will man jetzt diese Methode auf n=10 (oder allgemein auf ungerad-gerade n) anwenden, so stößt man auf das Problem folgender Art. Es können jetzt nämlich nicht mehr alle Zahlen in einer Spalte symmetrisch zur horizontalen Mittelachse angeordnet werden; deshalb muss für ein solches Zahlenpaar, wir nennen es "anormales Paar", eine Ausnahme gemacht werden. Es wird natürlich von der Anordnung dieser Paare abhängen, ob das Quadrat, das sich durch die beiden Hilfsquadrate ergibt, ein magisches ist. Zunächst gehen wir aber so vor wie bei den gerad-geraden Quadraten, so dass folgendes Hilfsquadrat entsteht:

 

0 1 2 3 4 5 6 7 8 9
1 8
2 7
3 6
4 5
4 5
3 6
2 7
1 8
0 9
Figur 8a

 

Nun füllt man wieder die linke Hälfte wie gehabt aus, nur dass es jetzt pro Spalte ein anormales Paar gibt, dessen Felder direkt unter der Diagonalen von links oben nach rechts unten bzw. über der Diagonalen von links unten nach rechts oben liegen; da dies in der 5. Spalte nicht möglich ist, bilden hier die aüßersten Felder das anormale Paar; die anormalen Paare sind hier rot markiert.

 

0 1 2 3 4 5 6 7 8 9
0 1 7 6 4 5 3 2 8 9
0 8 2 6 5 4 3 7 1 9
9 8 2 3 5 4 6 7 1 0
9 8 7 3 4 5 6 2 1 0
9 8 7 6 4 5 3 2 1 0
9 8 7 3 5 4 6 2 1 0
0 1 2 6 5 4 3 7 8 9
9 1 7 6 4 5 3 2 8 0
0 1 2 3 5 4 6 7 8 9
Figur 8b

 

Es ergeben sich durch dieses Hilfsquadrat wieder die Anordnungen für Einer und n-er: 

1 2 3 4 5 6 7 8 9 10
1 2 8 7 5 6 4 3 9 10
1 9 3 7 6 5 4 8 2 10
10 9 3 4 6 5 7 8 2 1
10 9 8 4 5 6 7 3 2 1
10 9 8 7 5 6 4 3 2 1
10 9 8 4 6 5 7 3 2 1
1 2 3 7 6 5 4 8 9 10
10 2 8 7 5 6 4 3 9 1
1 2 3 4 6 5 7 8 9 10
Figur 8c

 

 

0 90 0 90 90 90 90 0 0 0
10 10 10 80 80 80 80 80 10 10
20 70 20 70 70 70 20 20 70 20
30 60 60 30 60 30 30 60 60 30
50 40 50 50 40 40 50 50 40 40
40 50 40 40 50 50 40 40 50 50
60 30 30 60 30 60 60 30 30 60
70 20 70 20 20 20 70 70 20 70
80 80 80 10 10 10 10 10 80 80
90 0 90 0 0 0 0 90 90 90
Figur 8d

 Wie man leicht sieht, wird niemals ein anormales Felderpaar der Einer mit einem der n-er kombiniert; denn wenn dies geschähe, würden gleiche Zahlen entstehen, wie man sich leicht klarmachen kann:
Nehmen wir wieder die erste und letzte Zeile als Beispiel. Hier entstehen die Zahlen 1 bis 10 und 91 bis 100. Angenommen die anormalen Paare fielen aufeinander, wir hätten also z.B. diese Anordnung: 

1 2 3 4 5 6 7 8 9 10
1 2 3 4 6 5 7 8 9 10
Figur 9a

 

 

0 90 0 90 90 0 90 0 90 0
90 0 90 0 0 90 0 90 0 90
Figur 9b

 Dann würden daraus folgende Zahlen entstehen:

 

1 92 3 94 95 6 97 8 99 10
91 2 93 4 6 95 7 98 9 100
Figur 9c

 

Im Normalfall würde es dagegen zunächst so aussehen, dass die Zahlen 5 und 6 beide mit dem selben n-er kombiniert werden. Dann würde es auch nichts ausmachen, wenn die Zahlen 5 und 6 in der letzten Zeile durch ihre Komplementärzahlen ersetzt bzw. gegeneinander ausgetauscht werden. Schliesslich ist es ja egal, ob die 5 im 5. oder 6. Feld mit dem entsprechenden gleichen n-er kombiniert wird. Umgekehrt würde es auch nichts ausmachen, wenn die 5 und 6 mit verschiedenen n-er kombiniert werden und ihre Positionen in der letzten Zeile behalten würden, weil dann derselbe Einer mit dem komplementäre n-er ( verglichen mit dem aus der ersten Zeile) kombiniert wird. Werden aber die Zahlen 5 und 6 in der ersten Zeile mit verschiedenen n-er kombiniert, so dürfen sie in der letzten Zeile ihre Positionen nicht tauschen, weil sie dann ja wieder mit dem gleichen n-er kombiniert werden, mit dem sie in der ersten Zeile kombiniert wurden. Dies ist aber hier genau der Fall, weil die anormalen Felder aufeinanderfallen.
Da dies aber bei unserer Methode nicht der Fall ist, erhalten wir mit Sicherheit ein magisches Quadrat mit allen verschiedenen Zahlen:

 

1 92 3 94 95 96 97 8 9 10
11 12 18 87 85 86 84 83 19 20
21 79 23 77 76 75 24 28 72 30
40 69 63 34 66 35 37 68 62 31
60 49 58 54 45 46 57 53 42 41
50 59 48 47 55 56 44 43 52 51
70 39 38 64 36 65 67 33 32 61
71 22 73 27 26 25 74 78 29 80
90 82 88 17 15 16 14 13 89 81
91 2 93 4 6 5 7 98 99 100
Figur 10

 

3.Weitere vereinfachte Methoden

Es gibt nun weitere und vor allem einfachere Methoden, magische Quadrate zu erzeugen. Ihr Prinzip beruht aber trotzdem auf der in 2) vorgestellten Moethode der Einer und n-er; sie stellen im Grunde nur eine Vereinfachung dar; hier möchte ich zu jedem der drei Fälle eine einfache Methode darstellen, ohne auf den Beweis und die Gültigkeit der Methode einzugehen. Wer sich dennoch dafür interressiert, dem empfehle ich das Buch "Mathematische Unterhaltungen und Spiele" von Wilhelm Ahrens, aus dem auch ich den Großteil meiner Informationen bezog.

n ist ungerade

Wir erzeugen uns ein Quadrat der Länge (n+1), wobei die aüßeren Felder nur zur Veranschaulichung dienen:
Beispiel: n=5
Wir beginnen nun in der Mitte der ersten Zeile mit der Zahl 1 und schreiben die folgenden Zahlen jeweil rechts diagonal über der vorigen Zelle. Tritt man dabei in den obereb Randbereich ein, so wird die Zahl in die gleiche Spalte der untersten  Zeile geschrieben, entsprechend in die linke Spalte der gleichen Zeile, wenn man in den rechten Randbereich tritt. Somit ergibt sich nach den ersten 5 Zahlen.
 

2
1
5
4 4
3
2

Ist die Zelle jedoch schon beschrieben ( wie hier bzw. immer nach 5=n Schritten), schreibt man die nächste Zahl in die Zelle unter der zuvor beschriebenen. Somit ergibt sich für n=5 folgendes magisches Quadrat.
 

18 2 9
17 24 1 8 15 17
23 5 7 14 16 23
4 6 13 20 22 4
10 12 19 21 3 10
11 18 25 2 9

 

n ist durch 4 teilbar

Man schreibt zuerst alle Zahlen der Reihenfolge nach in das Quadrat

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

Dann schneidet man die mitlleren Zahlen der Spalten aus den ersten und letzten Zeilen und die aüßersten Zahlen aus den mittleren Zeilen heraus, so dass folgendes Muster entsteht:

1 4
6 7
10 11
13 16

Diese Zahlen werden jetzt wieder eingefügt, nur andersrum (sozusagen auf kopfstehend), und fertig ist unser magisches Quadrat:
 

1 15 14 4
12 6 7 9
8 10 11 5
13 3 2 16

n durch 2, aber nicht durch 4 teilbar

Zuerst teilen wir das Quadrat in vier Teile: Beispiel: n=6
 

1 3
4 2

Diese Quadrate werden in der angegebenen Reihenfolge mit dem Algorithmus für ungerade Quadrate mit den entsprechenden Zahlen gefüllt, und zwar so dass man das zweite mit der Zahl 10, das dritte mit 19 usw. beginnt. Es ergibt sich folgendes Quadrat:
 

8 1 6 26 19 24
3 5 7 21 23 25
4 9 2 22 27 20
35 28 33 17 10 15
30 32 34 12 14 16
31 36 29 13 18 11

Nun müssen nur noch einige Zahlen nach folgenden Muster getauscht werden:
 

8 1 6 26 19 24
3 5 7 21 23 25
4 9 2 22 27 20
35 28 33 17 10 15
30 32 34 12 14 16
31 36 29 13 18 11

Und fertig ist das magische Quadrat:
 

35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11

 

4.Programmcode zur Erzeugung magischer Quadrate

program magisch_quadrat;
const ord=6;

var quadrat, matrix1, matrix2 : array[1..ord, 1..ord] of integer;
i, j : integer;

procedure odd;
var x, y, anz :integer;
begin
   x:=(ord+1) div 2;
   y:=1;
   anz:=0;
   for i:=1 to (ord*ord) do
   begin
      quadrat[x, y]:=i;
      inc(anz);
      if (anz mod ord=0) then inc(y)
      else
      begin
         if (x=ord) then x:=1 else inc(x);
         if (y=1) then y:=ord else dec(y);
      end;
   end
end;

procedure oddmod2;
var x, y, anz, zw : integer;

begin
   x:=(ord div 2+1) div 2;
   y:=1;
   anz:=0;
   for i:=1 to (ord*ord div 4) do
   begin
      quadrat[y, x]:=i;
      inc(anz);
      if (anz mod (ord div 2)=0) then inc(y)
      else
      begin
         if (x=ord div 2) then x:=1 else inc(x);
         if (y=1) then y:=ord div 2 else dec(y);
      end;
   end;

   x:=(ord div 2+1) div 2 +(ord div 2);
   y:=1+(ord div 2);
   anz:=0;
   for i:=1 to (ord*ord div 4) do
   begin
      quadrat[y, x]:=i+(ord*ord div 4);
      inc(anz);
      if (anz mod (ord div 2)=0) then inc(y)
    else
    begin
      if (x=ord) then x:=ord div 2 +1 else inc(x);
      if (y=ord div 2 +1) then y:=ord else dec(y);
    end;
   end;

   x:=(ord div 2+1) div 2 +(ord div 2);
   y:=1;
   anz:=0;
   for i:=1 to (ord*ord div 4) do
   begin
      quadrat[y, x]:=i+2*(ord*ord div 4);
      inc(anz);
      if (anz mod (ord div 2)=0) then inc(y)
      else
      begin
        if (x=ord) then x:=ord div 2+1 else inc(x);
        if (y=1) then y:=ord div 2 else dec(y);
      end;
   end;

   x:=(ord div 2+1) div 2;
   y:=1+(ord div 2);
   anz:=0;
   for i:=1 to (ord*ord div 4) do
   begin
      quadrat[y, x]:=i+3*(ord*ord div 4);
      inc(anz);
      if (anz mod (ord div 2)=0) then inc(y)
      else
      begin
        if (x=ord div 2) then x:=1 else inc(x);
        if (y=ord div 2+1) then y:=ord else dec(y);
      end;
   end;

   for i:=1 to (ord div 3) do
   begin
      zw:=quadrat[i, i];
      quadrat[i, i]:=quadrat[ord div 2+i, i];
      quadrat[ord div 2+i, i]:=zw;

      if (i<>ord div 3) then
      begin
         zw:=quadrat[ord div 2+1-i, i];
         quadrat[ord div 2+1-i, i]:=quadrat[ord+1-i, i];
         quadrat[ord+1-i, i]:=zw;
      end;
   end; 
end;

procedure mod4;
var a, b, erg, zw : integer;
begin
   zw:=ord div 4;
   for i:=1 to ord do
   for j:=1 to ord do
   begin
      a:=((i-1) div (zw));
      b:=((j-1) div (zw));
      erg:=a*4+b+1;
      case erg of
       1, 4, 6, 7, 10, 11, 13, 16: quadrat[i, j]:=(i-1)*ord+j;
       else quadrat[ord+1-i, ord+1-j]:=(i-1)*ord+j;
      end;
   end;
end;


procedure ausgabe;
begin
   for i:=1 to ord do
   begin
      for j:=1 to ord do Write(quadrat[i, j]:3);
      Writeln;
   end;
   Readln;
end;

begin
   if (ord mod 4=0) then mod4
   else if (ord mod 2=1) then odd
   else oddmod2;
   ausgabe;
end.

Zurück zur Hauptseite