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


A A A A Автор Тема: Уравнение Кеплера  (Прочитано 2063 раз)

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

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

  • Новичок
  • *
  • Сообщений: 6
  • Благодарностей: 0
    • Сообщения от andray
Уравнение Кеплера
« : 29 Мая 2009 [19:30:12] »
Дает ли уравнение Кеплера точные результаты в пределах 10-20 угловых сек ?
что-то у меня на минуты точность расходится... пытался определить прямое восхождение солнца и склонение, есть другие варианты расчета но хочу сам разобраться где ошибка...

Я так понимаю истинная долгота солнца должна равняться прямому восхождению ?
« Последнее редактирование: 02 Июн 2009 [02:50:53] от andray »

Kedr

  • Гость
Re: Уравнение Кеплера
« Ответ #1 : 29 Мая 2009 [20:04:56] »
Я так понимаю истинная долгота солнца должна равняться прямому восхождению ?


Нет, долгота и прямое восхождение - разные вещи. Долгота относится к эклиптической системе координат, а прямое восхождение - к экваториальной. Существуют уравнения перехода от эклиптической системы к экваториальной.

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

  • Новичок
  • *
  • Сообщений: 6
  • Благодарностей: 0
    • Сообщения от andray
Re: Уравнение Кеплера
« Ответ #2 : 30 Мая 2009 [03:38:05] »
Kedr , Спасибо!

Нашел онлай конвертер координат, вроде вышел на расхождение 0.5 угловой секунде по долготе, и 3 угловой секунде по склонению, это правильно я делаю принимая широту эклиптики b1 равную 0 для солнца ?
 

http://hea.iki.rssi.ru/SXG/SDC/util/cgi-bin/c_prec4.htm


еще нашел вот такие формулы, они подойдут для расчета ?
cos(d)*cos(a) = cos(b)*cos(l),                                    (3.11)
cos(d)*sin(a)  = cos(b)*sin(l)*cos(e) — sin(b)*sin(e),       (3.12)
           sin(d) = cos(b)*sin(l)*sin(e) + sin(b)*cos(e).        (3.13)


http://www.astronet.ru/db/msg/1190817/node16.html

вот такое получилось решение:


decl := radtodeg(arcsin(cos(DegToRad(0))*sin(DegToRad(lon))*sin(DegToRad(23.43928))+ sin(DegToRad(0))*cos(DegToRad(23.43928))));
memo1.Lines.Add('decl = '+floattostr(decl));
memo1.Lines.Add('decl = '+gradtomin(decl));
/////////////
//a :=radtodeg(arccos((cos(DegToRad(0))*cos(DegToRad(lon)))/cos(DegToRad(decl))));
//a :=radtodeg(arcsin((cos(DegToRad(0))*sin(DegToRad(lon))*cos(DegToRad(23.43928)) - sin(DegToRad(0))*sin(DegToRad(23.43928)))/cos(DegToRad(decl))));

x :=(cos(DegToRad(0))*cos(DegToRad(lon)))/cos(DegToRad(decl));
y :=(cos(DegToRad(0))*sin(DegToRad(lon))*cos(DegToRad(23.43928)) - sin(DegToRad(0))*sin(DegToRad(23.43928)))/cos(DegToRad(decl));
a := radtodeg(arctan2( y, x ));
a := rev(a);
memo1.Lines.Add('a = '+floattostr(a));
memo1.Lines.Add('a = '+gradtochas(a));

//////

Единственное осталось неясным, почему долгота перигелия  w меньше на 180 градусов, в публикуемых данных для орбиты земля + луна ? и есть ли для 23.43928 какие-то годовые изменения ?
« Последнее редактирование: 30 Мая 2009 [05:57:40] от andray »

Kedr

  • Гость
Re: Уравнение Кеплера
« Ответ #3 : 30 Мая 2009 [09:44:45] »
Уравнения перехода верны. Широту солнца следует принимать нулевой, поэтому уравнения упращаются.
Касательно долготы перигелия: его долгота непрерывно изменяется, т.н. смещение перигелия, это эффект ОТО. Величина смещения характеризуется годичным изменением.
Кстати, с какими данными сравниваете расчеты?

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

  • Новичок
  • *
  • Сообщений: 6
  • Благодарностей: 0
    • Сообщения от andray
Re: Уравнение Кеплера
« Ответ #4 : 30 Мая 2009 [16:58:45] »
Сравнивал по системе "HORIZONS", но это тоже наверно электронный расчет ?
интересно бы где-то найти самые точные цифры... правда по идее луна должна еще смещать орбиту на +-6 сек ?
http://ssd.jpl.nasa.gov/horizons.cgi

данные для орбиты брал тут:
http://ssd.jpl.nasa.gov/?planet_pos
для 1800 AD to 2050 AD

Если кому интересно, начал писать свой модуль для основных астрономических процедур... модуль уже позволяет легко находить: "Прямое восхождение", "Склонение" , "Расстояние", как для Солнца так и всех остальных планет солнечной системы, а также Луны... добавил нутацию для Луны и наклонения земной оси, работает на интервале 1800 AD - 2050 AD...

astro.zip (07.06.2009)
« Последнее редактирование: 07 Июн 2009 [02:11:30] от andray »

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

  • Новичок
  • *
  • Сообщений: 6
  • Благодарностей: 0
    • Сообщения от andray
Re: Уравнение Кеплера
« Ответ #5 : 30 Мая 2009 [18:56:36] »
Уравнения перехода верны. Широту солнца следует принимать нулевой, поэтому уравнения упращаются.
Касательно долготы перигелия: его долгота непрерывно изменяется, т.н. смещение перигелия, это эффект ОТО. Величина смещения характеризуется годичным изменением.
Кстати, с какими данными сравниваете расчеты?

