Сайт Льва Волкова
  
· Период обращения Плутона вокруг Солнца (то есть его год) составляет 247,7 земных лет.
 
      На главную  
 Личное
  Статьи
  Задачи 
 Ссылки
 АТ-531
www.levvol.ru    
 

        МАГИЧЕСКИЙ КВАДРАТ

Китайская легенда гласит, что 42 векa тому назад правитель Юй увидел этот странный квадрат на панцире священной черепахи. Также этот квадрат называется диаграммой реки Лу и возможно он появился в Х веке. Другое его название — магический квадрат.

   Юй является основателем первой династии — Ся, так как после его смерти люди настояли, чтобы их повелителем стал его сын, и отвергли министра Юя по имени И, которому тот передал власть. Классическая традиция относит правление Юя к 2205 году до н. э., однако другая хронология, «бамбуковых книг», помещает его царствование под 1989 год до н. э.
Рис 1.

Магический квадрат-это набор целых чисел, расположенных в форме квадрата таким образом, что суммы чисел, стоящих в одной (любой!) строке, в одном (любом!) столбце и на одной (любой!) диагонали, имеют одно и то же значение.

Другой пример магического квадрата приведен на гравюре Дюрера «Меланхолия».

Дюрер. Меланхолия
Гравюра Дюрера «Меланхолия». 1514 г.
(в правом верхнем углу изображен магический квадрат 4Х4).

ДЮРЕР Альбрехт (1471 — 1528) — немецкий живописец, гравер, рисовальщик, теоретик искусства эпохи Возрождения. Родился в семье ювелира. Интерес к рисунку зародил в нем отец, обучивший сына основным приемам гравировки на металле. С 1486 по 1490 гг. учителем Дюрера был нюрнбергский гравер и живописец Михаэль Вольгемут.

   Значительное влияние на творческое становление мастера оказало путешествие по городам Германии (Франкфурт-на-Майне, Кольмар, Страсбург, Базель), где он знакомится с гуманистами и книгопечатниками.

   В 1494 г. А. Дюрер возвращается на родину, женится на дочери влиятельного бюргера, механика и музыканта, а через год открывает свою мастерскую и начинает самостоятельную работу в качестве живописца и гравера. В 1494 — 1495 гг. мастер посещает Италию (Венецию и Падую), где происходит его знакомство с работами А. Мантеньи и Беллини. В 1505 г. А. Дюрер вновь возвращается в Венецию, много работает, путешествует, знакомится с Рафаэлем. В 1520 — 1521 гг. совершает поездку в Нидерланды (Брюссель, Антверпен, Брюгге, Малин, Гент и др.), впечатления от которой дали новый толчок к развитию его творчества. Умер А. Дюрер в 1528 г.

Увеличенный фрагмент гравюры Дюрера «Меланхолия» с магическим квадратом
Увеличенный фрагмент гравюры Дюрера «Меланхолия».

Этот квадрат имеет вид:

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

Если рассматриваемый набор чисел образует последовательность целых чисел от 1 до n2 (как на гравюре Дюрера, где n=4), квадрат называется магическим квадратом порядка n , — легко видеть, что в этом случае сумма членов каждой строки, каждого столбца и каждой диагонали должна быть равна n( n2+1)/2.

Мы ограничимся рассмотрением только подобных магических квадратов, т. е. квадратов, образованных последовательными целыми числами, начиная 1 и далее. Те же самые правила распространяются на задачи, где фигурируют n2 чисел, образующих арифметическую прогрессию.)

Построение таких квадратов - старинное развлечение, а в те далекие времена, когда некоторым числам предписывались магические свойства, подобные построения служили предметом серьезного исследования.

