导航:首页 > 源码编译 > 独特的历算法

独特的历算法

发布时间:2022-05-31 04:57:52

⑴ 农历的算法是怎么算的

农历一年为12或13个月,每个月天数依照月亮围绕地球运行周期而定,为29或30天,闰年为13个月,中国农历年平年为353或354天,闰年为384或385天,平均每年约为365.2422天(即地球环绕太阳一周的时间)。

农历基本上以19年为一周期,对应于公历同一时间。如公历的2001年5月27日、1982年5月27日和1963年5月27日这个日子,都是闰四月初五。

闰月加到哪个月,以农历历法规则推断,主要依照与农历的二十四节气相符合来确定。自冬至开始,逢单数为节气,逢双数为中气,如轮到一个月只有节气没有中气,即为上一个月的闰月。农历的闰月天数与正常月份天数一样,为29或30天。

(1)独特的历算法扩展阅读

农历是我国传统历法,又有阴历、华历、夏历、汉历、中历等名称。农历并不是纯阴历,而是一种阴阳合历,取月相的变化周期即朔望月为月的长度,加入干支历“二十四节气”成分,参考太阳回归年为年的长度,通过设置闰月以使平均历年与回归年相适应。农历是以阴历(夏历)为基础,融合阳历成分而成的一种历法。所以我国的农历从严格意义上说不应该叫阴历,而是阴阳合历。

农历属于一种阴阳合历:其年份分为平年和闰年。平年为十二个月;闰年为十三个月。月份分为大月和小月,大月三十天,小月二十九天,其平均历月等于一个朔望月。一年中哪个月大,哪个月小,由计算决定。

农历是兼顾太阳、月亮与地球关系的一种历法。阴历不考虑地球绕太阳的运行,因而使得四季的变化在阴历上就没有固定的时间,不能反映季节。与阳历年固定在365天或366天不同的是,阴历年相比阳历年在天数上有时会相差一个月;为了协调阴历年与阳历年之间的天数,于是便通过“置闰法”进行调整使阴历月相总天数与阳历回归年总天数相适应。

⑵ 中国古代历法的算法,是怎么算的呢

阴历在天文学中主要指按月亮的月相周期来安排的历法,以月球绕行地球一周(以太阳为参照物,实际月球运行超过一周。)为一月,即以朔望月作为确定历月的基础,一年为十二个历月的一种历法。而阴历事实上只按月亮的月相变化来安排的历法,所以每年比阳历要少11天。

太阳历又称为阳历,是以地球绕太阳公转的运动周期为基础而制定的历法。现行的公元纪年法就是一种阳历。

从《太初历》开始,中国历法经历了五次大的改革,终于于明末引进西洋历法,最终形成了直至今天仍然通用的《时宪历》,近五百年的应用历史足可见其精密程度。

⑶ 藏族天文历算的算法体系

