Вернуться   Астрологические форумы ARGO > Изучаем астрологию > Астрономия для астрологов

Ответ
 
Опции темы Опции просмотра
Старый 16.06.2009, 23:03   #1
LordWilex
В отпуске
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Адрес: Таганрог
Сообщения: 28,983
LordWilex репутация выше +250LordWilex репутация выше +250LordWilex репутация выше +250LordWilex репутация выше +250
По умолчанию Лунный день по Харви и Джотишу (не совсем тренинг,но, кто хочет может потренероватьс)

Не совсем тренинг,но, кто хочет может потренероваться

Вычисление Лунных суток в том виде, как это понимается в западной астрологии дело довольно трудоемкое, требует довольно много строк кода, и "съедает" много машинного времени, особенно в случаях, когда вам нужно вычислить сразу 1000 дат.
Исходя из определения:
Лунные сутки это период времени между 2 восходами Луны, а лунный меяц отсчитывается с новолуния.
Необходимо:
1. Иметь алгоритм рассчета долготы Солннца
2. Алгоритм для расчета долготы Луны
(а достаточно точный алгоритм, расчета Солнца и Луны, - это как минимум, пара десятков страниц, состоящих из непонятных и страшных формул ).
3. Алгоритм (разумеетмся, итерационный) расчета момента новолуния.
4. Алгоритм работы с Асц.
5. И наконец, методом перебора, "прочесываем" все моменты восхода Луны, от начала лунного месяца до искомого момента, считаем эти восходы и навыхеде имеем вожделенный номер Лунного дня.

В общем, задача такая, что "Мама роди меня обратно!".

К счатью, не все так печально, иногда лунный день достаточно знать с некоторой погрешностью.

Тут у нас 2 варианта:
Посчитать Лунный день по Джотишу, либо воспользоваться формулой Харви.
К сожалению, обе формулы дают результат с точностью примерно 90%, но если вас съели - вас только 2 выхода.

С Джотишем все просто. Если в условиях, в которых вам пришлось работать без любимого компутера с установленным ZET'ом и срочно потребовался лунный день, - у вас есть доступ к бумажным эфмеридам Солнца/Луны или вы каким-то чудом узнали их координаты на нужную дату, то поступаем так:

1. Вычитаем долготу Солнца из Долготы Луны (кстати, если результат меньше 180, то речь идет о растущей Луне, если больше то Луна убывающая)
2. Делим то, что у нас получилось на 12
3. Прибавляем к результату 1.
4. Отбрасываем дробную часть.
5. Радуемся.

т.е. на компутерном языке формула выглядит так:

MoonDay = int((MO-SU)/12+1)


где int() - операция отбрасывания дробной части, если кто не знает.

Если вы работаете в западной астрологии, эта фармула даст вам приближенный результат (т.е. можно быть на 90% уверенным, что это именно тот лунный день), а если вы занимаетесь индийской астрологией, то беспокоится вам не о чем, формула очень точна, но джотиши её и так прекрасно знают :)

Если эфемерид Солнца и Луны под рукой нет, то мы можем воспользоваться формулой Харви,которую я недавно отрыл в интернете и она мне буквально спасла жизнь, для её применения дстаточно знать дату, но саму формулу нужно знать на изусть (для освоения мне хватило 30 минут практики, алгоритм не так сложен, как может показаться на первый взгляд).


harvi.gif

Поясню.

Допустим, вам необходимо узнать, когда какой был лунный день 10 августа 1980 года (моя, кстати днюха).


1. Если речь идет об январе или об феврале месяце, то к номеру месяца прибавляем еще 12 (смотрите не забудьте!) , но поскольку в данном случае речь идет об августе, то номер месяца не трогаем.

2. Вычислим первый промежуточный парраметр eq. Делим номер года на 100 и округляем результат до ближайшего целого.

eq = ОКРУГЛИТЬВНИЗ(1980/100)
= 19

3. Найдем второй промежуточный парраметр cent

cent = ОКРУГЛИТЬВНИЗ(eq/3) + ОКРУГЛИТЬВНИЗ(eq/4) + 6 - eq

= - 3

4. Найдем еще один промежуточный парраметр А :))

A = ( ДРОБНАЯ((ГОД/19)*209) + МЕСЯЦ + ДЕНЬ + cent) /30


= 67.96

5. Наконец найдем Лунный день

Лунный день ДРОБНАЯ(A)*30+1
и округляем это дело до ближайшего целого

Округлить(29.998) = 30 лунный день