Как мы видим из легенды о правителе Ю магические квадраты были известны в Китае далеко до нашей эры, а в Европе о них узнали, по-видимому, благодаря Мосхопулосу, жившему в Константинополе в начале XV в. Известный немецкий гуманист Корнелий Агриппа (1486 — 1535) построил магические квадраты порядка 3, 4, 5, 6, 7, 8, 9; он связал их с семью астрологическими «планетами» — Сатурном, Юпитером, Марсом, Солнцем, Венерой, Меркурием и Луной. Серебряные пластинки с выгравированными магическими квадратами носили как амулеты, предохраняющие от чумы и других поветрий. На гравюре Альбрехта Дюрера "Меланхолия", созданной им в 1514 г.; числа в середине нижней строки этого квадрата указывают дату создания этой гравюры.

Математическая теория построения магических квадратов была развита во Франции в XVII в. Позднее она стала излюбленной темой исследований многих авторов из разных стран.

Рассмотрим алгоритм построения магических квадратов. Воспользуемся следующими обозначениями. Клетками будем называть те поля или малые квадратики, в которые вписываются числа. Обычно (первую, вторую и т. д.) строки отсчитывают сверху, а (первый, второй и т. д.) столбцы-слева.

Магические квадраты любого порядка n >2 можно строить довольно легко. Используемые для этого правила зависят от того, является ли порядок квадрата n нечетным числом (т. е. n = 2m + 1), числом простой четности [т. е. n=2(2m+1)] или n есть число двойной четности (т. е. n=4m]. Для каждого из этих случаев ниже приводятся простейшие правила построения магического квадрата.

МАГИЧЕСКИЕ КВАДРАТЫ НЕЧЕТНОГО ПОРЯДКА

Магический квадрат n-го порядка при n=2m + 1 можно построить по правилу де Лялубера, суть которого заключается в следующем. Прежде всего число 1 помещается в среднюю клетку верхней строки.

    Дe Лялубер разработал этот метод, когда служил посланником французского короля Людовика XIV в Сиаме (ныне Таиланд), в период 1687-1688 гг.

Последующие числа размещаются в их обычном порядке по направлению диагонали, идущей направо и вверх от данной клетки. При этом следует иметь в виду, что когда достигнута верхняя строка, следующее число нужно записать в нижнюю строку так, как если бы она была помещена над верхней строкой. При достижении крайнего правого столбца следующее число записывается в крайний левый столбец так, как если бы он был помещен непосредственно рядом с крайним правым столбцом.

Когда требуемая для заполнения клетка уже занята или когда достигнута верхняя клетка крайнего правого столбца, необходимо спуститься по вертикали на строку вниз и затем продолжать заполнение по основному правилу, Вероятно, построенный по этому правилу магический квадрат пятого порядка, поможет лучше понять все сказанное.

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

Шаффлборд — настольная игра, в которой монеты или металлические диски щелчком передвигают по расчерченной на девять клеток доске; палубный шаффлборд — вариант этой игры с палками и деревянными дисками.

Можно легко применить изложенное правило для построения магического квадрата третьего порядка. Такой квадрат, «ло-шу» был символом Китайской империи Юй (2200 г. до н. д.) и до сих пор используется у некоторых восточных народов как амулет. Его можно встретить также на палубах больших пассажирских судов — площадка для игры в палубный шаффлборд размечена в виде магического квадрата третьего порядка.

МАГИЧЕСКИЕ КВАДРАТЫ ПОРЯДКА ПРОСТОЙ ЧЕТНОСТИ

Магический квадрат n-го порядка при n=2(2m+1) можно построить по следующему правилу, которое разработал Р. Стрэчи в 1918 г. Разделим квадрат на четыре равных квадрата А, В, С, D .

 
 A    C  
 B    D  
 

Построим в блоке А по правилу де Лялубера магический квадрат. Из чисел от 1 до u2, где u = n/2. Аналогичные магические квадраты построим в квадратах В, С, D соответственно из чисел: от u2+1 до 2u2, от 2u2 + 1 до Зu2 и от Зu2 + 1 до 4u2. Ясно, что получившийся в результате составной квадрат будет магическим по столбцам. В средней строке квадрата А возьмем m клеток от середины строки к левому краю, а в каждой из оставшихся строк возьмем m клеток, ближайших к левому краю квадрата A; числа в этих клетках поменяем местами с числами в соответствующих клетках квадрата В. Далее, возьмем числа в клетках каждого из m - 1 правых крайних столбцов квадрата С и поменяем их местами с соответствующими числами квадрата D.

