1、干支纪年法及其算法设计纪年法换算的数学模型分析王伟伟【文章摘要】干支纪年法作为我国一种独特的传统纪年法,在我国历史上有广泛的应用,历史上有很多重要事件以干支来命名,但是大部分学生对这个传统纪年法不了解,更不知道如何进行公元纪年和干支纪年法之间的换算。本文介绍干支纪年法和公元纪年法之间的换算方法并对此换算方法用 c 语言程序进行了设计,并对此进行了相关的数学建模分析。【关键词】天干 地支 干支纪年法 数学建模一、干支纪年法的介绍干支纪年法是我国一种独特的传统纪年法,是中国文化的重要组成部分,大约从殷商开始沿用至今,在我国历史上得到广泛应用,有很多重要事件甚至以干支来命名,例如,甲午战争、戊戌变法
2、、辛亥革命等等。但是,现在的大部分学生并不了解这种纪年法,在此,作一介绍,教师可以将其作为一节课外数学活动内容介绍给学生。 所谓干支,就是天干、地支的简称,具体如下:十个天干12345678910甲乙丙丁戊己庚辛壬癸十二个地支123456789101112子丑寅卯辰巳午未申酉戌亥表 1天干与地支顺次循环搭配就得到六十干支:甲子、乙丑、丙寅、,癸酉、甲戌、乙亥、丙子、,癸亥。因其以甲子开头,故又称为六十甲子,列出如下:表 21甲子2乙丑3丙寅4丁卯5戊辰6己巳7庚午8辛未9壬申10癸酉11甲戌12乙亥13丙子14丁丑15戊寅16己卯17庚辰18辛巳19壬午20癸未21甲申22乙亥23丙戌24丁亥
3、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癸亥按照表 2 中次序,每年用一对干支表示,从甲子开始到癸亥结束一个循环,然后又是甲子,如此循环不断,俗语中有“日月运转,甲子轮回“,就是说的这个意思,这种纪年法就是“干支纪年法“。二、干支纪年法与公元纪年法的换算及算法设计目前,我们一般使用世界上通用的公元纪年法,那么,怎样把公元纪年换算为干支纪年呢?比如今年是
4、2005 年,用干支纪年法如何表示呢?在表 1 中,可以看出,在一个循环的 60 年中,第 1 年是甲子,第 11 年是甲戌,第 21 年是甲申,即第一列必是甲某年,第二列必是乙某年,也就是凡个位数是 1 的必是甲某年,个位数是2 的必是乙某年,以此类推。同理,第 1 年是甲子年,第13(=12+1)年是丙子,第 25(=2*12+1)年是戊子,凡被12 除余数是 1 的必是某子年,余数是 2 的是某丑年,以此类推。据此,可以得到有公元纪年到干支纪年的换算方法,如果要计算公元 N 年的干支,可以按如下步骤计算:.计算 N=N-3 (因为公元 4 年是甲子年,所以公元 4 年可以作为甲子的开始)
5、.计算 R=N(mod60) (干支纪年 60 一循环,所以先减掉 60的倍数,方便计算).计算 T=R(mod10) D=R(mod12)把得到的数字 T、D 在表 1 中对应的天干与地支合并起来就得到所求的干支,若 T=0,则对应数字为 10,即天干为癸,若 D=0,则对应地支亥。上述步骤中,可以省略;或者省略,得到 R 后,找到其在表 2 中对应的干支即为所求。在这里,好像 N 只能取公元 4 年以后的值,那么公元 4 年以前的干支怎么办呢?天文纪年法规定,公元元年记为+1 年,公元前 1 年记为 0 年,公元前 2 年记为-1 年,以此类推,N 按这个方法取值再计算。换算步骤 C 语言
6、程序表示如下:main( )int n,m,r,t,d;printf(“n 请输入要换算的年份: “);scanf(“%d“,if(n0)n=n+1;m=n-3; if(m=0) m=m+60;r=m%60; t=r%10;d=r%12;printf(“t=%3d,d=%3d“,t,d);if(t=o) t=t+10;if(d=0) d=d+12;switch(t)case1:printf(“甲“) ;break;case2:printf(“乙“) ;break;case3:printf(“丙“) ;break;case4:printf(“丁“) ;break; case5:printf(“戊
7、“) ;break;case6:printf(“己“) ;break;case7:printf(“庚“) ;break;case8:printf(“辛“) ;break;case9:printf(“壬“) ;break;case10:printf(“癸“) ;break;switch(d) case1:printf(“子“) ;break;case2:printf(“丑“) ;break;case3:printf(“寅“) ;break;case4:printf(“卯“) ;break;case5:printf(“辰“) ;break;case6:printf(“巳“) ;break;case
8、7:printf(“午“) ;break;case8:printf(“未“) ;break;case9:printf(“申“) ;break;case10:printf(“酉“) ;break;case11:printf(“戌“) ;break; case12:printf(“亥“) ;break;在具体运用干支纪年法时,要注意春节的日子,拿 2005 年来说,2 月 9 日是“年初一“,这时才算是已酉年,而从 2004 年 1 月 1日到 2 月 8 日,还是属于甲申年的,所以笼统地说 2005 年是已酉年并不准确,不过春节前的日子很短,习惯上默认是指春节后的干支。三、提炼数学模型,培养学生
9、的数学建模能力在干支纪年法和公元纪年法的换算分析中,经历了如下几个环节:而这个过程恰是数学建模中分析解决问题的三个重要步骤。数学建模是指将现实问题简化、抽象为一个数学问题或者数学模型,然后采用恰当的饿数学方法求解,进而对现实问题进行定量分析和研究,最终达到解决实际问题的目的。数学建模的过程能够使学生真正感受到数学知识理论与实践的结合,体现了学以致用的原则,能够促进学生各学科的全面发展,提高学生运用现代化工具的能力,培养学生严谨、求实的科学态度和协作、创新的精神。高职数学教学正在向以培养学生的数学素养为目标的能力教育转变,在这种转变过程中,作为高等数学的拓展课程-数学建模的教学显得尤为重要。但是
10、,提高学生的数学建模能力是一个比较复杂的过程,所以,要循序渐进,从简入难,先给学生一些简单的比较容易解决的问题去练习,要在平时的教学中,把数学教学和数学建模有机地结合起来。实际上,高等数学的许多教学内容中都可以引入相应的数学模型,如函数应用问题中,引入“复利、助学贷款“等实际生活中的例子;导数、微分、积分及其应用中,可编制“商品存储费用优化问题,磁盘最大存储量、交通管理中的红灯、黄灯、绿灯亮的时间问题、洗衣机的节水问题“等;概率统计问题中,可插入彩票问题、报童卖报策略问题等。总之,在高职数学教学中,可以根据学生的特点以及不同的教学内容,编制不同的数学模型进行教学,既可以激发学生对数学的学习兴趣,活跃课堂气氛,又可以增强学生的数学应用意识,培养学生应用知识和计算机技术解决实际问题的能力,能够使学生能够体会到应用数学知识解决实际问题的乐趣,促使学生摆脱数学乏味论的思想,并自觉地应用数学知识和方法去观察和解决生活、生产和科技中的问题,使其由知识型向能力型转化,全面提高他们的数学素质,真正实现高职高专教学改革的目标。参考文献1 梁宗巨.数学历史典故M.沈阳:辽宁教育出版社.1995.2 谈祥柏.数学与文史M.上海:上海教育出版社.2002.3 张顺燕.数学的思想、方法和应用M.北京:北京大学出版社.1997.?教育教学研究与实践作者简介:王伟伟 女 理学硕士 基础部助教