幻方的研究文档格式.docx
《幻方的研究文档格式.docx》由会员分享,可在线阅读,更多相关《幻方的研究文档格式.docx(19页珍藏版)》请在冰点文库上搜索。
所以把它写成现在的形式就是图2。
图1
4
9
2
3
5
7
8
1
6
图2
图2是由三行三列九个数字组成的正方形排列,它的每一行、每一列、每条对角线上的三个数字的和都是同一个常数15。
这种美妙的正方形排列,在我国历史上,曾叫做“九宫图”,亦叫做纵横图。
后来,人们称它为“幻方”。
因为图2是由三行三列组成的,所以它被称为三阶幻方。
现已确认,洛书是世界上最古老的幻方。
所谓纵横图,它是由1到n^2,这n^2个自然数按照一珲的规律排列成N行、N列的一个方阵。
它具有一种厅妙的性质,在各种几何形状的表上排列适当的数字,如果对这些数字进行简单的逻辑运算时,不论采取哪一条路线,最后得到的和或积都是完全相同的。
大约两千多年前西汉时代,流传夏禹治水时,黄河中跃出一匹神马,马背上驮着一幅图,人称「河图」;
又洛水河中浮出一只神龟,龟背上有一张象征吉祥的图案称为「洛书」.
他们发现,这个图案每一列,每一行及对角线,加起来的数字和都是一样的,这就是我们现在所称的幻方.也有人认为"
洛书"
是外星人遗物;
而"
河图"
则是描述了宇宙生物(包括外星人)的基因排序规则,幻方是外星人向地球人的自我介绍.另外前几年在上海浦东陆家嘴地区挖出了一块元朝时代伊斯兰教信徒所挂的玉挂,玉挂的正面写着:
「万物非主,惟有真宰,默罕默德,为其使者」,而玉挂的另一面就是一个四阶幻方.
关于幻方的起源,我国有“河图”和“洛书”之说。
相传在远古时期,伏羲氏取得天下,把国家治理得井井有条,感动了上天,于是黄河中跃出一匹龙马,背上驮着一张图,作为礼物献给他,这就是“河图”,也是最早的幻方。
伏羲氏凭借着“河图”而演绎出了八卦,后来大禹治洪水时,洛水中浮出一只大乌龟,它的背上有图有字,人们称之为“洛书”。
“洛书”所画的图中共有黑、白圆圈45个。
把这些连在一起的小圆和数目表示出来,得到九个。
这九个数就可以组成一个纵横图,人们把由九个数3行3列的幻方称为3阶幻方,除此之外,还有4阶、5阶...
后来,人们经过研究,得出计算任意阶数幻方的各行、各列、各条对角线上所有数的和的公式为:
S=n(n^2+1)/2
其中n为幻方的阶数,所求的数为S.
幻方最早记载于我国公元前500年的春秋时期《大戴礼》中,这说明我国人民早在2500年前就已经知道了幻方的排列规律。
而在国外,公元130年,希腊人塞翁才第一次提起幻方。
我国不仅拥用幻方的发明权,而且是对幻方进行深入研究的国家。
公元13世纪的数学家杨辉已经编制出3-10阶幻方,记载在他1275年写的《续古摘厅算法》一书中。
在欧洲,直到574年,德国著名画家丢勒才绘制出了完整的四阶幻方。
而在国外,十二世纪的阿拉伯文献也有六阶幻方的记载,我国的考古学家们曾经在西安发现了阿拉伯文献上的五块六阶幻方,除了这些以外,历史上最早的四阶幻方是在印度发现的,那是一个完全幻方(后面会提到),而且比中国的杨辉还要早了两百多年,印度人认为那是天神的手笔.
1956年西安出土一铁片板上所刻的六阶幻方(古阿拉伯数字)
十三世纪,东罗马帝国才对幻方产生兴趣,但却没有什么成果.
直到十五世纪,住在君士坦丁堡的魔索普拉才把我国的纵横图传给了欧洲人,欧洲人认为幻方可以镇压妖魔,所以把它作为护身符,也把它叫作「MagicSquare」.
欧洲最早的幻方是在德国一位名画家AlbrechtDure的画里的
第二章幻方的构造
三阶幻方是怎样构造出来的呢?
我国宋朝数学家杨辉给出了一种简便的方法:
如图3,将1至9九个数字斜着排列,然后把上下两个数字1和9对调,左右两个数字7和3对换,得到图4。
再将图4中的上下左右四个数字9,1,3,7分别写进与它相邻的空格中,就得到前述的图2。
图3
图4
不仅如此,杨辉对幻方还进行了较系统的研究,他是世界上第一位把幻方当作数学问题来研究的数学家。
他构造出多种幻方,其中之一就是图5。
它是由十六个数字组成的一种正方排列,其中每行每列、每条对角线上的数字和都是34。
16
14
11
15
10
12
13
图5图6
图5是怎样构造出来的呢?
数学家杨辉为此给出了一种十分简单的方法,它与三阶幻方的构造有所不同。
如图6,先将1至16的十六个数字按顺序排列在四行四列的方格中,然后把两条对角上、关于正方形中心对称的四对数,6和11,1和16,7和10,4和13分别对换,就得到图5。
在四阶幻方中,一个颇为著名的幻方是印度太苏神庙石碑上的幻方,如图7,它刻于十一世纪。
这个幻方中,不但每行每列每条对角线上的数字和为34,而且有20组某两行两列交叉点上的四个数字,它们的和也都为34,例如9+2+15+8=34。
更为奇妙的是把这个幻方边上的行或列移到另一边上去,所得到的正方形排列仍是一个幻方。
图7
图8
大约十五世纪,我国的纵横图传到欧洲,引起了人们的普遍兴趣,成千上万的人沉醉于幻方之中。
德国画家丢勒(1427—1528)就是其中的一位。
他找到了一个四阶幻方,如图8,并把它反映在他的著名版画《忧郁症》中。
它也许是欧洲最早的幻方。
有趣的是,丢勒在这一幻方中把版画创作的年代1514也放了进去。
他可能正是从这两个数出发,通过不断的试验而找出了其余的数字。
19
20
23
18
17
21
22
24
25
-11
-12
-1
-3
-5
-2
-8
-9
-4
-10
-7
-6
图9
图10
图9是一个五阶幻方,其中隐藏着一条绝妙的性质:
幻方中的每个数字减去中心位置数字12后,得到一个这样的幻方(如图10),它的中心对称或轴对称上的两个数字互为相反数,并且中间位置上的九个数字也构成一个幻方。
更值得一提的是,图10中隐含了如何由三阶幻方出发构造五阶幻方,又进而由五阶幻方构造出七阶幻方,等等行之有效的方法,限于篇幅,这里就不作介绍了。
除了上面提及的一类方形幻方外,其它类型的幻方也各具风彩,深受人们的喜爱。
图11
图12
我国数学家张潮(165~?
年)在他的“算法补图”中,介绍了多种非常别致的幻方,优美的“龟文聚六图”就是其中之一,如图11。
图11中,有二十四个数,每块龟文六边形上的数字和为75。
在幻方中,最为稀有的幻方莫过于六角幻方,如图12。
它的十五条直线上的数字和都为19的2倍38。
它是由一位名叫阿当斯的人,经过四十多年的不懈努力才搞出来的。
它的完美形式令人赞叹不已,他的锲而不舍的精神更感人至深。
第三章幻方构造的实现
最简单的幻方就是平面幻方,还有立体幻方、高次幻方等。
对于立体幻方、高次幻方目前世界上很多数学家仍在研究,现在只讨论平面幻方。
对平面幻方的构造,分为三种情况:
N为奇数、N为4的倍数、N为其它偶数(4n+2的形式)
3.1一般方法
3.1.1N为奇数时
最简单
(1)将1放在第一行中间一列;
(2)从2开始直到n×
n止各数依次按下列规则存放:
按45°
方向行走,如向右上
每一个数存放的行比前一个数的行数减1,列数加1
(3)如果行列范围超出矩阵范围,则回绕。
例如1在第1行,则2应放在最下一行,列数同样加1;
(4)如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,
则把下一个数放在上一个数的下面。
3.1.2N为4的倍数时
采用对称元素交换法。
首先把数1到n×
n按从上至下,从左到右顺序填入矩阵然后将方阵的所有4×
4子方阵中的两对角线上位置的数关于方阵中心作对称交换,即a(i,j)与a(n-1-i,n-1-j)交换,所有其它位置上的数不变。
(或者将对角线不变,其它位置对称交换也可)
3.1.3N为其它偶数时
当n为非4倍数的偶数(即4n+2形)时:
首先把大方阵分解为4个奇数(2m+1阶)子方阵。
按上述奇数阶幻方给分解的4个子方阵对应赋值上左子阵最小(i),下右子阵次小(i+v),下左子阵最大(i+3v),上右子阵次大(i+2v)即4个子方阵对应元素相差v,其中v=n*n/4四个子矩阵由小到大排列方式为①③④②
然后作相应的元素交换:
a(i,j)与a(i+u,j)在同一列做对应交换(j<
t或j>
n-t+2),a(t-1,0)与a(t+u-1,0);
a(t-1,t-1)与a(t+u-1,t-1)两对元素交换其中u=n/2,t=(n+2)/4上述交换使每行每列与两对角线上元素之和相等。
C语言实现
#include"
stdio.h"
math.h"
inta[256][256];
intsum;
intcheck();
voidins(intn);
main()
{
inti,j,n,k,t,p,x;
scanf("
%d"
&
n);
sum=(n*n+1)*n/2;
if(n%2==1)//奇数幻方
ins(n);
k=n;
}
if(n%4==2)//单偶数幻方
k=n/2;
ins(k);
for(i=0;
i<
k;
i++)
for(j=0;
j<
j++)
{
a[j+k]=a[j]+2*k*k;
a[i+k][j]=a[j]+3*k*k;
a[i+k][j+k]=a[j]+k*k;
}
t=(n-2)/4;
for(i=0;
for(j=0;
if((j<
t)&
&
(i<
t))
p=a[j];
a[j]=a[i+k][j];
a[i+k][j]=p;
(i>
k-t-1))
if((i>
=t&
=k-t-1)&
(j>
t*2))
if(j>
1&
=t)
p=a[j+k];
a[j+k]=a[i+k][j+k];
a[i+k][j+k]=p;
if(n%4==0)//双偶数幻方
x=1;
n;
a[j]=x++;
if(i%4==0&
abs(i-j)%4==0)
for(k=0;
k<
4;
k++)
a[i+k][j+k]=n*n-a[i+k][j+k]+1;
elseif(i%4==3&
(i+j)%4==3)
a[i-k][j+k]=n*n-a[i-k][j+k]+1;
if(check(n)==1)
printf("
%5d"
a[j]);
\n"
);
return;
intcheck(intn)//检验是否是幻方
inti,j,sum1=0,sum2;
sum1+=a[j];
if(sum1!
=sum)return0;
sum1=0;
for(sum1=0,sum2=0,i=0,j=0;
i++,j++)
sum2+=a[n-j-1];
if(sum2!
elsereturn1;
voidins(intn)//单偶数幻方的输入
{intx,y,m;
x=0;
y=n/2;
for(m=1;
m<
=n*n;
m++)
a[x][y]=m;
if(m%n!
=0)
x--;
y++;
if(x<
0)x=x+n;
if(y==n)y=n-y;
else
x++;
if(x==n)x=x-n;
3.2其他方法
奇阶幻方
当n为奇数时,我们称幻方为奇阶幻方。
可以用Merzirac法与loubere法实现,根据我的研究,发现用国际象棋之马步也可构造出更为神奇的奇幻方,故命名为horse法。
偶阶幻方
当n为偶数时,我们称幻方为偶阶幻方。
当n可以被4整除时,我们称该偶阶幻方为双偶幻方;
当n不可被4整除时,我们称该偶阶幻方为单偶幻方。
可用了Hire法、Strachey以及YinMagic将其实现,Strachey为单偶模型,我对双偶(4m阶)进行了重新修改,制作了另一个可行的数学模型,称之为Spring。
YinMagic是我于2002年设计的模型,他可以生成任意的偶阶幻方。
在填幻方前我们做如下约定:
如填定数字超出幻方格范围,则把幻方看成是可以无限伸展的图形,如下图:
3.2.1Merzirac法生成奇阶幻方
在第一行居中的方格内放1,依次向右上方填入2、3、4…,如果右上方已有数字,则向下移一格继续填写。
如下图用Merziral法生成的5阶幻方:
3.2.2loubere法生成奇阶幻方
在居中的方格向上一格内放1,依次向右上方填入2、3、4…,如果右上方已有数字,则向上移二格继续填写。
如下图用Louberel法生成的7阶幻方:
3039481101928
384779182729
466817263537
5141625343645
1315243342444
2123324143312
2231404921120
3.2.3horse法生成奇阶幻方
先在任意一格内放入1。
向左走1步,并下走2步放入2(称为马步),向左走1步,并下走2步放入3,依次类推放到n。
在n的下方放入n+1(称为跳步),再按上述方法放置到2n,在2n的下边放入2n+1。
如下图用Horse法生成的9阶幻方:
77583920172533415
66849301173634425
16785940212645435
26769503112745545
36177960412236546
37278705132137556
47281880614223466
57381997152331476
67482910816243245
一般的,令矩阵[1,1]为向右走一步,向上走一步,[-1,0]为向左走一步。
则马步可以表示为2X+Y,{X∈{[1,0],[-1,0]},Y∈{[0,1],[0,-1]}}∪{Y∈{[1,0],[-1,0]},X∈{[0,1],[0,-1]}}。
对于2X+Y相应的跳步可以为2Y,-Y,X,-Y,X,3X,3X+3Y。
上面的的是X型跳步。
Horse法生成的幻方为魔鬼幻方。
3.2.4Hire法生成偶阶幻方
将n阶幻方看作一个矩阵,记为A,其中的第i行j列方格内的数字记为a(i,j)。
在A内两对角线上填写1、2、3、……、n,各行再填写1、2、3、……、n,使各行各列数字之和为n*(n+1)/2。
填写方法为:
第1行从n到1填写,从第2行到第n/2行按从1到进行填写(第2行第1列填n,第2行第n列填1),从第n/2+1到第n行按n到1进行填写,对角线的方格内数字不变。
如下所示为6阶填写方法:
154326
623451
123456
653421
624351
如下所示为8阶填写方法(转置以后):
18118881
72227727
63336366
54444555
45555444
36663633
27772272
81881118
将A上所有数字分别按如下算法计算,得到B,其中b(i,j)=n×
(a(i,j)-1)。
则AT+B为目标幻方
(AT为A的转置矩阵)。
如下图用Hire法生成的8阶幻方:
163656059588
5610111253541549
4118192045224748
3326272829383940
3239383637272625
2447434520461817
165054531211559
577626143264
3.2.5Strachey法生成单偶幻方
将n阶单偶幻方表示为4m+2阶幻方。
将其等分为四分,成为如下图所示A、B、C、D四个2m+1阶奇数幻方。
AC
DB
A用1至2m+1填写成(2m+1)2阶幻方;
B用(2m+1)2+1至2*(2m+1)2填写成2m+1阶幻方;
C用2*(2m+1)2+1至3*(2m+1)2填写成2m+1阶幻方;
D用3*(2m+1)2+1至4*(2m+1)2填写成2m+1阶幻方;
在A中间一行取m个小格,其中1格为该行居中1小格,另外m-1个小格任意,其他行左侧边缘取m列,将其与D相应方格内交换;
B与C接近右侧m-1列相互交换。
如下图用Strachey法生成的6阶幻方:
3516261924
3327212325
3192222720
82833171015
30534121416
43629131811
N为其它偶数时当n为非4倍数的偶数(即4n+2形)时:
按上述奇数阶幻方给分解的4个子方阵对应赋值上左子阵最小(i),下右子阵次小(i+v),下左子阵最大(i+3v),上右子阵次大(i+2v)即4个子方阵对应元素相差v,其中v=n*n/4四个子矩阵由小到大排列方式为①③④②然后作相应的元素交换:
n-t+2),a(t-1,0)与a(t+u-1,0);
3.2.6Spring法生成以偶幻方
将n阶双偶幻方表示为4m阶幻方。
先令a(i,j)=(i-1)*n+j,即第一行从左到可分别填写1、2、3、……、n;
即第二行从左到可分别填写n+1、n+2、n+3、……、2n;
…………之后进行对角交换。
对角交换有两种方法:
方法一;
将左上区域i+j为偶数的与幻方内以中心点为对称点的右下角对角数字进行交换;
将右上区域i+j为奇数的与幻方内以中心点为对称点的左下角对角数字进行交换。
(保证不同时为奇或偶即可。
)
方法二;
将幻方等分成m*m个4阶幻方,将各4阶幻方中对角线上的方格内数字与n