藏历规定一年为12个月,大月30天,小月29天。每一千日左右,便有一个闰月,用来调整月份和季节的关系。藏历采用时轮制的纪年法,把天体分为十二宫,即:白羊、双鱼、金牛、摩羯、双子、狮子、巨蟹、宝瓶、人马、室女、天蝎、天秤。用十二属相配五行纪年。以十二年为一小循环,六十年为一大循环,称为一“绕炯”(即一时轮)。第一“绕炯”是从公元1027年开始的。1987年是第十七个“绕炯”的第一年。1991年藏历称为金羊年。这与汉地农历的纪年法相似,属相也一致。 通俗地讲,天文历算就是通过加减乘除等数学运算方法,把各种天体运动的方位、时间、面积等未知的东西,用数字的方式表达出来,并进行计算的一门自然科学。它是高原藏族人民在长期的生产活动中根据生产和生活的需要,不断观察日月星辰、冷暖气候等天象和四时节气、动植物生长变化等大自然现象,总结和积累起来的实践经验。
天文历算学不仅包括了五大行星运动值的推算、闰月和重缺日的设置、日月食的预报等,还涉及到依据天文历算学原理推算各地事宜的农耕牧作时机、物候、节令、人体脉相变化周期,特别是中长短期天气预报等,而每年由自治区藏医院天文历算研究所推算编制的藏历历书基本包括了上述内容。因此,藏历历书是天文历算研究成果的一种特殊表现形式。
自11世纪从印度传入《时轮经》历法以后.虽然藏地仍有多种多样的纪年、年首设置及闰月设置方法在流传,但藏族天文历法的计算基本是依据时轮历的。 藏传时轮历具有阴阳合历的特征。以月相圆缺的变化周期为一月,以季节变化的周期为一年;由于年、月的长度不成整数比例,除每个平年设置12个太阴月(即朔望月)以外,还要设置闰月来调整季节变化;同时,它又拥有一套独特的原理和数据系统,以推算预报天象,日、月食和预报一天中28宿和五星的方位,以及预报日、一月食的各个项目等。
计算时间
藏传时轮历中计算时间的单位有7个:息(呼吸顷),6息为一分(漏分)60分为一刻(漏刻)60刻为一日,30日为一月,12个月为一年。其中“息”的测计方法为健康的壮年男子一呼一吸所需的时间,约等于一个太阳日的1/21600;一刻相当于24分钟。
计算方法
藏传时轮历的计算方法也很独特。它测定每个太明月为29.53058太阳日,但又规定每个太阴月为30个整太阴日。为了相应地配合太阳日与太阴日之间的日序。便出现了“闰日和差日”,月的大小就依据同日和差日来解决。有差日无闰日或差日多于闰日的月份为小月,每月29天;闰差相抵或无闰日无差日的月份为大月,每月30天。
闰日与基日根法则:藏族学者自己编着的《时轮历精要》归纳出了简明扼要的口诀,即“重者去大,缺者重小”。两句话的第四个字表示天文历算中给出的日曜(星期)序数,第三个字代表历书中的日期,第四个字代表先后两天太阻日结束时刻数值的大小。日曜次序出现重复者就要把太阳日序去掉一个,日曜次序出现短缺者就增补一个太阳日序,主要依据日曜序数来保持日期的连续性。
藏传时轮历法中最重要的内容是“五要素”和“三日算”。五要素或称为“五括”:①曜(指太阴日结束的时刻);②日期(指日期与喜、善、胜、定、满五名称的配合);③星宿(指太阳日月宿,也就是当天太阳日开始时月亮所在之宿);④“会合“(由定日与月宿舍和而成);⑤“作用”(指作用的前后分)。①②③是历算中的科学成分;④⑤与占卜之术有关。“三日算”指太阳日(从头天天明到第二日天明为一完整太阳日)、太阴日(指月亮运行白分、黑分弧长的各1/15所需的时间长度)、宫日(指太阳通过一宫所需的135弧刻时间长度的1/30)。
以上的“闰日和差日”设置、五括和三日算,是藏传时轮历法计算的最根本基础,被称为“历算要害”。其中“三日算”在推算五星运行时,往往3种算法同时进行,起到相互复核的作用。
各种名称比例关系
时轮历还有3种年、月、日,各有太阳、太阴、宫的名称,其比例关系是:
1太阳年=12太阳月=360太阳日
1太阴年=12太阴月=360太阴日
1宫年=12宫月=360宫日
65宫日=67太阴日
64太阻日≈63太阳日
时轮历中所说的宫年就是现代所说的恒星年。在时轮历中恒星年与回归年不分,只用宫年。在实际推算中,作用最大的是宫年、太阳日、太阴月和太阴日四要素,而时轮历中的太阳年和太阳月在天文学上没有什么实际意义。
假想天体
时轮历中还有两个假想的天体,即罗睺、劫火(罗睺尾)。再加长尾彗星。它们也称为“曜”,共为“10曜”。五星的各个周期同现代科学测出的数据相同或近似。时轮历中视罗睺与其他天体一样,有自己的运行周期,不同的是只有数而无“象”,是个“隐曜”。它的运动周期为30个太阴月,合计6792.04太阳日,已相当精确(今测为6793.460日)。罗睺的方位以黄经表示,以周长27宿相减,所得结果在时轮历中称为“罗睺头”,与之相对的称“罗睺尾”,相当于天文学上的黄白升交点和降交点。时轮历中的长尾彗星就是九曜中的计都。
日、月食推算过程
推算过程是:先由积月除以罗睺的周期,商余化成日数,然后若推算日食加30日,推算月食加15日,再乘以罗睺每日运行的度数得到罗睺头数值(在此数值上以半周相加,则得到罗睺尾的数值);接着求出太阳、月亮的黄经,以太阳、凡亮的黄经与罗睺头、尾数值中最为接近者相减;最后以所得差数来判断有无日、月食。

