Телескопы покупают здесь


A A A A Автор Тема: У кого есть алгоритмы?  (Прочитано 6841 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ShizyaАвтор темы

  • Новичок
  • *
  • Сообщений: 4
  • Благодарностей: 0
    • Сообщения от Shizya
У кого есть алгоритмы?
« : 27 Фев 2007 [20:02:30] »
Нужен алгоритм который расчитывает лунный день и время его начала.
Например сегодня в 12:11 (по Москве) начинается 11 лунный день.

И ещё нужен алгоритм который расчитывает в каком знаке зодиака находится луна, учитывая что знак может измениться в течении лунного дня.
Например вчера луна была в знаке рака c 6:47 (по Москве)

Если у кого нибудь есть такие алгоритмы на любом языке - очень прошу поделиться!
Заранее спасибо!

Оффлайн Pluto

  • Администратор форума
  • *****
  • Сообщений: 26 962
  • Благодарностей: 1078
    • Сообщения от Pluto
Re: У кого есть алгоритмы?
« Ответ #1 : 27 Фев 2007 [20:23:47] »
Вам лучше к астрологам обратиться.   ;)

Оффлайн ShizyaАвтор темы

  • Новичок
  • *
  • Сообщений: 4
  • Благодарностей: 0
    • Сообщения от Shizya
Re: У кого есть алгоритмы?
« Ответ #2 : 27 Фев 2007 [20:35:53] »
Вам лучше к астрологам обратиться.   ;)
Обращался :)
Они говорят что сами всё вручную высчитывают и заполняют...тобиш информация у них якобы статичная...
А мне нужны алгоритмы!

Оффлайн Eugenio

  • *****
  • Сообщений: 845
  • Благодарностей: 14
    • Сообщения от Eugenio
Re: У кого есть алгоритмы?
« Ответ #3 : 27 Фев 2007 [20:45:15] »
А что такое лунный день?

Оффлайн ShizyaАвтор темы

  • Новичок
  • *
  • Сообщений: 4
  • Благодарностей: 0
    • Сообщения от Shizya
Re: У кого есть алгоритмы?
« Ответ #4 : 27 Фев 2007 [21:26:20] »
А что такое лунный день?
Лунный день - промежуток времени между двумя восходами луны.
В лунном месяце может быть 29 или 30 лунных дней.
В солнечном дне может находится до 2 лунных дней и наоборот - в лунных сутках может находиться до 2 солнечных дней.
Например 30 лунные сутки могут иметь продолжительность всего 30 минут, 3 часа и т.п.
Первый лунный день начинается в новолуние (когда видимость луны 0%) и так далее.

Оффлайн ShizyaАвтор темы

  • Новичок
  • *
  • Сообщений: 4
  • Благодарностей: 0
    • Сообщения от Shizya
Re: У кого есть алгоритмы?
« Ответ #5 : 28 Фев 2007 [04:00:35] »
Сегодня я нашел Java скрипт, который расчитывает НОВОЛУНИЯ, ПОЛНОЛУНИЯ, СОЛНЕЧНЫЕ ЗАТМЕНИЯ и ЛУННЫЕ ЗАТМЕНИЯ на любой год, с погрешностью плюс-минус 3 минуты.
Сравнил с Лунным календарём на astroland.ru - разницу я заметил всего в 1 минуту.
В течении пары часов портировал этот скрипт на PHP (заодно упростил код, убрал функцию, оптимизировал алгоритм)

Теперь задача состоит в том чтобы ОПРЕДЕЛИТЬ ВРЕМЯ ВОСХОДОВ Луны между этими новолуниями (и возможно даже полнолуния пригодятся).
Вопрос: как можно расчитать время восходов Луны?
Помогите пожалуйста...
Заранее спасибо!

Оффлайн dimakrat

  • Новичок
  • *
  • Сообщений: 24
  • Благодарностей: 0
    • Сообщения от dimakrat
Re: У кого есть алгоритмы?
« Ответ #6 : 28 Фев 2007 [09:28:49] »
Вопрос: как можно расчитать время восходов Луны?

Есть такой алгоритм в книге Даффет-Смита Практическая астрономия с калькулятором. Качество, правда, не очень, но текст читается нормально.

Оффлайн ilya

  • *****
  • Сообщений: 2 188
  • Благодарностей: 27
    • Сообщения от ilya
