Спутниковые системы навигации. Учебное пособие. Учебное пособие ( Лабораторный практикум на компьютере ) Київ 2008 1
Скачать 4.49 Mb.
|
темах» Рекомендуется следующий порядок действий для выполнения лабораторной работы. 1. Создайте папку TIME_My и скопируйтев ее все программы из папки TIME. 2. Запустите MatLab [7, 8]. 3. Обратитесь к папке TIME _My и откройте ее. 4. Откройте функцию JD_epohi, внимательно изучите ее по комментариям и программ- ным процедурам, описывающим алгоритм расчета (раздел 1. 3 книги [1]). 5. Откройте пример расчета PR_JD_epohi.m и выполните m- файл. 6. Основываясь на m- файле PR_JD_epohi.m выполните задание 1. 7. Задание 1. Используя в качестве основы m- файл PR_JD_epohi.m , сформируйте m- файл и рассчитайте юлианского день для опорного года, в котором Вы родились. Рас- считайте юлианский день эпохи 2000 (2000 год) и объясните причину разницы в 1 день. Результат выполнения из командного окна MatLab перенесите в отчет. 8. Откройте функцию JD_data, внимательно изучите ее по комментариям и программным процедурам, описывающим алгоритм расчета (раздел 1. 3 книги [1]). 53 9. Откройте пример расчета PR_JD_data.m и выполните m- файл. 10. Основываясь на m- файле PR_JD_data.m выполните задание 2. 11. Задание 2. Используя в качестве основы m- файл PR_JD_data.m , сформируйте m- файл и рассчитайте юлианского день для опорного года и номер дня года, в котором Вы родились. Рассчитайте юлианский день эпохи 2000 (2000 год) и объясните причину разницы в 1 день. Результат выполнения из командного окна MatLab перенесите в от- чет. 12. Откройте функцию time_gps, внимательно изучите ее по комментариям и программ- ным процедурам, описывающим алгоритм расчета (раздел 1. 3 книги [1]). 13. Откройте пример расчета PR_time_gps.m и выполните m- файл. 14. Основываясь на m- файле PR_time_gps.m выполните задания 3 и 4. 15. Задание 3. Используя в качестве основы m- файл PR_JD_data.m , сформируйте m- файл и рассчитайте номер GPS-недели, время UTC c начала текущей недели, время GPS c начала текущей недели, номер дня года, номера юлианского дня на момент вы- полнения лабораторной работы. Результат выполнения из командного окна MatLab пе- ренесите в отчет. 16. Задание 4. В сформированном файле задайте номера дней, соответствующих субботе и воскресению и убедитесь, что происходит изменение номера недели. Результат вы- полнения из командного окна MatLab перенесите в отчет. 17. Откройте функцию week_GLONAS_gps, внимательно изучите ее по комментариям и программным процедурам. 18. Откройте пример расчета PR_time_gps_GLON.m и выполните m- файл. 19. Основываясь на m- файле PR_time_gps_GLON.m выполните задание 5. 20. Задание 5. Используя в качестве основы m- файл PR_time_gps_GLON.m , сформируй- те m- файл, задайте Na- календарный номер суток внутри четырехлетнего периода от ближайшего високосного года, выполните m- файл . Результат выполнения из команд- ного окна MatLab перенесите в отчет. 21. Создайте папку TIME_S0_My и скопируйтев ее все программы из папки TIME_S0. 22. Обратитесь к папке TIME_S0_My и откройте ее. 23. Последовательно открывая функции: s0_Nut, utc_nut, koef, utc_nut_fi_eps внимательно изучите их по комментариям и программным процедурам, описывающим алгоритм расчета (раздел 1. 3 книги [ ]). 24. Выполните указание 1 и дополните папку TIME_S0_My функциямиJD_epohi, JD_data. 25. Откройте пример расчета PR_s0_Nut.m и выполните m- файл. 54 26. Основываясь на m- файле PR_s0_Nut.m выполните задание 6. 27. Задание 6. Используя в качестве прототипа m- файлPR_s0_Nut.mсформируйтеm- файл, введите в него исходные данные, соответствующие времени выполнения работы выполните m- файл (рассчитайте истинное и среднее звездное время) и занесите ре- зультаты выполнения из командного окна MatLab в отчет. 3.3 Вопросы и задания для самоподготовки 1. Что понимается под терминами звездное время, истинное звездное время, среднее звездное время, время на гринвичском меридиане ? 2. В каких спутниковых радионавигационных системах и для чего применяется юлиан- ский день? 3. Назовите основные фундаментальные эпохи, используемые в спутниковой радионави- гации. 4. Какие единицы измерения времени применяются в GPS? 5. Какие единицы измерения времени применяются в ГЛОНАСС? 6. Какие единицы измерения времени применяются в EGNOS? 7. Какие единицы измерения времени применяются в GALILEO? 8. Что в GPS обозначает дата с 5. 01. 80 на 6. 01. 80? 9. На сколько секунд системное время GPS опережает время UTC? 10. Какой смысл в ГЛОНАСС вкладывается в определение «московское декретное вре- мя»? 11. Что такое универсальное всемирное время? 12. Что такое атомное время? 13. Напишите формулу, связывающую время ГЛОНАСС и время UTC. 14. Объясните физический смысл нутации. 15. Как изменяется время GPS в течение недели. 16. Как изменяется время ГЛОНАСС в течение суток. 3.4 Тексты программ 3.4.1 Функции и файлы из папкиTIME Функция JD_epohi function jden = JD_epohi(epoha) %Имя: JD_epohi %Фукция JD_epohi(epoha) рассчитывает юлианский день %для опорного года (epoha) 55 %Входные данные: epoha, размерность-год %Выходные данные:jden- юлианский день, размерность -дни rk = mod(epoha,4); if ( rk == 0 ) rk = 1.0; else rk = 2.0 - rk * 0.25; end; n100 = floor(epoha / 100); n400 = floor(epoha / 400); jden = (4712 + epoha) * 365.25 + n400 - n100 + rk; % fprintf('epoha=%d rk=%f jden=%6.2f \n', epoha, rk, jden); Файл PR_JD_epohi.m %Пример расчета JD_epohi epoha=2000; jden = JD_epohi(epoha) Решение по данным примера. Юлианский день 2000 года (эпоха 2000) равен 2451544 (нулевой день !!!) Функция JD_ data (расчет номера юлианского дня ). function [JD, day_year] = JD_data(year, mon, day) %Имя:JD_data % Функция JD_data(year, mon, day) вычисляет : %JD - номер юлианского дня, day_year - номер дня года. %Входные данные: %year - год, % mon - месяц, % day - день. %Выходные данные: %JD - юлианский день, day_year- день от начала года. %Оригинальные функции: function jd0 = JD_epohi(year), %(смотри комментарий). % число дней от начала периода до 12ч. всемирного времени (полдень) % указанной даты ( по Гринвичу) %Входные данные для контрольного примера: %year = 2000; mon = 1; day = 1; %количество дней в месяцах DnMon = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; %Вычисление номера юлианского дня опорной эпохи jd0 = JD_epohi(year); %Учет високосного года nfebr = 0; if mod(year,4) == 0 56 nfebr = 1; end; %Расчет номера дня года k = 0; for i = 2 : mon k = k + DnMon(i - 1); if (i == 2) k = k + nfebr; end; end; day_year = k + day; %Расчет номера юлианского дня JD = jd0 + day_year; %2451545 - номер юлианского дня; 1- первый день года. Файл PR_JD_data.m %Пример расчета JD_data year = 2000; mon = 1; day = 1; [JD, day_year] = JD_data(year, mon, day); [JD, day_year]' %Результат расчета JD= 2451545, day_year= 1 Функция time_gps (расчет номера GPS-недели, времени UTC c начала текущей не- дели, времени GPS c начала текущей недели, номер дня года, номера юлианского дня) function [wGPS, TimesUTC, TimesGPS, day_year, JD, weekday] = time_gps(year, mon, day, h, min, sec) % Имя: time_gps % Функция time_gps(year, mon, day, h, min, sec) вычисляет : %wGPS -номер GPS- недели, TimesUTC -время UTC c начала текущей недели (секунда), % TimesGPS - время GPS c начала текущей недели (секунда), %day_year- номер дня года, % JD - номер юлианского дня, % weekday - день недели (0 - воскресенье, 1 - понедельник, 2 - вторник, 3 - среда, %4 - четверг, 5 - пятница, 6 - суббота. % Выходные данные: wGPS, TimesUTC, TimesGPS, day_year, JD, weekday. % Входные данные: year - год, mon - месяц, day - день, h - час, %min - минута, sec -секунда. %Оригинальные функции: function [JD, day_year] = JD_data(year, mon, day), %(смотри комментарий). % число дней от начала периода до 0ч. всемирного времени UTC % указанной даты ( по Гринвичу) %Входные данные для контрольного примера: %year = 2007; mon = 11; day = 28; %h = 20; min = 7; sec = 51; 57 %Используемые константы: % сдвиг времени между UTC и системным временем GPS на начало 2004 года %diff_UTC_GPS = 13;(до конца 2005 года) diff_UTC_GPS = 14;%(с 2006 года) %количество дней в месяцах DnMon = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; % юлианский день начала отсчета недели GPS на ноль часов UTC c 5 на 6 % января 1980 года. wGPS_0 = 2444244.5; % Расчет номеров юлианского дня и дня года [JD, day_year] = JD_data(year, mon, day); %Сдвиг на ноль часов UTC на гривчском меридиане JD = JD - 0.5; %Расчет номера GPS неделе стандартной функцией MatLab "floor" wGPS = floor((JD - wGPS_0) / 7); %Расчет дня недели стандартной функцией MatLab "mod" weekday = mod((JD - wGPS_0) , 7); %Расчет секунд с начала недели в шкале времени UTC TimesUTC = 86400 * weekday + 3600 * h + 60 * min + sec; %Расчет секунд с начала недели в шкале времени GPS TimesGPS = TimesUTC + diff_UTC_GPS; %Результат решения задачи по входным данным контрольного примера %1.0e+006 *- множитель для всех данных; % 0.00145500000000 - номер GPS недели; % 0.33167100000000 - количество секунд с начала недели по UTC; %0.33168500000000- количество секунд с начала недели по GPS; %0.00033200000000 - день года; %2.45443250000000 -номер юлианского дня; %0.00000300000000 - день недели (среда). Файл PR_time_gps.m %Пример 1 расчета функции time_gps(year, mon, day, h, min, sec) year=2007; mon= 11; day = 28; h = 20; min= 7; sec = 51; [wGPS, TimesUTC, TimesGPS, day_year, JD, weekday] = time_gps(year, mon, day, h, min, sec) ; [wGPS, TimesUTC, TimesGPS, day_year, JD, weekday]' 58 %Пример2 расчет функции time_gps(year, mon, day, h, min, sec) year=1999; mon= 8; day = 28; h = 23; min= 59; sec = 59; [wGPS, TimesUTC, TimesGPS, day_year, JD, weekday] = time_gps(year, mon, day, h, min, sec) ; [wGPS, TimesUTC, TimesGPS, day_year, JD, weekday]' Результат расчета: wGPS= 1024; TimesUTC =604799; TimesGPS = 604813; day_year =240; JD = 24514185; weekday = 6 (суббота); Пример 2 характерен тем, что в ночь с субботы на воскресенье 28 августа 1999 года неделя GPS равна 1024 и через одну секунду счет недель в системе GPS начался с начала. Функция week_GLONAS_gps function [wGPS,weekday] = week_GLONAS_gps(Na) % Имя функции: week_GLONAS_gps % Назначение: функция устанавливает связь между параметром Na, передаваемом с навигационного %спутника ГЛОНАСС и номером GPS- недели (wGPS), днем недели (weekday) % weekday - день недели (0 - воскресенье, 1 - понедельник, 2 - вторник, 3 - среда, %4 - четверг, 5 - пятница, 6 - суббота. %Входные данные: %Na- календарный номер суток внутри четырехлетнего периода от ближайшего високосного года, к %которым относится информация, передаваемая со спутника ГЛОНАСС (согласно интерфейсного конт- %рольного документа ГЛОНАСС % Выходные данные: %wGPS- номер недели GPS; % weekday- день недели. %Используемые константы: % сдвиг времени между UTC и системным временем GPS на начало 2004 года %diff_UTC_GPS = 13;(до конца 2003 года) diff_UTC_GPS = 14;%(с 2004 года) %количество дней в месяцах DnMon = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 59 % юлианский день начала отсчета недели GPS на ноль часов UTC c 5 на 6 % января 1980 года. wGPS_0 = 2444244.5; % Расчет номеров юлианского дня и дня года, от которого отсчитываются дни ГЛОНАСС year =2003; mon=12; day=31; [JD, day_year] = JD_data(year, mon, day); %Сдвиг на ноль часов UTC на гривчском меридиане JD = JD - 0.5; %Расчет номера GPS неделе стандартной функцией MatLab "floor" wGPS = floor((JD+Na - wGPS_0) / 7); %Расчет дня недели стандартной функцией MatLab "mod" weekday = mod((JD+Na - wGPS_0) , 7); Файл PR_time_gps_GLON.m %Имя m- файла:PR_time_gps_GLON.m %Пример2 расчет функции week_GLONAS_gps(Na) Na=901; [wGPS,weekday] = week_GLONAS_gps(Na) % ответ: wGPS = 1380; weekday = 1 3.4.2 Функции и файлы из папки TIME_S0 Папка TIME_S0 расчет истинного и среднего звездного времени. Расчет истинно- го звездного времени на 0 часов UTC предусматривается алгоритмом расчета эфемерид спутника ГДОНАСС на текущий момент времени. Истинное звездное время рассчитыва- ется по следующим программам. Функция s0_Nut function [s0_m_mod, s0_nut_mod,s0_m_hour, s0_m_min, s0_m_sec, s0_nut_hour, s0_nut_min, s0_nut_sec] = s0_Nut(year, mon, day, nut) %Имя: s0_Nut %функция рассчитывает истинное и среднее звездное время по формулам ( ) % среднее звездное время s0 на 0ч UTC %year = 1993; mon = 1; day = 0; %fprintf('function s0_m - start \n'); jd2000 = 2451545; % 12h UTC 1 января % Применить функцию JD_data [jd, day_year] = JD_data(year, mon, day); 60 if (jd == NaN) s0_mod = NaN; h = NaN; min = NaN; sec = NaN; fprintf('function s0_m - end0 \n'); return; end; jd = jd - 0.5; d = jd - jd2000; t = d / 36525.0; % 36525 - юлианский период 100 лет t2 = t * t; h1 = 24110.54841; %h1=6.0*3600.0+41.0*60.0+50.54841; % h2 = 236.555367908 * d; h2 = 8640184.812866 * t ; h3 = 0.093104 * t2; h4 = t2 * t * 6.2E-6; if (nut == 0) na = 0; else na = utc_nut(t); end; s0_m = h1 + h2 + h3 - h4; s0_nut = s0_m + na; s0_m_mod = mod(s0_m, 86400); s0_day = floor(s0_m / 86400); s0_m_hour = s0_m_mod / 3600.0; s0_m_hour = floor(s0_m_mod / 3600); sec_min = s0_m_mod - s0_m_hour * 3600; s0_m_min = floor(sec_min / 60); s0_m_sec = sec_min - s0_m_min * 60; s0_nut_mod = mod(s0_nut, 86400); s0_day = floor(s0_nut / 86400); s0_nut_hour = s0_nut_mod / 3600.0; s0_nut_hour = floor(s0_nut_mod / 3600); sec_min = s0_nut_mod - s0_nut_hour * 3600; s0_nut_min = floor(sec_min / 60); s0_nut_sec = sec_min - s0_nut_min * 60; Функция utc_nut function nut = utc_nut(t) %Имя: utc_nut %функция рассчитывает формулы ( ) %t =6.023472005475702e+002; 61 R = 1296000; % ( 1r=360grad=1 296 000 cek) RAD_SEK_ANGL = pi/(3600*180); t2 = t * t; t3 = t2 * t; l = 485866.733 + (1325.0 * R + 715922.633) * t + 31.310 * t2 + 0.064 * t3;%1.034807679476340e+012 l1 = 1287099.804 + (99 * R + 1292581.224) * t - 0.577 * t2 - 0.012 * t3; f = 335778.877 + (1342 * R + 295263.137) * t - 13.257 * t2 + 0.011 * t3; dd = 1072261.307 + (1236 * R + 1105601.328) * t - 6.891 * t2 + 0.019 * t3; omega = 450160.280 - (5 * R + 482890.539) * t + 7.455 * t2 + 0.008 * t3; eps0 = 84381.448 - 46.8150 * t - 0.00059 * t2 + 0.001813 * t3; % eps0 = 84381.447996 - 46.8150 * t - 0.00059 * t2 + 0.001813 * t3; eps_d = utc_nut_fi_eps(t, l, l1, f, dd, omega, 'd','e'); eps_k = utc_nut_fi_eps(t, l, l1, f, dd, omega, 'k','e'); eps = eps0 + eps_d + eps_k; cos_eps = cos(RAD_SEK_ANGL * eps ) / 15.0; d_fi = utc_nut_fi_eps(t, l, l1, f, dd, omega, 'd', 'f'); k_fi = utc_nut_fi_eps(t, l, l1, f, dd, omega, 'k', 'f'); nut1 = d_fi * cos_eps; nut2 = k_fi * cos_eps; % nut3 = 0.00264 * sin(omega) + 0.000063 * sin(2.0 * omega) формула ( ) nut3 = 0; nut1_dop = nut1; nut2_dop = nut2; nut3_dop = nut3; nut = nut1 + nut2 + nut3; Функция koef function[koef_id, koef_abd, koef_ik, koef_abk] = koef % Имя:koef % функция содержит коэффициенты табл. и табл. koef_id = [ 0, 0, 0, 0, 1 ; % 1 0, 0, 0, 0, 2 ; % 2 -2, 0, 2, 0, 1 ; % 3 2, 0,-2, 0, 0 ; % 4 -2, 0, 2, 0, 2 ; % 5 1,-1, 0,-1, 0 ; % 6 0,-2, 2,-2, 1 ; % 7 2, 0,-2, 0, 1 ; % 8 0, 0, 2,-2, 2 ; % 9 0, -1, 0, 0, 0 ; % 10 % исправлено 0, 1, 2,-2, 2 ; % 11 0,-1, 2,-2, 2 ; % 12 0, 0, 2,-2, 1 ; % 13 62 -2, 0, 0,2, 0 ; % 14 % исправлено 0, 0, 2,-2, 0 ; % 15 0, 2, 0, 0, 0 ; % 16 0, 1, 0, 0, 1 ; % 17 0, 2, 2,-2, 2 ; % 18 0,-1, 0, 0, 1 ; % 19 -2, 0, 0, 2, 1 ; % 20 0,-1, 2,-2, 1 ; % 21 2, 0, 0,-2, 1 ; % 22 0, 1, 2,-2, 1 ; % 23 1, 0, 0,-1, 0 ; % 24 2, 1, 0,-2, 0 ; % 25 0, 0,-2, 2, 1 ; % 26 0, 1,-2, 2, 0 ; % 27 0, 1, 0, 0, 2 ; % 28 -1, 0, 0, 1, 1 ; % 29 0, 1, 2,-2, 0 ];% 30 koef_abd = [ -171996.0,-174.2, 92025.0, 8.9; % 1 2062.0, 0.2, -895.0, 0.5; % 2 46.0, 0.0, -24.0, 0.0; % 3 11.0, 0.0, 0.0, 0.0; % 4 -3.0, 0.0, 1.0, 0.0; % 5 -3.0, 0.0, 0.0, 0.0; % 6 -2.0, 0.0, 1.0, 0.0; % 7 1.0, 0.0, 0.0, 0.0; % 8 -13187.0, -1.6, 5736.0,-3.1; % 9 -1426.0, 3.4, 54.0,-0.1; % 10 % исправлено -517.0, 1.2, 224.0,-0.6; % 11 217.0, -0.5, -95.0, 0.3; % 12 129.0, 0.1, -70.0, 0.0; % 13 -48.0, 0.0, 1.0, 0.0; % 14 % исправлено -22.0, 0.0, 0.0, 0.0; % 15 17.0, -0.1, 0.0, 0.0; % 16 -15.0, 0.0, 9.0, 0.0; % 17 -16.0, 0.1, 7.0, 0.0; % 18 -12.0, 0.0, 6.0, 0.0; % 19 -6.0, 0.0, 3.0, 0.0; % 20 -5.0, 0.0, 3.0, 0.0; % 21 4.0, 0.0, -2.0, 0.0; % 22 4.0, 0.0, -2.0, 0.0; % 23 -4.0, 0.0, 0.0, 0.0; % 24 63 1.0, 0.0, 0.0, 0.0; % 25 1.0, 0.0, 0.0, 0.0; % 26 -1.0, 0.0, 0.0, 0.0; % 27 1.0, 0.0, 0.0, 0.0; % 28 1.0, 0.0, 0.0, 0.0; % 29 -1.0, 0.0, 0.0, 0.0]; % 30 koef_ik = [ 0, 0, 2, 0, 2; % 31 1, 0, 0, 0, 0; % 32 0, 0, 2, 0, 1; % 33 1, 0, 2, 0, 2; % 34 1, 0, 0,-2, 0; % 35 -1, 0, 2, 0, 2; % 36 0, 0, 0, 2, 0; % 37 1, 0, 0, 0, 1; % 38 -1, 0, 0, 0, 1; % 39 -1, 0, 2, 2, 2; % 40 1, 0, 2, 0, 1; % 41 0, 0, 2, 2, 2; % 42 2, 0, 0, 0, 0; % 43 1, 0, 2,-2, 2; % 44 2, 0, 2, 0, 2; % 45 0, 0, 2, 0, 0; % 46 -1, 0, 2, 0, 1; % 47 -1, 0, 0, 2, 1; % 48 1, 0, 0,-2, 1; % 49 -1, 0, 2, 2, 1; % 50 1, 1, 0,-2, 0; % 51 0, 1, 2, 0, 2; % 52 0,-1, 2, 0, 2; % 53 1, 0, 2, 2, 2; % 54 1, 0, 0, 2, 0; % 55 2, 0, 2,-2, 2; % 56 0, 0, 0, 2, 1; % 57 0, 0, 2, 2, 1; % 58 1, 0, 2,-2, 1; % 59 0, 0, 0,-2, 1; % 60 1,-1, 0, 0, 0; % 61 2, 0, 2, 0, 1; % 62 0, 1, 0,-2, 0; % 63 1, 0,-2, 0, 0; % 64 0, 0, 0, 1, 0; % 65 1, 1, 0, 0, 0; % 66 64 1, 0, 2, 0, 0; % 67 1,-1, 2, 0, 2; % 68 -1,-1, 2, 2, 2; % 69 -2, 0, 0, 0, 1; % 70 3, 0, 2, 0, 2; % 71 0,-1, 2, 2, 2; % 72 1, 1, 2, 0, 2; % 73 -1, 0, 2,-2, 1; % 74 2, 0, 0, 0, 1; % 75 1, 0, 0, 0, 2; % 76 3, 0, 0, 0, 0; % 77 0, 0, 2, 1, 2; % 78 -1, 0, 0, 0, 2; % 79 1, 0, 0,-4, 0; % 80 -2, 0, 2, 2, 2; % 81 -1, 0, 2, 4, 2; % 82 2, 0, 0,-4, 0; % 83 1, 1, 2,-2, 2; % 84 1, 0, 2, 2, 1; % 85 -2, 0, 2, 4, 2; % 86 -1, 0, 4, 0, 2; % 87 1,-1, 0,-2, 0; % 88 2, 0, 2,-2, 1; % 89 2, 0, 2, 2, 2; % 90 1, 0, 0, 2, 1; % 91 0, 0, 4,-2, 2; % 92 3, 0, 2,-2, 2; % 93 1, 0, 2,-2, 0; % 94 0, 1, 2, 0, 1; % 95 -1,-1, 0, 2, 1; % 96 0, 0,-2, 0, 1; % 97 0, 0, 2,-1, 2; % 98 0, 1, 0, 2, 0; % 99 1, 0,-2,-2, 0; % 100 0,-1, 2, 0, 1; % 101 1, 1, 0,-2, 1; % 102 1, 0,-2, 2, 0; % 103 2, 0, 0, 2, 0; % 104 0, 0, 2, 4, 2; % 105 0, 1, 0, 1, 0]; % 106 koef_abk = [-2274.0, -0.2, 977.0, -0.5; % 31 712.0, 0.1, -7.0, 0.0; % 32 65 -386.0, -0.4, 200.0, 0.0; % 33 -301.0, 0.0, 129.0, -0.1; % 34 -158.0, 0.0, -1.0, 0.0; % 35 123.0, 0.0, -53.0, 0.0; % 36 63.0, 0.0, -2.0, 0.0; % 37 63.0, 0.1, -33.0, 0.0; % 38 -58.0, -0.1, 32.0, 0.0; % 39 -59.0, 0.0, 26.0, 0.0; % 40 -51.0, 0.0, 27.0, 0.0; % 41 -38.0, 0.0, 16.0, 0.0; % 42 29.0, 0.0, -1.0, 0.0; % 43 29.0, 0.0, -12.0, 0.0; % 44 -31.0, 0.0, 13.0, 0.0; % 45 26.0, 0.0, -1.0, 0.0; % 46 21.0, 0.0, -10.0, 0.0; % 47 16.0, 0.0, -8.0, 0.0; % 48 -13.0, 0.0, 7.0, 0.0; % 49 -10.0, 0.0, 5.0, 0.0; % 50 -7.0, 0.0, 0.0, 0.0; % 51 7.0, 0.0, -3.0, 0.0; % 52 -7.0, 0.0, 3.0, 0.0; % 53 -8.0, 0.0, 3.0, 0.0; % 54 6.0, 0.0, 0.0, 0.0; % 55 6.0, 0.0, -3.0, 0.0; % 56 -6.0, 0.0, 3.0, 0.0; % 57 -7.0, 0.0, 3.0, 0.0; % 58 6.0, 0.0, -3.0, 0.0; % 59 -5.0, 0.0, 3.0, 0.0; % 60 5.0, 0.0, 0.0, 0.0; % 61 -5.0, 0.0, 3.0, 0.0; % 62 -4.0, 0.0, 0.0, 0.0; % 63 4.0, 0.0, 0.0, 0.0; % 64 -4.0, 0.0, 0.0, 0.0; % 65 -3.0, 0.0, 0.0, 0.0; % 66 3.0, 0.0, 0.0, 0.0; % 67 -3.0, 0.0, 1.0, 0.0; % 68 -3.0, 0.0, 1.0, 0.0; % 69 -2.0, 0.0, 1.0, 0.0; % 70 -3.0, 0.0, 1.0, 0.0; % 71 -3.0, 0.0, 1.0, 0.0; % 72 2.0, 0.0, -1.0, 0.0; % 73 -2.0, 0.0, 1.0, 0.0; % 74 66 2.0, 0.0, -1.0, 0.0; % 75 -2.0, 0.0, 1.0, 0.0; % 76 2.0, 0.0, 0.0, 0.0; % 77 2.0, 0.0, -1.0, 0.0; % 78 1.0, 0.0, -1.0, 0.0; % 79 -1.0, 0.0, 0.0, 0.0; % 80 1.0, 0.0, -1.0, 0.0; % 81 -2.0, 0.0, 1.0, 0.0; % 82 -1.0, 0.0, 0.0, 0.0; % 83 1.0, 0.0, -1.0, 0.0; % 84 -1.0, 0.0, 1.0, 0.0; % 85 -1.0, 0.0, 1.0, 0.0; % 86 1.0, 0.0, 0.0, 0.0; % 87 1.0, 0.0, 0.0, 0.0; % 88 1.0, 0.0, -1.0, 0.0; % 89 -1.0, 0.0, 0.0, 0.0; % 90 -1.0, 0.0, 0.0, 0.0; % 91 1.0, 0.0, 0.0, 0.0; % 92 1.0, 0.0, 0.0, 0.0; % 93 -1.0, 0.0, 0.0, 0.0; % 94 1.0, 0.0, 0.0, 0.0; % 95 1.0, 0.0, 0.0, 0.0; % 96 -1.0, 0.0, 0.0, 0.0; % 97 -1.0, 0.0, 0.0, 0.0; % 98 -1.0, 0.0, 0.0, 0.0; % 99 -1.0, 0.0, 0.0, 0.0; % 100 -1.0, 0.0, 0.0, 0.0; % 101 -1.0, 0.0, 0.0, 0.0; % 102 -1.0, 0.0, 0.0, 0.0; % 103 1.0, 0.0, 0.0, 0.0; % 104 -1.0, 0.0, 0.0, 0.0; % 105 1.0, 0.0, 0.0, 0.0]; % 106 Функция utc_nut_fi_eps function nut_fi_eps = utc_nut_fi_eps(t, l, l1, f, dd, omega, typ_nut, fi_eps) % Имя:utc_nut_fi_eps %функция рассчитывает нутацию % применить функцию koef [koef_id, koef_abd, koef_ik, koef_abk] = koef; RAD_SEK_ANGL = pi/(3600*180); if (typ_nut == 'd') 67 n = 30; else n = 76; end; sum_a = 0; sum_b = 0; for i = 1 : n if (typ_nut == 'd') s1 = koef_id(i,1) * l + koef_id(i,2) * l1 + koef_id(i,3) * f + koef_id(i,4) * dd + koef_id(i,5) * omega; if (fi_eps == 'f') a = koef_abd(i,1) * 1e-4; bt = koef_abd(i,2) * 1e-4; else a = koef_abd(i,3) * 1e-4; bt = koef_abd(i,4) * 1e-4; end; else s1 = koef_ik(i,1) * l + koef_ik(i,2) * l1 + koef_ik(i,3) * f + koef_ik(i,4) * dd + koef_ik(i,5) * omega; if (fi_eps == 'f') a = koef_abk(i,1) * 1e-4; bt = koef_abk(i,2) * 1e-4; else a = koef_abk(i,3) * 1e-4; bt = koef_abk(i,4) * 1e-4; end; end; if (fi_eps == 'f') sin_s1 = sin(RAD_SEK_ANGL * s1); sa = a * sin_s1; sb = bt * sin_s1; else cos_s1 = cos(RAD_SEK_ANGL * s1); sa = a * cos_s1; sb = bt * cos_s1; end; arg = RAD_SEK_ANGL * s1; sum_a = sum_a + sa; sum_b = sum_b + sb; end; nut_fi_eps = sum_a + sum_b * t; Указание 1 68 К функциям s0_Nut, utc_nut, : koef, utc_nut_fi_eps, необходимо добавить функции JD_epohi, JD_data и выполнить расчет на требуемую дату, ориентируясь на пример Файл PR_s0_Nut.m %Пример расчета истинного и среднего звездного времени %Для истинного времени nut=1, для среднего nut=0 year=1994; mon= 7; day=16; nut=1; [s0_m_mod, s0_nut_mod,s0_m_hour, s0_m_min, s0_m_sec, s0_nut_hour, s0_nut_min, s0_nut_sec] = s0_Nut(year, mon, day, nut); [s0_m_mod, s0_nut_mod,s0_m_hour, s0_m_min, s0_m_sec, s0_nut_hour, s0_nut_min, s0_nut_sec]' % Решение для приведенного примера %s0_m_mod= 70464.3120260519 %s0_nut_mod=70465.1816369200 %s0_m_hour=0.00190000000000 %s0_m_min=0.00340000000000 %s0_m_sec=0.00243120260519 %s0_nut_hour=19 часов %s0_nut_min= 34 минуты %s0_nut_sec=25.1816369200 секунд 69 |