Второй пример: вычисление даты пасхи



8.8.2 Второй пример: вычисление даты пасхи

Никейский собор в 325 г. установил, что пасху следует праздновать в первое воскресенье после первого весеннего полнолуния. На этом основан метод Гаусса для определения даты пасхального воскресенья. Согласно нему, если задан год jahr (например, 1994), то дату пасхального воскресенья, можно вычислить с помощью следующих операций:

k = целый результат деления jahr/100

р = целый результат деления k/3

q = целый результат деления k/4

m = 15 + k — p — q

ml = остаток от деления т/30

n = 4 + k - q

nl = остаток от деления п/7

а = остаток от деления jahr/19

Ь = остаток от деления jahr/4

с = остаток от деления jahr/7

d = 19 * а + ml

dl = остаток от деления d/30

e = 2*b + 4*c + 6*dl + nl

el = остаток от деления е/7


х = 22 + dl + el

Для определения х существует два исключения

  • Если x=57, то х принимается равным 50

  • Если d1=28 и el=6, а остаток деления в выражении (11*m+11)/30 меньше 19, то х принимается равным 49

Пасхальное воскресенье выпадает на х-ое марта или, если х больше 31, — на х— 31-ое апреля. Этот алгоритм дает превосходный пример для знакомства с арифметическими функциями TRUNC и MOD (см. раздел 7.1.3). Кроме того, можно еще раз потренироваться в использовании оператора IF (раздел 8.4).

Сначала в редакторе данных следует создать файл данных, содержащий единственную переменную jahr. Затем в строках редактора необходимо ввести годы, для которых вы желаете вычислить дату пасхи. Можно также загрузить файл примеров ostern.sav, содержащий годы с 1995 по 2030.

Затем откройте редактор синтаксиса и введите следующую программу. Команды COMPUTE вплоть до вычисления х можно также ввести в соответствующем диалоговом окне (см. раздел 8.1). Команды, приведенные ниже, вводятся в редакторе синтаксиса. Для того, чтобы избежать ручного ввода этой программы, можно просто загрузить в редактор синтаксиса файл ostern.sps.

COMPUTE k=TRUNC(jahr/100) .

COMPUTE p=TRUNC(k/3) .

COMPUTE q=TRUNC(k/4) .

COMPUTE m=15+k-p-q .

COMPUTE ml=MOD(m,30) .

COMPUTE n=4+k-g .

COMPUTE nl=MOD(n,7) .

COMPUTE a=MOD(jahr,19) .

COMPUTE b=MOD(jahr,4) .

COMPUTE c=MOD(jahr,7)

COMPUTE d=19*a+ml .

COMPUTE dl=MOD(d,30) .

COMPUTE e=2*b+4*c+6*dl+nl .

COMPUTE el=MOD(e,7) .

COMPUTE x=22+dl+el .

IF x=57 x=50 .

IF dl=28 AND el=6

AND MOD (ll*m+ll,30)<19 x=49 .

COMPUTE tag=x .

COMPUTE monat=3 .

IF (x > 31) tag=x-31 .

IF (x > 31) monat=4 .

COMPUTE odatum=DATE.MDY(raonat,tag,jahr) .

FORMATS odatum(DATEll) .

LIST odatum .

Переменные tag и monat определяют дату пасхального воскресенья заданного года (переменной jahr). На их основе функция DATE.MDY вычисляет значение времени во внутреннем формате SPSS (число секунд после введения григорианского календаря). Затем это значение записывается в переменную odatum, которая преобразуется в формат даты DATE11.

После ввода программы или открытия файла в редакторе синтексиса с помощью меню Edit (Правка) выделите все строки и запустите программу. С помощью команды LIST в окне просмотра буде сформирована следующая таблица, фрагмент которой с 1995 до 2002 года, приводится ниже:

ODATUM

16-APR-1995

07-APR-1996

30-MAR-1997

12-APR-1998

04-APR-1999

23-APR-2000

15-APR-2001

31-MAR-2002

Обладая некоторой фантазией и знанием командного синтаксиса SPSS, можно решать задачи, не связанные непосредственно со статистическими вычислениями.






Содержание раздела