Ниже показано применение этого правила для построения магического квадрата шестого порядка. В левом квадрате выделены те числа квадрата А, которые менялись местами с соответствующими числами квадрата В; на правом квадрате представлен получившийся в результате магический квадрат.

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
        
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
МАГИЧЕСКИЕ КВАДРАТЫ ПОРЯДКА ДВОЙНОЙ ЧЕТНОСТИ

Магические квадраты порядка n=4m — квадраты двойной четности. Магический квадрат четвертого порядка слегка отличающийся от квадрата на гравюре Дюрера можно построить путем выписывания чисел от I до 16 в их обычном порядке в четырех строках и последующей замены чисел, стоящих в диагональных клетках, дополнительными к ним числами, расположенными симметрично исходным числам относительно центра квадрата. Дополнительные числа вычисляются по формуле: n2-k+1, где k-число в ячейке. Диагональные клетки располагаются по четыре в шахматном порядке от центра.

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

Рассмотрим построение магического квадрата 8х8, при этом диагональные клетки располагаются по четыре в шахматном порядке от центра.

     
2
3
6
7
9
12
13
16
17
20
21
24
26
27
30
31
34
35
38
39
41
44
45
48
49
52
53
56
58
59
62
63
    
64
2
3
61
60
6
7
57
9
55
54
12
13
51
50
16
17
47
46
20
21
43
42
24
40
26
27
37
36
30
31
33
32
34
35
29
28
38
39
25
41
23
22
44
45
19
18
48
49
15
14
52
53
11
10
56
8
58
59
5
4
62
63
1
ОБЩЕЕ ЧИСЛО МАГИЧЕСКИХ КВАДРАТОВ ЗАДАННОГО ПОРЯДКА

Одна из нерешенных задач теоретического характера касается определения общего числа магических квадратов пятого (или любого более высокого) порядка. Нетрудно убедиться, что существует только один магический квадрат третьего порядка, хотя, используя отражения и повороты, его можно изобразить в 8 различных положениях.

Магических квадратов четвертого порядка имеется всего 880, однако отражения и повороты позволяют представить их в 7040 — вариантах. Упомянутая задача о числе магических квадратов пятого порядка решена не полностью. Из квадрата, построенного по методу де Лялубера, мы можем получить 720 разных квадратов; для этого первые цифры 0, 1, 2, 3, 4 фигурирующих там чисел можно переставить 5! разными способами, а последние цифры 0 1, 3, 4 переставить 4! способами. В результате удается получить 2880 магических квадратов пятого порядка, хотя только 720 из них будут существенно различными.

ПРОГРАММА ПОСТРОЕНИЯ МАГИЧЕСКИХ КВАДРАТОВ

Разработанная программа на языке Turbo Pascal позволяет строить магические квадраты любой четности при n≤19. Можно брать и большие значения n, но при n>19 квадрат не помещается на экране монитора).



Program MagicSquares;

{Построение магических квадратов}