⑷ 万年历 算法(得知 阳历 算出 农历)

// Yuna_2006_10_16
// A program of a celinder
#include <iostream>
using std::cin;
using std::cout;
using std::endl;

// the use of setw
#include <iomanip>
using std::setw;

#define BEGINYEAR 2000 // the year i use to begin
#define BEGINDAY 6 // 2000`s first day
const int aiMounth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // everymounth`s days

// the fuction i call
int GetBeginDay( int, int ); // Get the first day of the mounth
int GetDays( int, int ); // Get the number of the days in a mounth
void PrintTitle(); // print the title
void PrintDate( int, int ); // print the date
int GetDaysOfaYear( int ); // get the number of days of a year

// the main begin here
int main()
{
int iYear, iMounth, iBeginDayOfaWeek, iDays;

// prompt and get the paramters i need
cout << "Please Input The Year Of The Date:" << endl;
cin >> iYear;
cout << "Please Input The Mounth Of The Date:" << endl;
cin >> iMounth;

// if Input a wrong num
if( iYear <= 0 || iMounth <= 0 || iMounth > 12 )
{
cout << "Input Error!" << endl;
return 0;
}

// do what you want me to do
iBeginDayOfaWeek = GetBeginDay( iYear, iMounth );
iDays = GetDays( iYear, iMounth );
PrintTitle();
PrintDate( iBeginDayOfaWeek, iDays );

// the fuction end here
return 0;
}

int GetBeginDay( int iYear, int iMounth )
{
int iResult;
int iDifference = iYear - BEGINYEAR; // i want to know if input if larger than my begin year
long lSumOfDays = 0;

if( iDifference >= 0 ) // if input is larger than my begin year
{
for( int i = BEGINYEAR; i < iYear; i++ )
lSumOfDays += GetDaysOfaYear( i );
for( int k = 1; k < iMounth; k++ )
if( 2 == k && ( ( iYear % 4 == 0 && iYear % 100 != 0 ) || iYear % 400 == 0 ) )
lSumOfDays += 29;
else
lSumOfDays += aiMounth[k-1];
iResult = ( int )( ( lSumOfDays + 6 ) % 7 );
} // end the if part of if/else
else // if input is smaller than my begin year
{
for( int j = iYear + 1; j < BEGINYEAR; j++ )
lSumOfDays += GetDaysOfaYear( j );
for( int m = iMounth; m <= 12 ; m++ )
if( 2 == m && ( ( iYear % 4 == 0 && iYear % 100 != 0 ) || iYear % 400 == 0 ) )
lSumOfDays += 29;
else
lSumOfDays += aiMounth[m-1];
iResult = ( int )( ( lSumOfDays + 1 ) % 7 );

// change the code
switch( iResult )
{
case 1:
iResult = 6;
break;
case 2:
iResult = 5;
break;
case 3:
iResult = 4;
break;
case 4:
iResult = 3;
break;
case 5:
iResult = 2;
break;
case 6:
iResult = 1;
break;
default:
break;
} // end switch inside
} // end else part of if/else

return iResult;
}

int GetDays( int iYear, int iMounth )
{
if( 2 == iMounth && ( ( iYear % 4 == 0 && iYear % 100 != 0 ) || iYear % 400 == 0 ) )
return 29; // if the year is a leap year
return aiMounth[ iMounth - 1 ]; // normal year
}

