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


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

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

Оффлайн xd

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

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

Оффлайн soflot

  • Новичок
  • *
  • Сообщений: 2
  • Благодарностей: 0
  • посчитаю Луну и вряд-ли вернусь
    • Сообщения от soflot
Re: У кого есть алгоритмы?
« Ответ #21 : 22 Янв 2012 [02:19:16] »
Астрономия на персональном компьютере. Т.Пфлегер, О.Монтенбрук.
Меёс - "астрономические формулы для калькуляторов".

Спасибо, попробую эти книги тоже посмотреть. И ещё поискал, нашёл исходники MobileStarChart на Java для телефонов, надо будет в его Moon.java посмотреть. Вобщем есть куда двигаться дальше.

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

  • **
  • Забанен!
  • Сообщений: 54
  • Благодарностей: 0
  • Дуют ветры в феврале...
    • Сообщения от Февраль
Re: У кого есть алгоритмы?
« Ответ #22 : 22 Янв 2012 [06:51:15] »
А вот ещё один вопрос на засыпку: как избавиться от неопределённости при использовании арктангенса?
как правило расчеты могут быть ошибочными из-за этого

atan2, есть в подавляющем большинстве ЯП и реализуется сопроцессором аппаратно на x87

Сопроцессоры… Что за дикие сложности…Аппаратное обеспечение здесь вовсе ни при чём, а atan2 есть не везде..

Самому-то написать не аhа? При разработке алгоритма обязательно учитывается точность. Это касается не только тангенса, не только синуса и косинуса (первый при 90°-270°, второй при 0-180° теряет в точности), но и всех других вычислений.
  При пользовании сферической тригонометрией тем более – при одних условиях используются одни формулы, при других значениях – алгоритм переходит на другие. Пример – угловое расстояние между двумя точками – функция арккосинус. При значениях, близких к 0°, нужно переходить на синус и т.д.
   Другой пример – неопределённость, связанная с делением на 0. Если переменная двойной точности, проблемы нет (не на всех ЯП). Одинарной или целой – будет ошибка, если алгоритмом не предусмотрена процедура обработки ошибки. При этом то же надо помнить, что при делении на число, близкое к 0, результат будет крайне неточным, и если надо, перейти на другой алгоритм..

  Это же элементарно. Для того и голова. И надо учитывать особенности языка программирования – вот почему переходить на другой язык сложно

Оффлайн xd

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

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

Оффлайн Kirill Grishin

  • *****
  • Сообщений: 2 665
  • Благодарностей: 63
  • Астрокот.ру: astrokot.ru
    • Сообщения от Kirill Grishin
    • АСТРОКОТ
Re: У кого есть алгоритмы?
« Ответ #24 : 22 Янв 2012 [14:03:00] »
Ну не знаю, пишу параллельно языках на 5 разных для трёх разных аппаратных платформ и не имею особых сложностей. atan2 есть везде, но может отличаться немножко семантика.
Да, его можно встретить и в js и в Delphi
А вот ещё один интересный вопрос: как решается уравнение Кеплера для гиперболических орбит?

Оффлайн Kirill Grishin

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

Посмотри на страничке 49 в книжке Астрономия с калькулятором.
Внизу есть картинко, там всё расписано где какой знак арктангенса взависимости от
знаков  значений (x или y) стоящих под арктангенсом arctan(х/y), вычесленных зараннее.

atan2 не нужен. Ну твой вопрос хороший.
Да, но другое дело "научить программу определять нужный квадрат"

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: У кого есть алгоритмы?
« Ответ #26 : 22 Янв 2012 [14:50:52] »
А вот ещё один интересный вопрос: как решается уравнение Кеплера для гиперболических орбит?
Итеративно. Например методом Ньютона, как предлагается решать в Астрономическом календаре за 1981 год. Либо любым другим методом последовательных приближений, но получим больше итераций.
Можно поступить и иначе для малых эксцентриситетов и сделать так, как предлагается в книге Абалакина "Основы эфемеридной астрономии" - разложить уравнение в ряд по эксцентриситету.
У природы нет плохой погоды, у неё просто на нас аллергия.

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

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: У кого есть алгоритмы?
« Ответ #27 : 22 Янв 2012 [14:52:30] »
Если есть только тригонометрические и обратные тригонометрические функции, то можно сделать так:

\[ \alpha(x,y) = sign(y) arccos \frac{x}{x^2 + y^2} \]
sign(y) - знак аргумента.
У природы нет плохой погоды, у неё просто на нас аллергия.

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

Оффлайн Kirill Grishin

  • *****
  • Сообщений: 2 665
  • Благодарностей: 63
  • Астрокот.ру: astrokot.ru
    • Сообщения от Kirill Grishin
    • АСТРОКОТ