Re: У кого есть алгоритмы?
« Ответ #7 : 28 Фев 2007 [09:32:28] »
Опередили :)
Вот на всякий случай еще одна ссылка http://www.astrolib.ru/library/49.html

Оффлайн Андрей Н.

  • ***
  • Сообщений: 118
  • Благодарностей: 0
    • Сообщения от Андрей Н.
Re: У кого есть алгоритмы?
« Ответ #8 : 28 Фев 2007 [15:31:30] »
Лунный день - промежуток времени между двумя восходами луны...
...Первый лунный день начинается в новолуние (когда видимость луны 0%) и так далее.

- А если момент новолуния почему-либо  не совпадет с моментом восхода?

Оффлайн Aquarius

  • *****
  • Сообщений: 7 171
  • Благодарностей: 295
  • Тот самый "Мюнхгаузен"... Aquarius и Александр.
    • Сообщения от Aquarius
Re: У кого есть алгоритмы?
« Ответ #9 : 14 Апр 2007 [17:54:11] »
Лунный день - промежуток времени между двумя восходами луны...
...Первый лунный день начинается в новолуние (когда видимость луны 0%) и так далее.

- А если момент новолуния почему-либо  не совпадет с моментом восхода?

Началом лунного месяца является тот момент, когда Луна совмещается с Солнцем. Это происходит в новолуние и может случиться в любое время солнечных суток: утром, днём, или ночью. Каждые лунные сутки начинаются восходом Луны и заканчиваются следующим же её восходом. Лунные сутки длинее  солнечных почти на час, и восход Луны каждый раз происходит позже, чем в предыдущий (из-за собственного движения Луны по орбите).
В течении лунного месяца (между двумя новолуниями) Луна может восходить из-за горизонта 28 или 29 раз, потому в лунном месяце бывает 29 или 30 дней! Первый и тридцатый дни могут иметь различную продолжительность - от нескольких минут до почти суток!
Первые сутки длятся от момента новолуния до (первого после этого новолуния) восхода Луны. Тридцатые сутки (29-ый восход Луны) бывают не каждый месяц и, как и первые, имеют различную продолжительность. Они длятся от восхода Луны и до момента новолуния!
"Человек посеявший - не тот же самый, который жнёт, но и не другой."

Кто-то сказал: человек рожден в углублении волны и ничего не знает о широком океане, расстилающемся впереди и позади его.

"Spiritus dominat forma!"

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: У кого есть алгоритмы?
« Ответ #10 : 14 Апр 2007 [23:26:04] »
А как быть, когда луна за сутки не восходит? :)
И для какого пункта Земли берётся восход?
А вообще Пфлегер и Монтенбрук в помощь.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Aquarius

  • *****
  • Сообщений: 7 171
  • Благодарностей: 295
  • Тот самый "Мюнхгаузен"... Aquarius и Александр.
    • Сообщения от Aquarius
Re: У кого есть алгоритмы?
« Ответ #11 : 15 Апр 2007 [11:39:28] »
А как быть, когда луна за сутки не восходит? :)

А что Вас смущает? Такое бывает каждый месяц. Я же говорил, что лунные сутки длиннее солнечных почти на час. Кроме того они никак не привязаны к солнечным. Например, 4-04-07 Луна взошла в 22.44, начав тем самым восемнадцатые лунные сутки. Следующий её восход состоялся уже 6-04-07 в 0.04. Таким образом 18-ые л. сутки начались 4-ого, а закончились 6-ого апреля.

И для какого пункта Земли берётся восход?

В каждом календаре указывается, для широты какого места даётся время восходов и заходов Солнца и Луны (я дал для Москвы). Но очевидно, что Луна восходит для каждой определённой местности (на широте Москвы) примерно в одно и тоже местное время. Но учитывая её собственное движение по орбите, для местностей расположенных восточнее, относительно Москвы, Луна восходит чуть раньше, а для западных - чуть позже.

« Последнее редактирование: 15 Апр 2007 [11:44:37] от Aquarius »
"Человек посеявший - не тот же самый, который жнёт, но и не другой."

Кто-то сказал: человек рожден в углублении волны и ничего не знает о широком океане, расстилающемся впереди и позади его.

"Spiritus dominat forma!"

