幻方论文.docx
- 文档编号:15325961
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:19
- 大小:356.51KB
幻方论文.docx
《幻方论文.docx》由会员分享,可在线阅读,更多相关《幻方论文.docx(19页珍藏版)》请在冰点文库上搜索。
幻方论文
天津工业大学
中文题目:
对幻方的浅显认识
英文题目:
Superficialunderstandingofthemagicsquare
学号:
**********
*****************************
年级:
2012级
专业:
计算机技术
*******
完成日期:
2012年10月
摘要
多少世纪来人们对幻方总是怀着浓厚的兴趣。
从古代起幻方就跟某些超自然和魔术的领域相联系。
在古代亚洲的城市,人们在考古挖掘中发现了它们。
有关幻方的最早记录,是约于公元前2200年在中国出现的“洛书”。
传说这个幻方最初是大禹在黄河岸边的一只神龟的背上看到的。
幻方,有时又称魔方(该称呼现一般指立方体的魔术方块)或纵横图,由一组排放在正方形中的整数组成,其每行、每列以及两条对角线上的数之和均相等。
幻方起源于我国,并由我国传到全世界,在这漫长的历史中,幻方也得到了广泛的发展和进步。
我们从多个角度去探寻幻方的历史,发展和在现实生活中的应用,以此来一部加深对幻方的理解。
关键词:
幻方历史幻方应用
第一章引言
我国的纵横图通过东南亚国家,印度、阿拉伯传到西方。
由于纵横图具有十分奇幻的特性,西方把纵横图叫作MagicSquare,翻译成中文就是“幻方”或“魔方”。
在一个由若干个排列整齐的数组成的正方形中,图中任意一横行、一纵行及对角线的几个数之和都相等,具有这种性质的图表,称为“幻方”。
幻方问题是具有悠久历史的复杂排列组合问题。
幻方问题的复杂性不仅在于解的多样性随阶数指数递增,而且在于解在可行排列空间中所占的比例随阶数指数递减。
此外,在文章最后,简单介绍了幻方在数学和智力开发,科学以及艺术中的应用。
我们从多个角度去探寻幻方的历史,发展和在现实生活中的应用,以此来一部加深对幻方的理解。
第二章幻方的历史和发展
关于幻方的起源,我国有“河图”和“洛书”之说。
相传在远古时期,伏羲氏取得天下,把国家治理得井井有条,感动了上天,于是黄河中跃出一匹龙马,背上驮着一张图,作为礼物献给他,这就是“河图”,也是最早的幻方。
伏羲氏凭借着“河图”而演绎出了八卦,后来大禹治洪水时,洛水中浮出一只大乌龟,它的背上有图有字,人们称之为“洛书”。
大约在8世纪,中国的幻方记述传人阿拉伯地区。
该地区的人们对幻方产生了极大兴趣,并做出重要贡献。
塔比伊本·库拉较早研究了幻方。
约990年,一批阿拉伯学者编的本百科全书中可找到3,4,5,6阶幻方,并说明7,8,9阶幻方的存在。
幻方1315年前后传人西方后,最初被赋予一种神秘性或作为护身符,成为神秘哲学的一部分,或是在一些场合中作为有趣的数学游戏。
但当时并未引起人们的深思和研究。
在中国,宋朝杨辉的《续古摘奇算法》辑录了更高阶的幻方(至10阶),他最早从数学角度研究了洛书的构造法以及其他6种变形幻方。
它们同样具有某些组合性质。
扬辉还构造出由9个洛书勾成的大幻方,如果洛书中的第I列第J行数记为In。
杨辉之后易东、程大位、王文素,清朝方中逦、张潮、保其寿对幻方及变形幻方有深入的研究。
形式也趋于多样化。
除了这些以外,历史上最早的四阶幻方是在印度发现的,那是一个完全幻方,而且比中国的杨辉还要早了两百多年,印度人认为那是天神的手笔。
直到中世纪后.欧洲的一些数学著作中才开始出现讨论幻方及其改造的内容,如卡尔丹诺给出了分别以日、月和五星为名的幻方及构造法。
7世纪.日本对幻方也产生很浓的兴趣一主要是关孝和对幻方和幻圆理论的研究。
现在的幻方种类很多,如一般幻方,对称幻方,同心幻方,完美幻方。
平面幻方(二维),幻立方(三维),多维幻方。
平方幻方,立方幻方,高次幻方,高次多维幻方。
魔鬼幻方,马步幻方,多重幻方,六角幻方,双料幻方,幻环,幻圆等等。
特殊的幻方有反幻方,完美反幻方。
第三章幻方法则的研究
幻方法则
3.1奇数阶幻方(罗伯法)
奇数阶幻方最经典的填法是罗伯法。
填写的方法是:
把1(或最小的数)放在第一行正中;按以下规律排列剩下的(n×n-1)个数:
1、每一个数放在前一个数的右上一格;
2、如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;
3、如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;
4、如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内;
5、如果这个数所要放的格已经有数填入,那么就把它放在前一个数的下一行同一列的格内。
例,用该填法获得的5阶幻方:
17
24
1
8
15
23
5
7
14
16
4
6
13
20
22
10
12
19
21
3
11
18
25
2
9
3.2双偶数阶幻方(对称交换法)
所谓双偶阶幻方就是当n可以被4整除时的偶阶幻方,即4K阶幻方。
在说解法之前我们先说明一个“互补数”定义:
就是在n阶幻方中,如果两个数的和等于幻方中最大的数与1的和(即n×n+1),我们称它们为一对互补数。
如在三阶幻方中,每一对和为10的数,是一对互补数;在四阶幻方中,每一对和为17的数,是一对互补数。
双偶数阶幻方的对称交换解法:
先看看4阶幻方的填法:
将数字从左到右、从上到下按顺序填写:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
内外四个角对角上互补的数相易,(方阵分为两个正方形,外大内小,然后把大正方形的四个对角上的数字对换,小正方形四个对角上的数字对换)即(1,16)(4,13)互换(6,11)(7,10)互换即可。
16
2
3
13
5
11
10
8
9
7
6
12
4
14
15
1
对于n=4k阶幻方,我们先把数字按顺序填写。
写好后,按4×4把它划分成k×k个方阵。
因为n是4的倍数,一定能用4×4的小方阵分割。
然后把每个小方阵的对角线,象制作4阶幻方的方法一样,对角线上的数字换成互补的数字,就构成幻方。
以8阶幻方为例:
(1)先把数字按顺序填。
然后,按4×4把它分割成4块(如图)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
(2)每个小方阵对角线上的数字(如左上角小方阵部分),换成和它互补的数。
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
3.3单偶数阶幻方(象限对称交换法)
以n=10为例,10=4×2+2,这时k=2
(1)把方阵分为A,B,C,D四个象限,这样每一个象限肯定是奇数阶。
用罗伯法,依次在A象限,D象限,B象限,C象限按奇数阶幻方的填法填数。
(2)在A象限的中间行、中间格开始,按自左向右的方向,标出k格。
A象限的其它行则标出最左边的k格。
将这些格,和C象限相对位置上的数,互换位置。
(3)在B象限任一行的中间格,自右向左,标出k-1列。
(注:
6阶幻方由于k-1=0,所以不用再作B、D象限的数据交换),将B象限标出的这些数,和D象限相对位置上的数进行交换,就形成幻方。
第四章同阶幻方结构的讨论
同阶幻方结构
4.1三阶幻方
3阶幻方仅有一种。
当然,按照对称可得出8种表现:
4.2四阶幻方
4阶完美幻方有48种。
当然,按照对称和旋转可得出880种表现。
4.3五阶幻方
5阶完美幻方有144种。
第五章幻方法则的程序
程序如下
#include"stdio.h"
#include"math.h"
inta[256][256];
intn;
intsum;
intcheck();
voidOddMagicSquare(intn);//奇数幻方
voidSEvenMagicSquare(intn);//单偶数幻方
voidDEvenMagicSquare(intn);//双偶数幻方
voidmain()
{
inti,j;
printf("请输入幻方的阶数:
");
scanf("%d",&n);
sum=(n*n+1)*n/2;//幻方的和
//奇数幻方
if(n%2==1)
{
OddMagicSquare(n);
}
//单偶数幻方
if(n%4==2)
{
SEvenMagicSquare(n);
}
//双偶数幻方
if(n%4==0)
{
DEvenMagicSquare(n);
}
//检验并输出
if(check(n)==1)
{
printf("这个%d阶幻方如下:
\n",n);
for(i=0;i { for(j=0;j printf("%5d",a[i][j]); printf("\n"); } }else { printf("这个算法是错误的! "); } } //检验是否是幻方 intcheck(intn) { inti,j,sum1=0,sum2; //检查行 for(i=0;i { for(j=0;j sum1+=a[i][j]; if(sum1! =sum)return0;//每一行的和等于幻方和(n*n+1)*n/2 sum1=0; } //检查列 for(i=0;i { for(j=0;j sum1+=a[j][i]; if(sum1! =sum)return0;//每一列的和等于幻方和(n*n+1)*n/2 sum1=0; } //检查对角线 for(sum1=0,sum2=0,i=0,j=0;i { sum1+=a[i][j]; sum2+=a[i][n-j-1]; } if(sum1! =sum)return0; if(sum2! =sum)return0;//每一条对角线的和等于幻方和(n*n+1)*n/2 elsereturn1; } //奇数幻方的输入 /*规则: n为奇数时 奇数阶幻方最经典的填法是罗伯法。 填写的方法是: 把1(或最小的数)放在第一行正中;按以下规律排列剩下的(n×n-1)个数: 1、每一个数放在前一个数的右上一格; 2、如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列; 3、如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行; 4、如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内; 5、如果这个数所要放的格已经有数填入,那么就把它放在前一个数的下一行同一列的格内。 */ voidOddMagicSquare(intn) { intx,y,m; x=0; y=n/2;//y的值是n只取商 for(m=1;m<=n*n;m++)//对幻方进行排列从1到n*n { a[x][y]=m; if(m%n! =0)//判断m是否是n的整数倍 { x--;y++; if(x<0)x=x+n;//这个数所要放的格已经超出了顶行,则把它放在底行 if(y==n)y=n-y;//这个数所要放的格已经超出了最右列,则把它放在第一列 } //若出现以下两种情况即 //这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内; //这个数所要放的格已经有数填入,那么就把它放在前一个数的下一行同一列的格内。 //则进行下面的运算 else { x++; if(x==n)x=x-n; } } } /*双偶数幻方 采用对称元素交换法。 首先,把数1到n×n按从上至下,从左到右顺序填入矩阵; 然后,将方阵的所有4×4子方阵中的两对角线上位置的数 关于方阵中心作对称交换,即a(i,j)与a(n-1-i,n-1-j)交换,所有其它位置上的数不变。 (或者将对角线不变,其它位置对称交换也可)*/ voidDEvenMagicSquare(intn) { intm=1; inti,j,k; //从上至下,从左到右顺序填入矩阵 for(i=0;i for(j=0;j a[j][i]=m++; for(i=0;i for(j=0;j { 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) for(k=0;k<4;k++) a[i-k][j+k]=n*n-a[i-k][j+k]+1;//对角线上的数字换成互补的数字 } } /*单偶数幻方 以n=10为例,10=4×2+2,这时k=2 (1)把方阵分为A,B,C,D四个象限,这样每一个象限肯定是奇数阶。 用罗伯法,依次在A象限,D象限,B象限,C象限按奇数阶幻方的填法填数。 (2)在A象限的中间行、中间格开始,按自左向右的方向,标出k格。 A象限的其它行则标出最左边的k格。 将这些格,和C象限相对位置上的数,互换位置。 (3)在B象限任一行的中间格,自右向左,标出k-1列。 (注: 6阶幻方由于k-1=0,所以不用再作B、D象限的数据交换), 将B象限标出的这些数,和D象限相对位置上的数进行交换,就形成幻方。 */ voidSEvenMagicSquare(n) { intk=n/2; inti,j,t,p; OddMagicSquare(k); /*把方阵分为A,B,C,D四个象限,这样每一个象限肯定是奇数阶。 用罗伯法,依次在A象限,D象限,B象限,C象限按奇数阶幻方的填法填数。 */ for(i=0;i for(j=0;j { a[i][j+k]=a[i][j]+2*k*k; a[i+k][j]=a[i][j]+3*k*k; a[i+k][j+k]=a[i][j]+k*k; } t=(n-2)/4; for(i=0;i for(j=0;j { /*在A象限的中间行、中间格开始,按自左向右的方向,标出k格。 A象限的其它行则标出最左边的k格。 将这些格, 和C象限相对位置上的数,互换位置。 */ if((j { p=a[i][j];a[i][j]=a[i+k][j];a[i+k][j]=p; } if((j { p=a[i][j];a[i][j]=a[i+k][j];a[i+k][j]=p; } if((i>=t&&i<=k-t-1)&&(j>=t&&j { p=a[i][j];a[i][j]=a[i+k][j];a[i+k][j]=p; } /*在B象限任一行的中间格,自右向左,标出k-1列。 (注: 6阶幻方由于k-1=0,所以不用再作B、D象限的数据交换), 将B象限标出的这些数,和D象限相对位置上的数进行交换,就形成幻方。 */ if(j>1&&j<=t) { p=a[i][j+k];a[i][j+k]=a[i+k][j+k];a[i+k][j+k]=p; } } } 第六章幻方的应用 6.1幻方在数学和智力开发中的应用 幻方由于其独特的性质在很多时候可以巧妙的解决一些数学智力问题。 如用“三阶幻方”巧填“爱因斯坦填数题”,用“三阶幻方”艇决“取牌游戏问题”,用“四阶幻方”巧填“玛•摩西约利斯米难题。 同时由于幻方简单,饿哦那故意入门,所以很容易英气青少年的注意。 我国从古代到现代都将幻方原理此应用于各种智力产品的开发。 如古代的九宫格,以及现在的华容道和推箱子等各种游戏。 6.2幻方在科学技术中的应用 幻方应用于位置解析学及组合解析学中,幻方引出了拉普拉斯的导引系数和哥斯定理,格里定理等,甚至还引出了普生,布鲁丁两氏的电子方程式。 幻方还引出了桑南的自动控制论,从而促成了电子计算机的诞生。 我国也正在研究应用幻方研究中医理论,是从幻方原理HO你故意理论,从幻方的数字结构来研究人体病因的数字特征,以及中药的配置。 更多的科学应用方面也正在逐渐在幻方中寻找灵感用于技术创新。 6.3幻方在艺术中的应用 幻方可大量应用美术设计。 西方的建筑学家发现幻方的对称性相当丰富,建筑家用幻方组建了许多美丽的图案,他把图案中那些方阵内的线条称为魔线,并应用于轻工业品,和包装设计中。 在更多人的钻研下,更多的魔线图被设计出,每种图都是十分漂亮,这些图案表现出多样对称美的同时,又有幻方原理的理性规律,堪称鬼斧神工。 第七章结语 幻方是我国先人遗留下来的伟大的科学遗产,在传播的过程中逐渐被各国所接受和吸收,现如今幻方发展的越来越被大家重视,应用的也越来越广泛,这门千年的古老智慧在如今散发了新的光辉,坚信幻方在未来定会散发出更为璀璨的光芒。 参考文献 [1]岑湛标.幻方传说.中山大学出版社,2010,(08) [2]李尚志.数学的神韵.科学出版社,2010,(04) [3]熊斌,谈祥柏.趣味数学.上海辞书出版社,2009(08) [4]王树和.数学演绎.科学出版社,2008,(08) [5]谢涛,赵彬,谢道裕.幻方问题的演化算法.模式识别与人工智能,2007,(02) [6]刘建军.组合学思想的东方起源.西北大学学报(自然科学版),2001,(10)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 论文