void PrintTitle()
{
cout << setw(10) << "Sunday" << setw(10) << "Monday" << setw(10) << "Tuesday"
<< setw(10) << "Wednesday" << setw(10) << "Thursday"
<< setw(10) << "Friday" << setw(10) << "Saturday" << endl;
}

void PrintDate( int iBeginDayOfaWeek, int iDays )
{
// format the output
for( int i = 0; i < iBeginDayOfaWeek; i++ )
cout << " ";

// out put the date
for( int i = 1; i <= iDays; i++ )
{
if( ( 0 == ( i + iBeginDayOfaWeek - 1 ) % 7 ) && i != 1 )
cout << endl; // if the day is Sunday
cout << setw(10) << i;
}
cout << endl;
}

int GetDaysOfaYear( int iYear )
{
if( ( iYear % 4 == 0 && iYear % 100 != 0 ) || iYear % 400 == 0 )
return 366; // if the year is a leap year
return 365; // normal year
}

// 先输入年份,然后输入月份,就可以得到该年该月的的日历了。
// 该日历从公元1年开始计算到公元2147483647年(理论上可以算出,但是所
// 花时间太长)。
c语言写的万年历

⑸ 藏族天文历算的藏医和藏历

在西藏,藏医和藏历是紧密联系的。8世纪,藏医学家宇陀宁玛·元丹贡布的藏医学着作《四部医典》的部问世,使藏医学形成了较完整的理论系统。由于藏医认为随着季节的变化,人体五脏中的气和血液循环状况也有所不同,所以藏医十分重视观察星、云、风、湖水和鸟类的变化。
按藏族惯例,天文历算的业务设在藏医院。藏医院里荟萃着一批学者。每年的历书都是前一年由藏医院里的学者测算的。
藏历的正式使用,是在公元1027年开始的,并流行至今。本来,公元前一世纪藏族便有了自己的历算法,那就是以月亮的圆、缺、朔、望来计算月份的苯教历法,那时的新年初一,相当于现在的藏历十一月一日。有一本古老的历算书叫做《纺织老人月算》,详尽地总结了当时藏族人民丰富的生产经验和天文历算知识。后来,文成公主进藏,带来了许多经书典籍,其中天文历算的书籍对原始藏历的完善和发展,起了重要的作用。这时,新年日期的确定,已从月亮的亮度进步到以星辰为主要依据,即以鬼星的亮度、位置为标准。但是,新年还是现在藏历的十一月一日。后来,原始藏历吸收了汉地的历算技术,逐渐完善成为今天的藏历。
藏历规定一年为12个月,大月30天,小月29天。每一千日左右,便有一个闰月,用来调整月份和季节的关系。藏历采用时轮制的纪年法,把天体分为十二宫,即:白羊、双鱼、金牛、摩羯、双子、狮子、巨蟹、宝瓶、人马、室女、天蝎、天秤。用十二属相配五行纪年。以十二年为一小循环,六十年为一大循环,称为一“绕炯”(即一时轮)。第一“绕炯”是从公元1027年开始的。1987年是第十七个“绕炯”的第一年。1991年藏历称为金羊年。这与汉地农历的纪年法相似,属相也一致。
藏历不仅预报下一年度是否风调雨顺,是否有旱灾、雪灾或地震,而且连某日有雨,每一天的吉凶都一一标明。据说,那曲藏医院预报1986年间藏北的三次地震,大体时间和方位都准确。主要是根据天象预报的。天象,是一尊大佛形态。巨佛象征地球,巨佛姿势有象征意义,假如巨佛站着,就表示有地震、飓风和瘟疫等;巨佛坐着,人间就平安。

⑹ 儒略历的历法算法

《儒略历》以回归年为基本单位,是一部纯粹的阳历。它将全年分设为12个月,单数月是大月,长31日,双数月是小月,长为30日,只有2月平年是29日,闰年30日。每年设365日,每四年一闰,闰年366日,每年平均长度是365.25日。《儒略历》编制好后,儒略·恺撒的继承人奥古斯都又从2月减去一日加到8月上(8月的拉丁名即他的名字奥古斯都)使8月变成大月,又把9月、11月改为小月,10月、12月改为大月。
《儒略历》比回归年365.2422日长0.0078日,400年要多出3.12日。从公元325年定春分为3月21日提早到了3月11日。1500年后由于误差较大,被罗马教皇格里高利十三世于1582年进行改善与修订,变为格里历(Gregorian calendar),即沿用至今的世界通用的公历。