Вы немножко меня не поняли, перигелий пусть себе меняется (ОТО для меня совсем дело темное, но может и до нее когда-нибудь доберусь :) интересно, забегая наперед, на ОТО уже есть модель движения планет в солнечной системе ? ) , я хотел спросить почему его угол указывают как-бы относительно осеннего равноденствия, а не весеннего ?
и есть ли точная формула для вычисления изменения годичного наклона эклиптики к экватору?    

« Последнее редактирование: 30 Мая 2009 [19:10:55] от andray »

Kedr

  • Гость
Re: Уравнение Кеплера
« Ответ #6 : 30 Мая 2009 [23:10:08] »
Конечно модели движения планет на основе ОТО давно есть. К примеру, траектории межпланетных космических аппаратов расчитываются с учетом эффектов ОТО.

Угол наклона эклиптики к экватору меняется со временем по закону



где t - время, отсчитываемое в столетиях от 1900 года н.э. назад. Для моментов времени позднее 1900 г. следует брать t с минусом.

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

  • Новичок
  • *
  • Сообщений: 6
  • Благодарностей: 0
    • Сообщения от andray
Re: Уравнение Кеплера
« Ответ #7 : 31 Мая 2009 [04:29:58] »
Kedr, спасибо за помощь! еще маленький вопрос алгоритмы на основе ОТО, имеют высокую точность, или там тоже не все гладко, нужно проводить корректирующие измерения ?


оказывается у меня уже подобная формула для J2000, правда не знаю на сколько она верна...

eps := 23 + 26 / 60 + 21.448 / 3600 - 46.8150 / 3600 * T - 0.00059 / 3600 * T
    * T + (0.001813 * T * T * T);


я правильно понял для 2009 Т := (2009-1900)/100 ??? по-моему есть расхождение уже в 2 знаке после запятой!  пробовал и так Т := - (2009-1900)/100 тоже расхождение но чуть меньше... сравнивал с http://hea.iki.rssi.ru/SXG/SDC/util/cgi-bin/c_prec4.htm и
http://ru.wikipedia.org/wiki/%D0%97%D0%B5%D0%BC%D0%BB%D1%8F

eps := 23 + 27 / 60 + 8.2849 / 3600 + 46.8093 / 3600 * T + 0.0059 / 3600 * T
    * T - (0.00183 * T * T * T);
 

может лучше использовать первую формулу ?

еще вот так считают, в принципе тоже самое как и первое,
ссылаются на IAU expression (see e.g. Astron. Almanac 1984); stern

//23°26' 21.448"=23,4392911111111
eps := (23.4392911 + t*(-46.8150 + t*(-0.00059 + t*(  0.001813 )))/3600.0);

интересно где-бы можно точно сравнить цифры ?
« Последнее редактирование: 31 Мая 2009 [05:54:02] от andray »

Kedr

  • Гость
Re: Уравнение Кеплера
« Ответ #8 : 01 Июн 2009 [17:07:44] »
Посмотрите здесь http://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D0%BA%D0%B0
Формулы точны лишь для ближайших столетий.
« Последнее редактирование: 01 Июн 2009 [17:09:16] от Kedr »

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

  • Новичок
  • *
  • Сообщений: 6
  • Благодарностей: 0
    • Сообщения от andray
Re: Уравнение Кеплера
« Ответ #9 : 01 Июн 2009 [22:09:04] »
Пользоваться модулем архипросто  :)

procedure TForm1.Button12Click(Sender: TObject);
var
i: integer ;
RA,decl,r,t,j,L,pojas,a,z : extended;
begin
j := strtofloat(Edit1.Text); // широта места
L := strtofloat(Edit2.Text); // долгота места
pojas := strtofloat(Edit3.Text); // часовой пояс в часах

T:= J2000(DateTimePicker1.Date + DateTimePicker2.Time - (pojas/24));
memo1.Lines.Add('UTC date time = '+datetimetostr(DateTimePicker1.Date + DateTimePicker2.Time - (pojas/24)));
memo1.Lines.Add('Local date time = '+datetimetostr(DateTimePicker1.Date + DateTimePicker2.Time));
memo1.Lines.Add('Star Time = ' + GradToHour(GST(t) ));


for i :=0 to 9 do begin
if i <> 3 then begin
memo1.Lines.Add(pname[i]);

//if i=3 then
//Sun_Ra_Decl_r(T, @RA,@decl,@r)
//else
Planet_Ra_Decl_r(i,T, @RA, @Decl, @r );

memo1.Lines.Add('r = '+floattostr(r));
memo1.Lines.Add('RA = '+GradToHour(RA));
memo1.Lines.Add('decl = '+gradtomin(decl));
local_view(t,j,L,RA,decl,@a,@z);
memo1.Lines.Add('A = '+gradtomin(A)+ ' Z = '+gradtomin(Z));
end;
end;

memo1.Lines.Add('Луна');
Moon_Ra_Decl_r(T, @RA, @Decl, @r );
memo1.Lines.Add('r = '+floattostr(r));
memo1.Lines.Add('RA = '+GradToHour(RA));
memo1.Lines.Add('decl = '+gradtomin(decl));
local_view(t,j,L,RA,decl,@a,@z);
memo1.Lines.Add('A = '+gradtomin(A)+ ' Z = '+gradtomin(Z));

end;

« Последнее редактирование: 06 Июн 2009 [00:04:58] от andray »