Пояснения:

ОКРУГЛИТЬВНИЗ()/floor - операция округления вниз (не перепутайне с простым округлением).

Округлить()/Round() - Обычное округление до ближайшего целого.

ДРОБНАЯ() - Отбрасываем целую часть числа и оставляем дробную, на пример: дробная(2,5) = 0,5


на языке Си, тот же самый алгоритм будет выглядеть примерно так:

Цитата:
day=10;
month=8;
year=1980;
If(month<=2) month+=12;
MoonDay=floor((round((year/19-floor(year/19))*209)+Month-3+day)/30)*30-1;


А теперь попробуйте вычислить , какие Лунные сутки были в день Вашего рождения.

Последний раз редактировалось LordWilex, 16.06.2009 в 23:15.
LordWilex вне форума   Ответить с цитированием
Старый 16.06.2009, 23:35   #2
Vladimir
Админ
 
Аватар для Vladimir
 
Регистрация: 01.06.2007
Адрес: Москва, Россия
Сообщения: 58,294
Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000
По умолчанию

Vladimir вне форума   Ответить с цитированием
Старый 16.06.2009, 23:38   #3
Бастет
Собеседник
 
Аватар для Бастет
 
Регистрация: 25.01.2009
Сообщения: 31,850
Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650
По умолчанию

ЗдОрово) постараюсь поучаствовать))
6окт 1984.
19, -3.
Если не запуталась в вычислениях-7й лунный день. Зафтра пересчитаю и проверю :(
Бастет вне форума   Ответить с цитированием
Старый 17.06.2009, 13:04   #4
Бастет
Собеседник
 
Аватар для Бастет
 
Регистрация: 25.01.2009
Сообщения: 31,850
Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650
Question

LordWilex проверь плиз:
а то что-то запуталась, у меня получилось так:
((1984/19)-104)*209=(104,42-104)*209=0,42*209=87,78 значит 0,78
(0,78+10+6-3)/30=13,78/30=0,459(3)
0,46*30=13,78+1=14,78, значит 14 день
на москву выходит, что 6 октября того года был 13 лунный день, может тут еще надо учитывать часовые пояса?

Последний раз редактировалось Бастет, 17.06.2009 в 13:07.
Бастет вне форума   Ответить с цитированием
Старый 17.06.2009, 17:03   #5
LordWilex
В отпуске
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Адрес: Таганрог
Сообщения: 28,983
LordWilex репутация выше +250LordWilex репутация выше +250LordWilex репутация выше +250LordWilex репутация выше +250
По умолчанию

Цитата:
Сообщение от Бастет
проверь плиз
Я сам ни чего не понял, у меня вообще получился 12 день, причем в маткаде и в калькуляторе промежуточные итоги были разные, дак что это ты проверь плиз, ты же математик!! :))

eq=floor(1984/100)
19

cent=floor(eq/3) + floor(eq/4)+6-eq
-3

1984/19
104.42105263157894

A=(1984/19) - floor(1984/19)
0.4210526315789451

A=A*209
87.99999999999953

A=(A+10+6+cent)/30
3.366666666666651

MoonDay=(A-floor(A))*30+1
11.999999999999534

round(MoonDay)
= 12 лунный день

Бастет.gif


Ну и 12 и 14 день по моему близко к истине.... просто этот алгоритм заведомо дает погрешность 10%... но скорей всего там явно или у тебя или у меня где-то косяк с округлением... я сам долго разбирался где вверх округлять, где вниз, потому что в первоисточнике формула была описанна словами


Прилагаю файл с вычислениями в формате маткад, и на всякий, пожарный калькулятор, в котором я считал Бастет.zip

P.S. Пояса не нужно усчитывать, потому что формула сама по себе приближенная, хотя если по хорошему, то в точном алгоритме без этого не обойтись, верней не обойтись без алгоритма расчета восхода Луны на географической долготе.

P.P.S.
Цитата:
0,46*30=13,78+1=14,78, значит 14 день
Вообще-то не 14, а 15 получился, округлять-то до ближайшего целого в конце нужно...

Последний раз редактировалось LordWilex, 17.06.2009 в 17:13.
LordWilex вне форума   Ответить с цитированием
Старый 17.06.2009, 17:26   #6
Бастет
Собеседник
 
Аватар для Бастет
 
Регистрация: 25.01.2009
Сообщения: 31,850
Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650
По умолчанию

