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


A A A A Автор Тема: Уравнение восхода - не совсем понимаю  (Прочитано 860 раз)

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

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

  • Новичок
  • *
  • Сообщений: 21
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Kelmair
Понимаю, что вопрос дурацкий, но действительно не всё понятно. Вот здесь оно объяснялось Как расчитываются , но у меня остались вопросы по тому как это всё вычислять.

Допустим, я по считал вот эти формулы:

n = JD – 2451545.0 (= число дней с J2000.0).  Julian Day (JD) на 10 июня 2002г. в 0ч00 UT: 2452435.5
L = 280.472 + 0.9856474n    (средняя долгота соднца—исправлённая за аберрацию)
g = 357.528 + 0.9856003n     (средняя аномалия)

Дальше в посте говорится: "Вычитайте 360x (x = целое число) чтобы L и g будут между 0 и 360 градусов". Объясните пожалуйста что за x на который нужно умножить 360 и откуда нужно вычесть результат? Дальше понятно - считаем склонение, потом само уравнение, получаем число. Как мне потом это число перевести в часы, минуты и секунды времени? Если не трудно, может ли кто-то более детально описать сам процесс вычисления на каком-то примере?


Оффлайн Toth

  • *****
  • Сообщений: 2 604
  • Благодарностей: 176
    • Сообщения от Toth
Re: Уравнение восхода - не совсем понимаю
« Ответ #1 : 03 Ноя 2017 [22:32:25] »
"Вычитайте 360x (x = целое число) чтобы L и g будут между 0 и 360 градусов". Объясните пожалуйста что за x на который нужно умножить 360 и откуда нужно вычесть результат?
Это потому что например 390 градусов - все равно, что 30 градусов. В данном случае, и вообще почти всегда в астрономических расчетах ( кроме расчетов гиперболических орбит).

В принципе, это не обязательно. Потому что и Excel и в Pascal и C - sin, cos  считают нормально при любых аргументах , пусть даже больше 2пи ( в радианах). Это чисто эстетически, так принято чтобы долгота  была между 0 и 360 (2пи).

Можно так сделать - в Excel, если L - в A1
=A1-360*ЦЕЛОЕ(A1/360)в Паскаль
L:=L-360*Floor(L/360);Если надо в радианах - то вместо 360 - 2пи
« Последнее редактирование: 03 Ноя 2017 [22:37:35] от Toth »

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

  • Новичок
  • *
  • Сообщений: 21
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Kelmair
Re: Уравнение восхода - не совсем понимаю
« Ответ #2 : 03 Ноя 2017 [23:39:50] »
То есть я к примеру пишу так (на паскале). Сначала мне нужно узнать склонение.

n:= JD - 2451545.0;
L:= 280.472 + 0.9856474 * n;
g:= 357.528 + 0.9856003 * n;

Lmd:= L + 1.915 * sin(g) + 0.020 * sin(g*2); // Эклиптическая долгота
Ein:= 23.439 - 0.0000004 * n; // Наклонность эклиптики
Dta:= ArcSin(-1:sin(Eln) * sin(Lmd)); // Склонение солнца.

И далее уже сама формула восхода.

H:= arcTan(Fi) * tan(Dta);

 Вот здесь получается десятичная дробь. Как мне её прикрутить к 12 часам теперь? И всё ли тут правильно делаю?

Оффлайн Toth

  • *****
  • Сообщений: 2 604
  • Благодарностей: 176
    • Сообщения от Toth
Re: Уравнение восхода - не совсем понимаю
« Ответ #3 : 04 Ноя 2017 [00:57:09] »
И всё ли тут правильно делаю?
Нет. В Паскале тригоном. функции - в радианах.
Вот, вроде так как в формулах в вашей ссыле
function H_Sun(JD,fi:Double):Double; // fi и результат - вградусах
const GR=PI/180;
var n,L,g,Lam,eps,del:Double;
begin
 n:= JD-2451545.0;
 L:=280.472 + 0.9856474*n;
 g:= 357.528 + 0.9856003*n;
 L:=L-360*Floor(L/360); //
 g:=g-360*Floor(g/360); //
 Lam:= L + 1.915*Sin(GR*g) + 0.020*Sin(GR*2*g);
 eps:=23.439-0.0000004*n;
 del:=ArcSin(Sin(eps*GR)*Sin(GR*Lam));
 Result:=ArcCos(-Tan(GR*fi)*Tan(del))/GR;