Оффлайн soflot

  • Новичок
  • *
  • Сообщений: 2
  • Благодарностей: 0
  • посчитаю Луну и вряд-ли вернусь
    • Сообщения от soflot
Re: У кого есть алгоритмы?
« Ответ #12 : 21 Янв 2012 [05:18:03] »
Добрый день.
Хочу алгоритм определения положения луны.

Поискал по форуму, решил написать сюда а не создавать новую тему.
Я смотрел формулы в книге "Практическая астрономия с калькулятором", пытался рассчитать положение Луны (азимут, высоту) для заданного времени и места, и у меня не получилось. Хотя вроде бы всё делал по книге. У меня вышла высота вообще отрицательная для взятого времени, и азимут какой-то неправильный. В реальности же я луну в это время и в этом месте видел.

Расчёты получились довольно длинные (см. ниже). Если кто-то в этом разбирается, посмотрите пожалуйста и подскажите где ошибка, или может подскажите какие-нибудь альтернативные алгоритмы. Мне не нужна высокая точность расчётов, точность до 5 градусов меня вполне устроит.

Вот путь расчётов вкратце (по книге):
стр.82, пример 42.
-число суток с начала года (D)
-величина N солнца
-величина М солнца
-величина Е солнца
-величина Лямбда солнца
далее, страница 132, (и пример 62 далее)
-средняя долгота луны l
-Средняя аномалия Луны М
-Средняя долгота восходящего узла N
-поправка на эквекцию Ev
-Годичное уравнение Ае
-Третья поправка А3
-Исправленная средняя аномалия луны M'm
-Поправка за уравнение центра Ес
-Следующая поправка А4
-Исправленная долгота луны l'
-Вариация V
-Истинная орбитальная долгота Луны l''
-Исправленная долгота восходящего узла N'
-Игрек, икс, Арктангенс
-Эклептическая долгота (Лямбда м)
-Эклептическая широта (Бета м)
-Прямое склонение (Дельта), сначала находим его синус
-Прямое восхождение альфа (+ устраняем неоднозначность)
Далее страница 30, параграф 13.
Переходим от местного гринвичского времени GMT к гринвичскому звёздному времени GST
Далее от GST переходим на местное звёздное время LST (Параграф 14)
Далее параграф 24 переход от прямого восхождения к часовому углу
Далее параграф 25 переход от экваториальных координат к горизонтальным
Получаем азимут А и высоту альфа.
---
Вот сами числа (обозначения немного исковерканы, но понять можно; рассчитано не помню для какого дня, локальные координаты - на севере Белорусии)
Д=11174.88541
Мсол=210.7331278794772
лямбда сол=132.3505103532013
л=69.69088078234927
Мм=275.38088356670914
N=280.196664487401
Еv=-0.8307105504513612
Ае=-0.09495122031191146
Аз=-0.18908477672447382
М'м=274.8342090132941
Ес=-6.266229738337077
А4=-0.03594041481790095
л*=62.65295129905485
V=-0.42844727432519286
л**=62.224504024729654
N'=280.2784308773359
y=0.6139189225524833
x=-0.7874309833970227
atan(у/х)=142.05831297191622
лямМ=62.336743849252116°
Бм=3.168990748265069
sin d=0.40252428095080206
dельта=23.73607901199781
у2=0.790598293418059
x2=0.4642741626641394
а'=59.576667433529174
а=3.9717778289019448 часов
дней с 2011=216.88541
GST=15.172326684017998
LST=17.171481350684665
H=13.19970352178272 ч
H=197.9955528267408 °
sin a=-0.21881864610026586
a ее=-12.63965609330099°
cos A ее=0.957077125137757
A' ее=16.84798007781004°
A ее=16.84798007781004°
----
Вот сам код расчёта на JavaScript:
function HelloWorld()
{
d=11174.88541;
document.write('Д='+d.toString()+'<br>');
nsol=360*d/365.2422
while(nsol>=360){nsol=nsol-360}
if(nsol<0)nsol=nsol+360;
msol=nsol+278.833540-282.596403;
document.write('Мсол='+msol.toString()+'<br>');
esol=360*0.016718*Math.sin(msol/180*3.1415926)/3.1415926;
lasol=nsol+esol+278.833540;
if(lasol>360)lasol=lasol-360;
document.write('лямбда сол='+lasol.toString()+'<br>');
еL=13.176396*d+64.975464
while(еL>=360){еL=еL-360}
while(еL<0){еL=еL+360}
document.write('л='+еL.toString()+'<br>');
mm=еL-0.111404*d-349.383063;
while(mm>=360){mm=mm-360}
while(mm<0){mm=mm+360}
document.write('Мм='+mm.toString()+'<br>');
n=151.950429-0.0529539*d;
while(n>=360){n=n-360}
while(n<0){n=n+360}
document.write('N='+n.toString()+'<br>');
x=(2*(еL-lasol)-mm)/180*3.1415926;

if(x<0)x=x+3.1415926*2;
x=Math.sin(x);

ev=1.2739*x;
document.write('Еv='+ev.toString()+'<br>');
ae=0.1858*Math.sin(msol/180*3.1415926);
document.write('Ае='+ae.toString()+'<br>');
az=0.37*Math.sin(msol/180*3.1415926);
document.write('Аз='+az.toString()+'<br>');
msm=mm+ev-ae-az;
document.write('М\'м='+msm.toString()+'<br>');
es=6.2886*Math.sin(msm/180*3.1415926);
document.write('Ес='+es.toString()+'<br>');
a4=0.214*Math.sin(msm/90*3.1415926);
document.write('А4='+a4.toString()+'<br>');
els1=еL+ev+es-ae+a4;
document.write('л*='+els1.toString()+'<br>');
v=0.6583*Math.sin((els1-lasol)/90*3.1415926);
document.write('V='+v.toString()+'<br>');
els2=els1+v;
document.write('л**='+els2.toString()+'<br>');
ns=n-0.16*Math.sin((msol)/180*3.1415926);
document.write('N\'='+ns.toString()+'<br>');
y=Math.sin((els2-ns)/180*3.1415926)*Math.cos((5.145396)/180*3.1415926);
document.write('y='+y.toString()+'<br>');
x=Math.cos((els2-ns)/180*3.1415926);
document.write('x='+x.toString()+'<br>');
x_arc1=180*Math.atan(y/x)/3.1415926;
x_arc2=Math.atan(y/x);
if(x_arc1<0)x_arc1=x_arc1+180;
if(x_arc2<0)x_arc2=x_arc2+3.1415926;
document.write('atan(у/х)='+x_arc1.toString()+'<br>');
lam=x_arc1+ns;
if(lam>360)lam=lam-360;
document.write('лямМ='+lam.toString()+'°<br>');
bm=(Math.sin((els2-ns)/180*3.1415926)*Math.sin(5.145396/180*3.1415926));
bm=Math.asin(bm);
bm=bm*180/3.1415926;
document.write('Бм='+bm.toString()+'<br>');
eps=23.441884;
sind=Math.sin(bm/180*3.1415926)*Math.cos(eps/180*3.1415926)+Math.cos(bm/180*3.1415926)*Math.sin(eps/180*3.1415926)*Math.sin(lam/180*3.1415926);
document.write('sin d='+sind.toString()+'<br>');
del=Math.asin(sind);
del1=del*180/3.1415926;
document.write('dельта='+del1.toString()+'<br>');
y2=Math.cos(eps/180*3.1415926)*Math.sin(lam/180*3.1415926);
y2=y2-Math.sin(bm/180*3.1415926)*Math.sin(eps/180*3.1415926);
document.write('у2='+y2.toString()+'<br>');
x2=Math.cos(lam/180*3.1415926);
document.write('x2='+x2.toString()+'<br>');
ast=Math.atan(y2/x2);
ast=ast*180/3.1415926;
if(ast<0)ast=ast+180;
document.write('а\'='+ast.toString()+'<br>');
aa=ast/15;
document.write('а='+aa.toString()+' чясоф<br>');
document.write('--------<br>');
ddays=216.88541;
document.write('дней с 2011='+ddays.toString()+'<br>');
ddays=ddays*0.0657098;
t0=ddays-17.37913873;
//------- GMT
t0=t0+1.002738*18.25;
if(t0<0)t0=t0+24;
if(t0>24)t0=t0-24;
document.write('GST='+t0.toString()+'<br>');
lst=t0+29.98732/15;
document.write('LST='+lst.toString()+'<br>');
h=lst-aa;
fi=52;
document.write('H='+h.toString()+' ч<br>');
h=h*15;
document.write('H='+h.toString()+' °<br>');
sinaee=Math.sin(del1/180*3.1415926)*Math.sin(fi/180*3.1415926)+Math.cos(del1/180*3.1415926)*Math.cos(fi/180*3.1415926)*Math.cos(h/180*3.1415926);
document.write('sin a='+sinaee.toString()+'<br>');
aee=Math.asin(sinaee)/3.1415926*180;
document.write('a ее='+aee.toString()+'°<br>');
aee2=(Math.sin(del1/180*3.1415926)-Math.sin(fi/180*3.1415926)*Math.sin(aee/180*3.1415926))/(Math.cos(fi/180*3.1415926)*Math.cos(aee/180*3.1415926));
document.write('cos A ее='+aee2.toString()+'<br>');
aee2=Math.acos(aee2)/3.1415926*180;
document.write('A\' ее='+aee2.toString()+'°<br>');
if(Math.sin(h/180*3.1415926)>0){aee2=360-aee2;};
document.write('A ее='+aee2.toString()+'°<br>');
}

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: У кого есть алгоритмы?
« Ответ #13 : 21 Янв 2012 [09:24:56] »
Астрономия на персональном компьютере. Т.Пфлегер, О.Монтенбрук.
Там и исходники, и бинарники есть, и описание алгоритма.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Февраль

  • **
  • Забанен!
  • Сообщений: 54
  • Благодарностей: 0
  • Дуют ветры в феврале...
    • Сообщения от Февраль