Uses CRT;
Type a_type=array[1..50,1..50] of integer;
Var i,j,n:integer;
a:a_type;
t:boolean;
{логическая переменная true (правда) или false (ложь)}
x,y:integer;
Label 1;
{метка}
Procedure Print(n:integer; a:a_type);
{процедура вывода}
Var i,j:integer;
Begin
for i:=1 to n do begin
for j:=1 to n do write(a[i,j]:4);
writeln('');
end;
end;
Procedure WinSh(x1,y1,x2,y2,col1,col2:word);
{процедура вывода окна}
Begin
TextBackGround(black);
Window (x1+1,y1+1,x2+1,y2+1);
{тень - черный прямоугольник}
ClrScr;
TextBackGround(col1);
Window(x1,y1,x2,y2);
ClrScr;
TextColor(col2);
{рисование рамки}
GotoXY(2, 1); write('г');
for i:=1 to x2-x1-2 do write('=');
GotoXY(x2-x1,1); write('=');
GotoXY(2,y2-y1+1);
write('L'); for i:=1 to x2-x1-2 do write('=');
GotoXY(x2-x1,y2-y1+1); write('-');
for j:=2 to y2-y1 do begin
GotoXY(2,j); write('¦');
GotoXY(x2-x1,j); write('¦');
end;
End;
Procedure OddMagic(n:integer; var a:a_type);
{Процедура формирования магического квадрата при нечетном n. Описание алгоритма в сопроводительной записке }
Var
i,j,k:integer;
p,l:integer;
Begin
for i:=1 to n do
for j:=1 to n do a[i,j]:=0;
j:=n div 2 +1; p:=sqr(n); i:=1; a[i,j]:=1;
for l:=2 to p do begin
i:=i-1;
j:=j+1;
if (i=0) and (j<>n+1) then i:=n;
if (j=n+1) and (i<>0) then j:=1;
if ((i=0) and (j=n+1)) or (a[i,j]<>0) then
{важен порядок условий!}
begin
i:=i+2;
j:=j-1;
end;
a[i,j]:=l;
end;
end;
Procedure Two (n:integer; var a:a_type);
{Процедура построения квадрата при n обычной четности: n=6,10,14,18...}
Var
u,i,j,k,m,z:integer;
b:a_type;
Begin
u:= n div 2;
m:=(u-1) div 2;
OddMagic(u,b);
{вызов процедуры построения квадрата при нечет-ном u}
k:=u*u;
for i:=1 to n do
for j:=1 to n do begin
if (i>=1) and (i<=u) and (j>=1) and (j<=u) then a[i,j]:=b[i,j];
if (i>=u+1) and (i<=n) and (j>=u+1) and (j<=n) then a[i,j]:=b[i-u,j-u]+k;
if (i>=1) and (i<=u) and (j>=u+1) and (j<=n) then a[i,j]:=b[i,j-u]+2*k;
if (i>=u+1) and (i<=n) and (j>=1) and (j<=u) then a[i,j]:=b[i-u,j]+3*k;
end;
for i:=1 to u do
if i=u div 2+1 then begin
j:= u div 2+1;
for k:=1 to m do begin
z:=a[i,j];
{обмен данными}
a[i,j]:=a[i+u,j];
a[i+u,j]:=z;
j:=j-1
end;
end
else begin
j:=1;
for k:=1 to m do begin
z:=a[i,j];
{обмен данными}
a[i,j]:=a[i+u,j];
a[i+u,j]:=z;
j:=j+1
end;
end;
j:=n;
for k:=1 to m-1 do begin
for i:=1 to u do begin
z:=a[i,j]; a[i,j]:=a[i+u,j]; a[i+u,j]:=z;
{обмен данными}
end;
j:=j-1
end;
end;
Procedure Four(n:integer; var a:a_type);
{Процедура построения квадрата при n двойной четности: n=4,8,12,16...}
Var i,j,k:integer;
p,l:integer;
i1,j1,x,y:integer;
Begin
l:=1; p:=n*n;
for i:=1 to n do
for j:=1 to n do begin
a[i,j]:=l;
inc(l)
{l:=l+1}
end;
i:=2;
while i<=n-2 do begin
if i mod 4=0 then j:=4
else j:=2;
while j<=n-2 do begin
for i1:=0 to 1 do
for j1:=0 to 1 do begin
y:=i+i1; x:=j+j1;
a[y,x]:=p-a[y,x]+1;
end;
j:=j+4;
end;
i:=i+2
end;
k:=4;
while k<=n-4 do begin
a[1,k]:=p-a[1,k]+1; a[1,k+1]:=p-a[1,k+1]+1;
a[n,k]:=p-a[n,k]+1; a[n,k+1]:=p-a[n,k+1]+1;
a[k,1]:=p-a[k,1]+1; a[k+1,1]:=p-a[k+1,1]+1;
a[k,n]:=p-a[k,n]+1; a[k+1,n]:=p-a[k+1,n]+1;
k:=k+4
end;
a[1,1]:=p-a[1,1]+1;
a[n,n]:=p-a[n,n]+1;
a[1,n]:=p-a[1,n]+1;
a[n,1]:=p-a[n,1]+1;
end;
Procedure Test(n:integer; a:a_type; var t:boolean; var x,y:integer);
{Процедура проверки сумм по строкам, столбцам и диагоналям квад-рата}
Var s,z:array [1..50] of integer;
{массивы для записи сумм по строкам и столбцам}
sd,zd:integer;
i,j,k:integer;
sum:integer;
Begin
sum:=n*(n*n+1) div 2;
for k:=1 to n do begin
s[k]:=0;
z[k]:=0
end;
sd:=0; zd:=0;
for i:=1 to n do
for j:=1 to n do begin
s[i]:=s[i]+a[i,j];
z[j]:=z[j]+a[i,j]
end;
for k:=1 to n do begin
sd:=sd+a[k,k];
zd:=zd+a[k,n-k+1];
end;
k:=1; t:=true;
while (k<=n) and (t) do begin
if s[k]<>sum then begin
t:=false;
{ошибка по строкам}
y:=1;
x:=k
{номер строки}
end;
k:=k+1
end;
if (t) then begin
k:=1;
while (k<=n) and (t) do begin
if z[k]<>sum then begin
t:=false;
{ошибка по столбцам}
y:=2;
x:=k
{номер столбца}
end;
k:=k+1
end;
end;
if (t) then if sd<>sum then begin
t:=false;
{ошибка по главной диагонали}
y:=3;
x:=0;
end;
if (t) then if zd<>sum then begin
t:=false;
{ошибка по побочной диагонали}
y:=4;
x:=0;
end;
if t then writeln('Тест прошел успешно');
End;