end;
Только - не учтена рефракция в атмосфере ( это удлиняет день на неск. минут), не учтен размер Солнца.
Вот - https://ru.wikipedia.org/wiki/Уравнение_восхода

И вообще - истинный полдень ( когда часовой угол Солнца = 0) - не везде и не всегда в ровно 12.00 местного времени. Точнее - почти нигде и никогда.
Вот еще - https://ru.wikipedia.org/wiki/Полдень , https://ru.wikipedia.org/wiki/Местное_солнечное_время



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

  • Новичок
  • *
  • Сообщений: 21
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Kelmair
Re: Уравнение восхода - не совсем понимаю
« Ответ #4 : 04 Ноя 2017 [12:10:10] »
Вот, расписал немного иначе. Так правильно будет?

begin
n:= JD – 2451545.0; // Число дней с J2000,0.
L:= 280.472 + 0.9856474 * n // Средняя долгота исправленная за оберрацию
g = 357.528 + 0.9856003 * n // Средняя аномалия
// Далее ищем склонение Солнца.
lmd:= L + 2.915*sin(g*pi.180) + 0.020*sin((g*2)*pi/180); // Эклиптическая долгота.
// В lmd перешли от средней к истинной долготе, исправив за элипс орбиты.
eps:= 23.439 - 0.0000004*n; // Наклонность эклиптики.
dta:= ArcSin(Sin(eps*pi/180)*Sin(pi/180*lmd)); // Склонение Солнца.
// В dta перешли от эклиптических координат к экваториальным. Далее...
a:= -0.83 // Высота центра солнечного диска.
// fi - широта, где наблюдается восход. Далее часовой угол.
h:= (sin(a*pi/180)-sin(fi*pi/180)*sin(dta*pi/180))/(cos(fi*pi/180)*cos(dta*pi/180);
// Часовой угол переводим во время, прибавляем или вычитаем к\из 12. Так получаем
// истинный заход и восход.
end;

После вот этих рассчётов, как я понимаю, следует уже соотносить это всё с гражданским временем. Тут я пока разбираюсь как сделать. Ещё нашёл в одной книге (Ж. Меёс "астрономия с калькулятором" русское издание 1988 год) поправку за возмущения, которая добавляется к долготе. Годится ли это для точного рассчёта восхода и захода?

begin
L1:= L + cos((153.23+22518.7541 * T)*pi/180) // A
       + cos((216.57+45037.5082 * T)*pi/180) // B
       + cos((312.69+32964.3577 * T)*pi/180) // C
       + sin((350,74+445267.114 * T - 0.00144 * power(T,2))*pi/180) // D
       + sin((231.19+20.20 * T)*pi/180); // E

// К долготе истинной долготе L прибавляются члены A, B, C, D, E. Исправление за возмущения.   
end;


Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Уравнение восхода - не совсем понимаю
« Ответ #5 : 04 Ноя 2017 [12:24:12] »
power(T, 2) - это сильно
Лучше T * T сделать ::)
У природы нет плохой погоды, у неё просто на нас аллергия.

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

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

  • Новичок
  • *
  • Сообщений: 21
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Kelmair
Re: Уравнение восхода - не совсем понимаю
« Ответ #6 : 04 Ноя 2017 [12:50:03] »
power(T, 2) - это сильно
Лучше T * T сделать ::)

Ну, можно и так. :-) Но в любом случае T^2.

Оффлайн Toth

  • *****
  • Сообщений: 2 604
  • Благодарностей: 176
    • Сообщения от Toth
