罗兰在MATLAB的艺术

把想法变成MATLAB

请注意

罗兰在MATLAB的艺术已经存档,不会被更新。

日历和闰年

我很高兴介绍Ned溪沟本周的嘉宾。内德是一个软件开发人员,一个业余天文学的兴趣。他是出于最近讨论数值精度的空间放在一起这张日历的精度。

内容

如果你积累足够的小错误可以变成大问题。例如:一年有多长?更具体地说,如果你忽视了每四年闰日,需要多长时间注意到有什么不对劲的地方吗?

我们测量时间根据三种不同的运动的身体在太阳系:太阳,月亮,地球。地球的旋转绕自己的轴相对于太阳是我们的基础,地球绕太阳旋转的定义,和月球的自转地球相对于太阳定义了月(至少最初那样)。这些运动本质上是不相关的,但我们试图都融入一个日历。

历史上我们已经定义了天从中午到中午的时间。这是相对容易衡量。今年我们可以衡量这一样:的时间,说,冬至夏至。但我们不这样做。相反,我们试着计算通过计算的天数。这将导致各种各样的问题。

我们希望一年的天数是一个整数,但它不是,没有理由期望。就好像你随机选择两个数字并期望一个清晰地划分。几个世纪以来,我们已经成功地“修理”的日历天与飞跃天所以它适合一个太阳年。农历的日历都是更大的混乱,需要很大的努力与太阳保持正轨。希伯来历法是月球,它周期性地插入额外的几个月来弥补缺口。伊斯兰日历也是月球,但它不会尝试与太阳保持同步。因此斋月节,例如,移动缓慢通过季节一年又一年过去了,有时发生在夏天,有时在冬天。

埃及的日历

一年有多少天呢?不是365,但是它关闭。区别有关系吗?让我们调查。季节性的一年的长度是365.24219878天(或多或少)。考虑一个原始的日历没有闰年是365天的准确时间。这样一个日历实际上是由古埃及人使用。

seasYearLen = 365.24219878;seasYearRem = seasYearLen - 365;n = 0:1:2000;%埃及日历每年落后的余数egyptDev = n * seasYearRem;情节(n, egyptDev)包含(“年”)ylabel (“天积累误差”)标题(日历和季节之间的偏差的)线([0 n(结束)],-seasYearLen * [1],“颜色”,“红色”)交叉= seasYearLen / seasYearRem;线(-seasYearLen交叉,“标记”,“o”,“颜色”,“红色”)注释(gcf“textarrow”(0.7036 - 0.7161),(0.549 - 0.3595),“TextEdgeColor”,“没有”,“字符串”,{“积累误差”,“等于一年!”});

没有闰年调整,每四年的日历年落后的季节一天。754年后,四季将是180度的阶段与日历。秋天的第一天在北半球将3月21日,而不是9月21日。1508年后,日历会在季节和将再次与太阳同步。

朱利安日历

clf n = 0:10000;egyptDev = n * seasYearRem;egyptHandle =情节(n, egyptDev);包含(“年”)ylabel (“天积累误差”轴([0 200 5 5])julDev = egyptDev +地板(n / 4);julHandle =线(n, julDev,“颜色”,“红色”);线([0长度(n)南0 (n)),(1 1南1 1),“线型”,“:”,“颜色”,0.4 *(1 1 1))传说([egyptHandle julHandle),{“埃及”,“朱利安。”},“位置”,“东北”)

添加一个闰年天每四年帮助,但是仍可以看到有一些明显的漂移。200年后我们已经一天不同步,但在另一个方向。我们已经取得了年度超过它应该。

公历

命名的公历日历改革者教皇格里高利十三世,解决了这个问题,留下了三个朱利安leap-days每400年。从算法上,如果今年能被100整除,避免今年闰日,除非能被400整除。

gregintDev = julDev -地板(n / 100);gregDev = gregintDev +地板(n / 400);%线(n, gregintDev,“颜色”,“红色”)gregHandle =线(n, gregDev,“颜色”,“绿色”);轴([0 600 -20 20])传说([egyptHandle julHandle gregHandle),{“埃及”,“朱利安。”,“公历”},“位置”,“东北”)

放大后,你可以看到600年左右我们飘了一天。

轴([0 600 5 5])

现代的日历

现代的日历上最后一个调整:如果能被4000整除,离开了闰日尽管上面的格雷戈里推荐。

modernDev = gregDev -地板(n / 4000);modernHandle =线(n, modernDev,“颜色”,“黑”);轴([0 10000 -20 20])传说([egyptHandle julHandle gregHandle modernHandle),{“埃及”,“朱利安。”,“公历”,“现代”},“位置”,“东北”)

占变异除此之外,我们插入闰秒,所以我们应该在良好的形状很长一段时间。




使用MATLAB®7.3发表

|
  • 打印
  • 发送电子邮件