Файл: Учебное пособие ( Лабораторный практикум на компьютере ) Київ 2008 1.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 349
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
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
%Расчет номера дня года 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
%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
Указание 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
1 2 3 4 5 6 7 8 9 ... 14