⑺ 农历历法规律

正如楼主所说:我国农历的确是一门古老而严密的科学。但不能说是统计学。这是一套建立在长期天文观测基础之上,经过严密推算而产生的独特历法。
在我国使用公历之前,是没有什么对应日期可言的,唯一的验证指标就是季节。如农历新年总是在冬末春初,故我国的新年又称春节。
你观察很细,闰月现象让你很感兴趣,并且产生了强烈的研究欲望,正好我也喜欢,就简单地交流几句吧。
一、我国的农历其实是阴历合历,因为它依据回归年周期安排年份,同时又按月相变化确定月份,更依据24节气调节年的长度(设置闰月)以保证月份与季节的大致对应关系。
二、我国天文学家把每年春节后第一次昼夜等长的那一天叫做“春分”,连续两次春分之间的时间叫做一年。长期观测表明,一年的时间为365.2422天(天文学上称为回归年)。又将太阳在星空中巡天一周的轨迹(黄道)分为24份,每份15度。以春分时太阳所在的位置称为“春分点”,每隔15度依据物象分别取了一个形象直观的名字,如清明、谷雨、冬至等,这就是24节气。
三、常言说“月有阴晴圆缺”,这里的圆缺就是指月相的周期性变化。月亮有时将整个亮面对着地球,我们就看到了一轮满月,有时则会是一个月牙,有时又完全看不到她。这样的变化周期称为朔望月,长期观测表明,一个朔望月的平均长度为29.5306天。
四、一般情况下,以12个朔望月为1年,长度为354.3672天,比一个回归年少10.875天。如果不加调整,每三年大约就要少一个月,不到18年就会相差半年,从而出现季节颠倒。因此,我国古代天文学家就使用了设置闰月的方法对这种可能出现的季节混乱加以调整,使农历日期与季节保持尽可能的对应关系。
五、设置闰月就是在必要时在某一个农历年中多加一个月,此法称为“置闰”,多出来的这个月叫做“闰月”,含有闰月的年份也称为“闰年”。
六、值得称道的是,为了最大限度地保证月份与季节的对应关系,我国农历不是等农历年份与回归年的差别攒够了一个月的时间才置闰,而是按照24节气的交节日期逐月推算,适时安排闰月(以保证冬至永远只出现在农历十一月),从而提高了历法的科学性。
七、闰月的出现没有简单的规律可循。这是因为由于地轴的进动,使得春分点逐年西移,而地球的轨道是椭圆而非正圆,这就造成了以春分点为参考的回归年每年的长度都不相同。同时,由于24节气交节时刻是地球在公转轨道上的位置(而不是地月质心位置)确定的,这就使得两个节气之间的时长也显得杂乱无章。这就使得“19年7闰”等所谓的置闰规律只是一个大概,而非真正的规律。
八、闰月只能依据日、地、月三者的位置关系逐月推算才能安排,而没有简单的规律可循。要设计出能够计算闰月的程序,至少要扎实掌握以下几方面的知识:物理、天文、高等数学、地理、历史等。当然,计算机技术也应当相当熟练。
先说这些吧,祝你成功!

⑻ 天文历算到底怎么个算法