Re: У кого есть алгоритмы?
« Ответ #14 : 21 Янв 2012 [09:40:47] »
Астрономия на персональном компьютере. Т.Пфлегер, О.Монтенбрук.
Там и исходники, и бинарники есть, и описание алгоритма.

  А Вы сами-то пользовались? - похоже, нет.
Исходники там на си+. Описания алгоритмов очень неполное, я бы сказал - нет. Сам чёрт ногу сломит.

  Лучше Меёс - "астрономические формулы для калькуляторов". Там полные алгоритмы с примерами. Можно шаг за шагом просчитать и сверить.

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: У кого есть алгоритмы?
« Ответ #15 : 21 Янв 2012 [09:58:17] »
Пользовался.
Лучше сначала любая книжка по эфемеридной астрономии, чтобы понять матчасть. На сайте есть более ранние издания, там исходники на паскале.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Kirill Grishin

  • *****
  • Сообщений: 2 665
  • Благодарностей: 63
  • Астрокот.ру: astrokot.ru
    • Сообщения от Kirill Grishin
    • АСТРОКОТ
Re: У кого есть алгоритмы?
« Ответ #16 : 21 Янв 2012 [14:07:26] »
А вот ещё один вопрос на засыпку: как избавиться от неопределённости при использовании арктангенса?
как правило рассчёты могут быть ошибочными из-за этого