Begin
{Основная программа}
1:
TextBackGround(blue);
ClrScr;
WinSh(20,3,60,6,blue,white);
GotoXY(9,2); write('Магический квадрат');
GotoXY(10,3); write('(c) 2006 г.');
Window(1,1,80,25); TextColor(yellow); TextBackGround(blue);
GotoXY(60,18); write(' 8 ¦ 1 ¦ 6');
GotoXY(60,19); write('===+===+===');
GotoXY(60,20); write(' 3 ¦ 5 ¦ 7');
GotoXY(60,21); write('===+===+===');
GotoXY(60,22); write(' 4 ¦ 9 ¦ 2');
TextColor(white); TextBackGround(white);
for x:=2 to 79 do begin
GotoXY(x,25);
write(' ');
end;
GotoXY(5,25);
write('Размерность =0 - конец работы программы. Рекомендуем размерность от 3 до 19');
Winsh(30,10,50,12,cyan,white);
repeat
TextColor(white);
GotoXY(4,2); write('Размерность=');readln(n);
until (n<>1) and (n<>2);
{квадрат для n=1 и для n=2 строить нельзя}
if n=0 then halt;
{выход из программы}
{Если n-нечетно, то OddMag, иначе ...}
if odd(n) then OddMagic(n,a)
else if n mod 4=0 then Four(n,a)
else Two(n,a);
TextBackGround(blue);
Window(1,1,80,25);
ClrScr;
TextColor(yellow);
ClrScr;
{вывод}
Writeln('Магический квадрат ',n,'x',n);
Print(n,a);
writeln('');
Test(n,a,t,x,y);
{Процедура тестирования квадрата}
if (t) then
writeln('Суммы по столбцам, строкам и диагоналям =',n*(n*n+1) div 2)
else begin
writeln('Ошибка');
case y of
1: writeln('Ошибка в строке ',x);
2: writeln('Ошибка в столбце ',x);
3: writeln('Ошибка по главной диагонали');
4: writeln('Ошибка по побочной диагонали')
end;
end;
readln;
goto 1;
End.




ЛИТЕРАТУРА

  1. Болл У., Коксетер Г. Математические эссе и развлечения. -М., Мир, 1986. - 474 с.
  2. Энциклопедия мировой живописи. / Сост. Т.Г. Петровец, Ю.В.Садомова. -М., ОЛМА-ПРЕСС. 2000 г. - 431 с.