隋唐时期在天文历法方面,取得了显着的成就。隋代着名的天文学家刘焯编制的《皇极历》,运用等间距二次内插法计算日月的运行,岁差的准确值高于欧洲;他还提出了测量子午线长度的设想,否定了 影千里差一寸 的传统说法。唐王希明编辑而成的七字长歌《步天歌》广为流传,极大地促进了天文知识的普及。唐代徐昂的《宣明历》,测得黄道和赤道交角为23°u65299X5′,与现代理论数值仅差0。5′左右。开元时期僧一行制订了《大衍历》,为后代历法家编历提供了固定的模式。一行还是实际测量子午线的创始人,并测得子午线每一度长为351。27唐里。
相关知识链接:
公元581年至960年,这380年是中国封建制度继续发展并达到繁荣昌盛的隋唐五代时期,亦即中国封建社会的第二个鼎盛期。隋唐社会宏大的格局、开放的气势、壮阔的场面,为历朝历代所无法比拟。在当时的世界上,中国处在发展的前列,是最文明先进、最繁荣发达、最富庶强大的国家。
首先,社会制度先进。公元5世纪至11世纪,是世界中世纪的早期,大致相当于中国的南北朝隋唐五代时期。这时,西欧直至北非、中亚、东亚,都刚刚进入封建社会,比起中国落后了一个社会发展阶段。
其次,生产发展水平高。封建社会的主要经济生产部门衣业,在隋唐时期有了较大的发展。农业生产工具锄、铲、镰、犁都有大的改进。水利设施得到修复和新的开凿,而更为广泛和完善。
第三,长期统一。自开皇九年(589年),隋重新统一以后,隋唐时期的中国是当时世界上唯一长期保持统一的大国。分裂割据只占短暂的时间。中国是当时世界上最强、最大的国家。
第四,文化繁荣发达。隋唐时期,采取开放政策,不仅大量吸收外域的有用文化,而且将中国繁荣发达的传统文化传播到世界各地。中国传统的儒学文化得到了整理,道教文化在政府扶植下有了发展,从印度传入的佛教,受到中国传统文化礼俗的巨大影响而中国化了。在隋唐时期佛教发展达到兴盛的顶峰,佛学水平超过了印度,并使中国取代了印度成为世界佛教的中心。文化政策相对开明,文禁较少,又使这时的科学技术、天文历算进步突出,文学艺术百花齐放、绚丽多彩,诗、词、散文、传奇小说、变文、音乐、舞蹈、书法、绘画、雕塑,都有巨大成就,并影响着后世与世界各国。
第五,世界经济文化交流的中心。文明先进而富庶强大的中国是当时世界,特别是亚洲各国经济文化交流的中心。隋唐时期的中国与世界的联系进一步加强,长安成为当时的国际大都会,在长安有各国使臣、商人,有胡人所开的店铺。汉唐都有中西交流的丝绸之路,而汉代中外直接交往还只限于中亚、印度,最远的是班超副使甘英到达波斯湾。

⑼ 中国历法的计算要点