Re: Уравнение восхода - не совсем понимаю
« Ответ #7 : 04 Ноя 2017 [14:12:53] »
dta:= ArcSin
Функция ArcSin возвращает в радианах, поэтому в формуле h:=... не надо dta умножать на пи/180

А что, конструкцию const в принципе не используете ? Получается у вас 1000 раз одно и то же вычисление PI/180

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

  • Новичок
  • *
  • Сообщений: 21
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Kelmair
Re: Уравнение восхода - не совсем понимаю
« Ответ #8 : 04 Ноя 2017 [18:39:06] »
Исправил dta. в итоге это выглядит так.

begin
  JD:= StrToFloat(Edit2.Text);
  n:= JD - 2451545.0;
  L:= 280.472 + 0.9856474 * n; // Средняя долгота исправленная за оберрацию
  g:= 357.528 + 0.9856003 * n; // Средняя аномалия
  // Далее ищем склонение Солнца.
  lmd:= L + 2.915*sin(g*Gr) + 0.020*sin((g*2)*Gr); // Эклиптическая долгота.
  // В lmd перешли от средней к истинной долготе, исправив за эллипс орбиты.
  eps:= 23.439 - 0.0000004*n; // Наклонность эклиптики.
  dta:= ArcSin(Sin(eps*Gr)*Sin(lmd*Gr)); // Склонение Солнца.
  // В dta перешли от эклиптических координат к экваториальным. Далее...
  a:= -0.83; // Высота центра солнечного диска.
  fi:= StrToFloat(Edit1.Text);
  h:= (sin(a*Gr)-sin(fi*Gr)*sin(dta))/(cos(fi*Gr)*cos(dta));
  // Часовой угол переводим во время, прибавляем или вычитаем к\из 12. Так получаем
  // истинный заход и восход.
  Edit3.Text:= FloatToStr(h);
end;

На широту северную 59,30 и JD = 2458061,9704745 выдаёт часовой угол h = 0,458448350525439.

Теперь, как я полагаю, нужно h перевести в градусы, а градусы в единицы времени, которые вычитаются от истинного полудня. А вот дальше как всё это соотнести с гражданским временем?

Оффлайн Toth

  • *****
  • Сообщений: 2 604
  • Благодарностей: 176
    • Сообщения от Toth
Re: Уравнение восхода - не совсем понимаю
« Ответ #9 : 04 Ноя 2017 [18:53:30] »
А вот дальше как всё это соотнести с гражданским временем?
https://ru.wikipedia.org/wiki/Уравнение_времени
Среднее солнечное время на долготе lam =UT1+lam/15   -  * исправил
Вместо UT1 можно брать UTC, между ними разница обычно не более полсекунды.


а широту северную 59,30 и JD = 2458061,9704745 выдаёт часовой угол h = 0,458448350525439.
Что-то не то, 26.6 градусов. Получается, что на широте Питера сейчас восход - всего за 1ч45 мин до истинного полудня, а заход - через 1ч45мин.
У меня получилось 62.14 гр. Проверьте дельту - склонение Солнца. Должно получиться минус 15.5
« Последнее редактирование: 04 Ноя 2017 [19:06:45] от Toth »

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

  • Новичок
  • *
  • Сообщений: 21
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Kelmair
Re: Уравнение восхода - не совсем понимаю
« Ответ #10 : 04 Ноя 2017 [19:36:42] »
Что-то не то, 26.6 градусов. Получается, что на широте Питера сейчас восход - всего за 1ч45 мин до истинного полудня, а заход - через 1ч45мин.
У меня получилось 62.14 гр. Проверьте дельту - склонение Солнца. Должно получиться минус 15.5

Склонение Солнца при тех же данных = -0,266057325630446. Но я вывел её как радианы FloatToStr(h) прямо из переменной. Если при выводе преобразовать через RadToDeg, получится dta= -15,243. Если преобразовать на выходе часовой угол, то да h = 26,2671

