Journal influence
Bookmark
Next issue
Abstract:
Аннотация:
Author: () - | |
Ключевое слово: |
|
Page views: 21642 |
Print version |
В практике вычислительных работ встречаются задачи, связанные с определением количества дней, разделяющих две календарные даты. Эти задачи возникают при датировке исторических событий, астрономических расчетах, составлении сетевых графиков и планировании длительных технологических процессов (например выращивания биологических культур). С древних времен в европейских странах применялся преимущественно солнечный юлианский календарь (старый стиль). Он позволил привязать сроки выполнения сельскохозяйственных работ к определенным датам и. соответственно, к сезонным изменениям погоды. Смена сезонов, в свою очередь, зависит от положения Земли на околосолнечной орбите. В юлианском календаре после трех лет по 365 суток следует високосный год в 366 суток. Небольшая неточность этого календаря приводит к тому, что за 400 лет он отстает примерно на 3 суток. В 325 г. н. э., когда на Никейском соборе была установлена дата празднования Пасхи, день весеннего равноденствия приходился на 21-е марта. К XVI веку в календаре накопилось отставание на 10 суток, что вносило путаницу в определение дат христианских праздников. Поэтому в 1582-м г. по проекту итальянского математика и врача Луллкя буллой папы Григория XIII был введен исправленный календарь (новый стиль — григорианский). Постановили не считать в дальнейшем високосными те года столетий, у которых число сотен не делится без остатка на 4 (1700, 1800, 1900. 2100 и т. д.). Кроме того, для устранения имеющегося отставания после 4-го октября 1582-го года решили считать не 5-е, а 15-е октября. Таким образом, даты с 5.10.1582 г. по 14.10.1582 г. оказались несуществующими. Как видно, вычислить интервал между двумя произвольными датами, разделенными столетиями, довольно сложно из-за неодинаковой продолжительности месяцев и лет, а также изменений календаря. Для облегчения вычислений введена система юлианских дат —сплошного счета без подразделения на месяцы и годы. Юлианская дата JD представляет собой число суток, прошедших от 1-го января 4713-го г. до н. э., до полудня по гринвичскому времени текущей даты. Например, календарной дате 1-го января 1900-го года соответствует юлианская JD = 2415021. а 1.01.1988 г. —JD = 2447162. Число суток d, прошедших между двумя календарными датами D1 и D2, вычисляется просто как разность их юлианских дат. d = Ю(О7) - JD(D,). Соответствие между юлианскими и календарными датами задается специальными таблицами, приведенными, например в Астрономическом ежегоднике СССР. С помощью микрокалькулятора (МК) все указанные вычисления могут быть осуществлены по фор чулам без использования таблиц. Далее приводятся программы вычислений, составленные для МК типа БЗ-34, и для ЭВМ типа «Искра-226» на языке БЕЙСИК. Программы для микрокалькулятора Для работы программы записать в регистры памяти: РО = 5,555555510 - 1; Р1 = К; Р2 = 30.6; РЗ = 365,25 В зависимости or величины константы К программа позволяет осуществлять расчеты: К = 1720995 —для дат, заданных по старому стилю; К = 1720982 — для дат, заданных по новому стилю в диапазоне от 1.03.1900 г. до 28.02.2100 г. Порядок работы. Для заданного голи Г, месяца М. даты Д ввести Г| М' Д, нажать С/П. После !авер-шеиия счета на индикаторе высвечивается значение юлианской даты. Для работы программы записать в регистры памяти: РО = 5,5555555,,, - I; PI = N; Р2 = 40000; РЗ = 80; Р4 = 4708; Р5 = №10001; Р6 = 1461; Р7 = 2447 В зависимости от величины N программа позволяет производить расчеты: N = 1520 — для календарных дат старого стиля; V = 1507 — для календарных лат нового стиля в диапазоне от JD = 2415080 (1.03.1900 г.) до JD = 248812Н (28.02.2100 г.). Порядок работы. Внести юлианскую дату, нажать С/П. После останова прочесть календарную дату. нажать С/П, прочесть номер месяца, нажать С/П, прочесть номер года. Для работы программы записать в регистры памяти: ГО = 5,5553555,,, " l< pl = 32075> п = 1461- рз = 4Щ): Р4 = т- р5 = 367; pf) = п-Программа позволяет производить расчеты для дат, начиная с 15.10.1982 г. Порядок работы. Для заданного года Г. месяца М, даты Д ввести Г! М1Д, нажать С/П. После завср-пения счета на индикаторе высвечивается значение юлианской даты. Для работы программы записать в регистры памяти: PU = 5.5555555.. - 1;Р1.= 68569; Р2 = 146097; РЗ = 80; Р4 = 100;Р5 = 2922002; Р6 = Н61;Р7 = 2447; Р8 = 49. Программа позволяет производить расчеты для юлианских дат, начиная с JD = 2299161 (15.10. 1582 г.]. Порядок работы, ввести юлианскую дату, нажать С/П. После останова прочесть год; в регистрах PC и PD находятся значения соответственно месяца и даты. Для расчета с несколькими значениями юлианской латы перед каждым новым расчетом нажать В/С; в программах ГТ1, П2. ПЗ нажимать В/О перед новым расчетом не требуется. Константа, засылаемая в PC, вычисляется как 5.5555555|0 - I = 1/1,8. Программы на языке БЕЙСИК Программы на языке БЕЙСИК, диалогичны одноименным программам для МК. В этих программах обозначено: J0 — юлианская дата; 0в%. Мв%, Dfl% — год, месяц, календарная дата; N. К — константы, [клволяющие в программах П1 и 112 произнодить расчеты как по новому, так и по старому стилю. С помощью данных программ можно решить задачи, связанные с календарными расчетами. 1. Вычисление количества дней от одной календарной даты до другой Определить is днях продолжительность Великой Отечественной войны. С помощью программ Ш или П1 (в варианте нового стиля) вычисляются юлианские даты: D, = 21.06.1941 г. JDj = 2430I67; D: = 9.05.1945 г. ГО, = 2431585. Результат: d = Ю; - JD, = 1418 дней. 2. Вычисление биты, отстоящей от данной на d дней Комета Галлея находилась н ближайшей к Солнцу точке орбиты (перигелии] 19 мая 1910 г. и — 10 феврали I486 г. Определить дату следующего прихода кометы в перигелий. С помощью программы Ш (или ГП) вычисляются юлианские даты: D, = I9.05J910 г JD, =2418811; П>, = 10.02.1986 г. JD, = 2446472; период обращения d = JD2 - JD, = 27661 сутки: юлианская дата следующего прихода в перигелий JD, = 2474133. С помощью программы П4 (или 112) вычисляется календарная дата нового прихода кометы: D, = 4.11.2061 г. Следует отметить, что из-ча наличия ночмущений периода обращения полученная оценка является ориентировочной. 3. Определение дня небели на заданную дату Номер Р дня недели (воскресенье — нулевой, понедельник — первый) вычисляется по формуле; Р = JD + 1 - 7*F-[(JD + 1У7|. где Е(х) — целая часть числа \. Вычисляя юлианские даты, можно определить их дни недели: 1.01.1000 г. JD = 2086308; Р = 1 (понедельник), 31.12.1899 г. JD = 241502(1; Р = 0 (воскресенье). 1.01.1900 г. JD = 2415021; Р = 1 (понедельник), 7.10.1987 г. JD = 244707ft- р"= 3 (среда): 1.01.1988г. JD = 2447162; Р = 5 (пятница), 1.01.2000г. JD = 2451545: Р = б(суббота). |
Permanent link: http://swsys.ru/index.php?id=1485&lang=en&page=article |
Print version |
The article was published in issue no. № 3, 1988 |
Perhaps, you might be interested in the following articles of similar topics:
- Правовая охрана программного обеспечения с точки зрения международного сотрудничества стран-членов СЭВ
- Подход к выбору оптимального маршрута при перевозке крупногабаритных грузов на основе нейросетевых технологий
- Автоматизированная информационная система маркетолога
- Программная система поддержки принятия проектных решений
- Построение тестов для базовых функций встраиваемых операционных систем
Back to the list of articles