为了推算每年的历谱,首先要定一个计算起点,叫做历元。中国古代历法大多数取下列这样的理想时刻为历元:某年十一月甲子日的夜半,它正好是朔和冬至,而且又是月过近地点(即月行速度最快的点)的时刻,等等。由于各种历法的数据不同,所以它们推得的理想时刻也各不相同。不过这样的理想时刻通常离开历法行用的年份都十分遥远。这种历元称为上元(见上元积年)。
设a为一回归年时间,b为一朔望月时间,c为一近点月时间,单位均为“天”。又设y为从上元起到所求年的累计年数。则ay就是从上元起到所求年的冬至的全部时间。因为干支纪日以60天为一周,所以用60去除ay,所得余数r1,就是所求年的冬至时刻到前面一个甲子的夜半的全部时间。这个时间的天数部分叫做大余,不足一天的零数部分叫小余。通常历法都规定,大余“命甲子算外”,即以甲子日为0,乙丑日为1,等等。因此,根据大余的数字,就可以知道所求年冬至日的干支日名。有的历法“命甲子算上”,则应以甲子日为1,乙丑日为2,等等。还有少数历法,如北宋的《纪元历》,不选甲子日,而选己巳日为上元,命己巳算外,则大余就以己巳为0算起,庚午为1,等等。小余就是从夜半起算到发生冬至这瞬间的时间,可以把它按十二时辰制或百刻制等时刻制度(见漏刻),化成时刻。从r1累加一气的时间a/24,就得冬至以后各气的干支日数及时刻。
上述r1的算法,数学上习惯用一个算式来表达:ay≡r1(mod60)。这种算式叫一次同余式。仿此,可以列出其他的一次同余式:ay≡r2(modb),ay≡r3(modc)。r2就是所求年冬至离开十一月平朔的时间间隔。r3则是所求年冬至离月亮上一次过近地点的时间间隔。r1- r2就是十一月平朔离上个甲子日夜半的时间。也和冬至的情况一样,它的整数部分代表甲子日以来的干支日数,零数部分则是从夜半算起到发生平朔的时间。
设这个时间为t0一般历法都给出一份太阳运动表,一份月亮运动表。从太阳运动表,根据所求的十一月平朔在二十四气中的位置(或者,十一月平朔在大雪气后,相距时间为 ;或者,如若,即十一月平朔在大雪气前,在小雪气后,这时,离小雪的时间为),使用内插法可以推算因太阳运动不均匀而引起的定朔改正数Δts;从月亮运动表,根据所求的十一月平朔在一个近点月周期中的位置(即r3),也是用内插法,可以推算因月亮运动不均匀而引起的定朔改正数Δtm。于是,十一月定朔t=t+Δts+Δtm。t>1,定朔在平朔的次一日;t<0,定朔在平朔的前一日;0清代以后采用第谷体系和开普勒椭圆面积定律。定朔的计算也就改用欧洲的几何学方法。
十二个朔望月为一个民用历年。它和一个回归年有一个差数r,r=α-12b,约为10~11天。不上三年,差数积累就超过了一个月,这时就要在这个历年内增加一个闰月,以免和回归年脱节。汉《太初历》以来规定了无中气之月为闰月的规则,这也等于规定了每个中气都要在固定的月份里,如冬至在十一月,大寒在十二月,雨水在一月,等等。在不同的历法里,月的名称可以不同(见三正),但一定的中气必须在一定的月份里,这条原则在《太初历》以后的各种历法都是一样的。这就使阴历成分和阳历成分结合得更加紧密。一般来说,如r2>(b-r),则规定这年有闰。r/12,则是两个气的时间比一个朔望月长的差数。将这个数累加到r2上,一当这个累加的和数大于b的时候,就是中气超过月份的时候,这时,就把被超过的月份定为闰月。
中国古代有的历法不用前述特殊时刻的上元,而用近距取元,即取某个已知r1、r2、r3值(设为a1、a2、a3)的年的冬至时刻为历元。例如《授时历》就是以历法制定的那年的冬至时刻为历元。它把a1称为气应,a2称为闰应,a3称为转应。这时,一次同余式组改为:
ay+a1≡r1(mod60),
ay+a2≡r2(modb),
ay+a3≡r3(modc)。
以上是就世界各国历法最基本的内容,即按照推算民用历谱,安排历日的问题来说的。但是中国古代历法还有更丰富更广泛的内容。它包括日、月、五星的运动和位置的计算;昏、旦中星和时刻的测定;日、月食的预报等等。就某种程度来说,中国古代的历法就是一种编算天文年历的工作。它包括中国古代天文学的许多重要内容。它的发展是中国天文学史的一条主线。

阅读全文

与独特的历算法相关的资料

热点内容
一级抗震楼层框架梁加密区 浏览:208
pdf开发库 浏览:281
chunking算法 浏览:622
程序员被逮捕的判决 浏览:813
android定位获取城市 浏览:599
做服务器客户怎么去找 浏览:997
程序员升职可以干什么 浏览:301
单片机原理课程设计大纲 浏览:909
cad命令大全图表下载 浏览:389
程序员去印度工作 浏览:422
苹果app活动怎么导出 浏览:5
pdf转高清图片 浏览:35
人人玩棋牌源码 浏览:347
如何获取美团服务器时间 浏览:342
php简单加密算法 浏览:795
什么是开服务器 浏览:607
cd4017单片机怎么用 浏览:265
鸟哥pdf 浏览:242
忘记加密的密码了怎么办 浏览:560
好友信息提示音在哪个文件夹 浏览:276