Оффлайн Toth

  • *****
  • Сообщений: 2 604
  • Благодарностей: 176
    • Сообщения от Toth
Re: Уравнение восхода - не совсем понимаю
« Ответ #11 : 04 Ноя 2017 [19:42:57] »
АркКосинус забыли

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

  • Новичок
  • *
  • Сообщений: 21
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Kelmair
Re: Уравнение восхода - не совсем понимаю
« Ответ #12 : 04 Ноя 2017 [20:45:44] »
Да, действительно. Спасибо. Исправил формулу, теперь h = 64,560 dta = -15,243 при a = -0.83 (как показано в википедии). Но вот здесь описано Как расчитываются с другим значением "a". Поменял на  -0.0148, и вот что получилось:  h = 62,7129, dta = -15,24396. Но всё равно не 62.14 и -15.5 выходит.

Оффлайн Toth

  • *****
  • Сообщений: 2 604
  • Благодарностей: 176
    • Сообщения от Toth
Re: Уравнение восхода - не совсем понимаю
« Ответ #13 : 04 Ноя 2017 [20:59:55] »
Но всё равно не 62.14 и -15.5
62.14 - это я по центру Солнца считал, без учета размеров. По простой формуле, как в коде у меня.
И дельта Солнца - тоже без поправок.
Дельта Солнца - можно проверить. См. эфемериды Солнца, например в астро.календаре. Правда там с шагом в 1 день.
И надо смотреть, какие - гео-/топо-центрические.

Вот, отсюда http://vo.imcce.fr/webservices/miriade/?forms
На вашу JD . Дельта =-15-30/60-13.1336/3600 =-15.50364822
« Последнее редактирование: 04 Ноя 2017 [21:15:11] от Toth »

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

  • Новичок
  • *
  • Сообщений: 21
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Kelmair
Re: Уравнение восхода - не совсем понимаю
« Ответ #14 : 06 Ноя 2017 [09:00:00] »
Сделал уравнение времени. Но оно выдаёт минус 100 градусов - многовато для разницы между истинным и средним солнцем. До уравнения ошибок не может быть потому, что там только определение порядкового номера дня. Переменная Dn (day number) собственно этот номер и содержит.

B:= 360*(Dn-81)/365;
E:= 7.53*cos(B*pi/180)+1.5*sin(B*pi/180)-9.87*sin((2*B)*pi/180);           

Кстати интересно, а можно ли от рассчётов восхода и захода непосредственно перейти к рассчёту солнцестояний и равноденствий. В смысле использовать данные из этой де функции?


Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Уравнение восхода - не совсем понимаю
« Ответ #15 : 06 Ноя 2017 [09:47:42] »
Единицы измерения не те. В указанном уравнении B в градусах, E - в минутах времени.
У природы нет плохой погоды, у неё просто на нас аллергия.

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

Оффлайн Toth

  • *****
  • Сообщений: 2 604
  • Благодарностей: 176
    • Сообщения от Toth
Re: Уравнение восхода - не совсем понимаю
« Ответ #16 : 06 Ноя 2017 [16:47:00] »
Кстати интересно, а можно ли от рассчётов восхода и захода непосредственно перейти к рассчёту солнцестояний и равноденствий.
Для этого нет необходимости в этой формуле. Достаточно только формулы склонения Солнца.
По определению , равноденствие это когда дельта Солнца =0 , а солнцестояние - когда дельта Солнца максимальная (минимальная).

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

  • Новичок
  • *
  • Сообщений: 21
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Kelmair
Re: Уравнение восхода - не совсем понимаю
« Ответ #17 : 07 Ноя 2017 [01:34:33] »
Любопытно - уравнение времени вроде правильно считает. Но полдень в Питере на сегодняшний день показывает в 13:30:38, хотя большая часть сайтов утверждает, что в 12:42.  А так для долготы 30 градусов 26 мин Полдень 13-30-38, а E = -16,0936919537045. Сомневаюсь, что рут сайты, ведь колебания-то относительно среднего полудня не большие.