Оффлайн Kirill Grishin

  • *****
  • Сообщений: 2 665
  • Благодарностей: 63
  • Астрокот.ру: astrokot.ru
    • Сообщения от Kirill Grishin
    • АСТРОКОТ
Re: У кого есть алгоритмы?
« Ответ #17 : 21 Янв 2012 [17:40:34] »
А вот ещё один вопрос на засыпку: как избавиться от неопределённости при использовании арктангенса?

  Ну, лорд Кирилл фон Гришин, Вы прямо разочаровываете такими вопросами... :(
Вы когда нибудь реализовывали алгоритмы, перед тем как резко переходить на личности?

Оффлайн Февраль

  • **
  • Забанен!
  • Сообщений: 54
  • Благодарностей: 0
  • Дуют ветры в феврале...
    • Сообщения от Февраль
Re: У кого есть алгоритмы?
« Ответ #18 : 21 Янв 2012 [18:24:51] »
Вы когда нибудь реализовывали алгоритмы, перед тем как резко переходить на личности?
  Yes!

Оффлайн Kirill Grishin

  • *****
  • Сообщений: 2 665
  • Благодарностей: 63
  • Астрокот.ру: astrokot.ru
    • Сообщения от Kirill Grishin
    • АСТРОКОТ
Re: У кого есть алгоритмы?
« Ответ #19 : 21 Янв 2012 [18:48:01] »
Вы когда нибудь реализовывали алгоритмы, перед тем как резко переходить на личности?
  Yes!
И как вы решили эту задачу?