Приду домой сейчас и пересчитаю)
я думала,что округлять надо не вверх, а наоборот:(
Бастет вне форума   Ответить с цитированием
Старый 17.06.2009, 17:28   #7
Бастет
Собеседник
 
Аватар для Бастет
 
Регистрация: 25.01.2009
Сообщения: 31,850
Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650
По умолчанию

А..я фло с эраундом спутала)
Бастет вне форума   Ответить с цитированием
Старый 17.06.2009, 18:07   #8
LordWilex
В отпуске
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Адрес: Таганрог
Сообщения: 28,983
LordWilex репутация выше +250LordWilex репутация выше +250LordWilex репутация выше +250LordWilex репутация выше +250
По умолчанию

Цитата:
Сообщение от Я
1. Если речь идет об январе или об феврале месяце, то к номеру месяца прибавляем еще 12 (смотрите не забудьте!) , но поскольку в данном случае речь идет об августе, то номер месяца не трогаем.
Люди я дико извиняюсь за дизинформацию. Нашел ошибку, нечайно старую картинку воложил в первом посте.

Если месяц январь или февраль, то нужно не только прибавлять к номеру месяца 12, но и от номера года отнимать 1.

Вот так:

Бастет.gif
LordWilex вне форума   Ответить с цитированием
Старый 18.06.2009, 12:15   #9
Бастет
Собеседник
 
Аватар для Бастет
 
Регистрация: 25.01.2009
Сообщения: 31,850
Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650Бастет репутация выше +650
По умолчанию

Цитата:
Сообщение от LordWilex
но скорей всего там явно или у тебя или у меня где-то косяк с округлением...
у меня косяк
п.с.займусь чуть позже проверкой на своих родных, сейчас рада тому что есть норм инет и надо будет возместить упущенные деньки
Бастет вне форума   Ответить с цитированием
Старый 21.09.2012, 13:02   #10
DamirM
Собеседник
 
Регистрация: 26.05.2012
Сообщения: 1
DamirM отключил(а) отображение уровня репутации
По умолчанию

Поскольку воспользовался Вашей информацией, то публикую правильный код на Си

Цитата:
int MoonHarvi(int day, int month, int year) {
int monthH, yearH;
double moonday,eq,eq1,eq2;
monthH=month;
yearH=year;
if (month <= 2) {
monthH = month + 12;
yearH = year - 1;
}
eq=floor(yearH/100);
eq1=floor(eq/3)+floor(eq/4)+6-eq;
eq2=(round((yearH/eq -floor(yearH/eq))*209) + monthH + eq1 + day)/ 30;
moonday=round ((eq2-floor(eq2))*30 + 1);
return moonday;
};
DamirM вне форума   Ответить с цитированием
Старый 21.09.2012, 14:27   #11
LordWilex
В отпуске
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Адрес: Таганрог
Сообщения: 28,983
LordWilex репутация выше +250LordWilex репутация выше +250LordWilex репутация выше +250LordWilex репутация выше +250
По умолчанию

Цитата:
Сообщение от DamirM
Поскольку воспользовался Вашей информацией, то публикую правильный код на Си
LordWilex вне форума   Ответить с цитированием
Старый 09.04.2015, 04:08   #12
leo7
Собеседник
 
Аватар для leo7
 
Регистрация: 03.09.2010
Адрес: Иерусалим
Сообщения: 10
leo7 отключил(а) отображение уровня репутации
По умолчанию

A алгоритм? который рассчитывает знак зодиака? где находится луна, учитывая что знак может измениться в течении лунного дня? изобрели?
__________________
- знак дня по S-гороскопу
leo7 вне форума   Ответить с цитированием
Старый 22.02.2016, 14:53   #13
deadmorozz
Собеседник
 
Регистрация: 22.02.2016
Сообщения: 1
deadmorozz репутация выше +10
По умолчанию

Спасибо за формулу.
В благодарность, расчет по Джоришу, написанный на Lua.

Код:
getMoonDay = function(day,month,year) Day=day Month=month Year=year if(month<=2) then month = month+12 year = year-1 end local nc = math.floor(year/100) local vc = ((math.floor(nc/3) + math.floor(nc/4)) +6) - nc local a = (year/19) local b = ((a-math.floor(a))*209) local c = ( b + month + day + vc )/30 local MoonDay=math.round(((c - math.floor(c))*30)+1) return MoonDay end

Теперь ищу формулу расчета прохождения луны через знаки зодиака.
Поможете?
deadmorozz вне форума   Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +1, время: 18:56.


Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
© 1995-2020, ARGO