Re: У кого есть алгоритмы?
« Ответ #28 : 22 Янв 2012 [14:59:15] »
Что касается e<1  то я уже давно написал код программы на дельфи:
  var m,e,ee,e1,m2:Extended;
  const rad=180/Pi;
begin
  m:=StrToFloat(edt1.Text);{средняя аномалия}
  e:=StrToFloat(edt2.Text);{эксцентриситет}
  e1:=m-e;{промежуток в котором лежит E}
  repeat
    e1:=e1+0.000001;{метод подстановки}
    m2:=e1-e*sin(e1/rad);{условие точности}
  until Abs(m2-m)<0.00001;{проверка условия точности}
  Label1.Caption:=FloatToStr(e1);
end;


Оффлайн Kirill Grishin

  • *****
  • Сообщений: 2 665
  • Благодарностей: 63
  • Астрокот.ру: astrokot.ru
    • Сообщения от Kirill Grishin
    • АСТРОКОТ
Re: У кого есть алгоритмы?
« Ответ #29 : 22 Янв 2012 [15:48:32] »
Пытался реализовать выше описанный алгоритм из книги Практическая астрономия с калькулятором, получается не тот ответ что нужен.
Acrtan2(x, y) оказался более полезным

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

  • **
  • Забанен!
  • Сообщений: 54
  • Благодарностей: 0
  • Дуют ветры в феврале...
    • Сообщения от Февраль
Re: У кого есть алгоритмы?
« Ответ #30 : 22 Янв 2012 [16:49:31] »
Ну не знаю, пишу параллельно языках на 5 разных для трёх разных аппаратных платформ и не имею особых сложностей
  А что пишите? (По всей видимости, Вы профессионал, а наработки в области астрономии есть? - примеры, плиз)

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: У кого есть алгоритмы?
« Ответ #31 : 22 Янв 2012 [16:57:46] »
На работе - испытательные и макетные программные комплексы для аппаратуры, языки C++, C#, плюс один скриптовый язык.
Для себя - PHP, Ruby. Иногда другие связанные языки и технологии.
Плюс под микроконтроллеры на С++ для себя пишу. Есть проекты астрономического толка, о них доложимся позже, это направление только начали развивать мы в своём астроклубе, но уже наработки есть.
У природы нет плохой погоды, у неё просто на нас аллергия.

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

Оффлайн Kirill Grishin

  • *****
  • Сообщений: 2 665
  • Благодарностей: 63
  • Астрокот.ру: astrokot.ru
    • Сообщения от Kirill Grishin
    • АСТРОКОТ
Re: У кого есть алгоритмы?
« Ответ #32 : 24 Янв 2012 [15:34:55] »
Негде не могу найти среднюю аномалию для планет(М) на эпоху J 2000.0
Есть устаревшие данные для J 1970
Может кто-нибудь подскажет ресурс

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

  • **
  • Забанен!
  • Сообщений: 54
  • Благодарностей: 0
  • Дуют ветры в феврале...
    • Сообщения от Февраль
Re: У кого есть алгоритмы?
« Ответ #33 : 24 Янв 2012 [18:50:57] »
Есть устаревшие данные для J 1970
В каком смысле устаревшие?

Оффлайн rvl

  • ***
  • Сообщений: 122
  • Благодарностей: 4
    • Сообщения от rvl
Re: У кого есть алгоритмы?
« Ответ #34 : 24 Янв 2012 [19:42:16] »
Кстати, немного про atan2(y, x)
Функция определена для любых x и y, кроме x=y=0 и выдает результат от -pi до +pi, правильно определяя квадрант. Фактически она полагает при вычислении угла A, что y = K*sin(A), а x = K*cos(A), где K = 1/sqrt(x^2 + y^2)
Относительно недавно напоролся на интересный момент, связанный со случаем когда x = 0
Понятно, что в этом случае функция должна вернуть либо +pi/2 либо -pi/2 и определяется это знаком y. Но тут кроется засада, знак может иметь не только y, но и 0. В двоичном представлении числа с плавающей точкой ноль может иметь два написания: все биты 0 (т.н. +0) или старший бит 1, а остальные 0 (т.н. -0). При сравнении естественно полагается, что +0 = -0, но при вычислении atan2(y, x) = atan(y/x) из-за -0 может происходить инверсия результата. Разумеется это зависит от реализации функции в конкретном процессоре или библиотеке. Мне этот эффект попался на ARM платформе (iOS), в этих процессорах нет поддержки вычисления каких-либо тригонометрических функций самим процессором, все делается в соответствующей библиотеке и зависит от примененных в ней алгоритмов.