Хорошая навость! Нашел в интернете одну весьма апетитную штуковину.
Оказывается НАСА предоставляет программныей интерфейс для работы со своими JPL эфемеридами в системе MatLab (а так же, библиотеки для Visual C, GCC, и fortran), называется это чудо SPICE, распологается на сайте http://naif.jpl.nasa.gov/naif/ .
В общем пока до конца не разобрался в этом деле, пытаюсь читать документацию, система действительно не простая, но с точки зрения использования в астрологической статистике, - перспективы просто завораживающие!
И так, попробую рассказать, как подключить эту систему к Matlab.
1. Идем сюда: ftp://naif.jpl.nasa.gov/pub/naif/too...2bit/packages/ и скачиваем файл mice.exe (а заодно, и другие мелкие файл, там инструкция по установки на инглише).
2. Распаковываем это чудо в папку, где у вас установлен Matlab, на пример, у меня это "c:\MATLAB701\".
И сразу же, небольшая тонкость, там в папке "c:\MATLAB701\mice\lib\" есть такой файл: "mice.mexw32" , если в вашей версии MatLab'а он не захочет подключаться, как это произошло у меня, переименовываем его в "mice.mex".
3. Далее идем сюда: ftp://naif.jpl.nasa.gov/pub/naif/gen...s/spk/planets/ и качаем файлы: de421.bsp и de421.cmt, (документация к ним тут же в файлах: de421_announcement.pdf и de421_lunar_ephemeris_and_orientation.pd f), в них содержатся самые последние и точные на сегоднешний день эфемериды DE421, в терминологии системы SPICE эти файлы называются ядрами (karnels).
Весят они всего на всего 16 мегобайт, но к сожалению, охватывают слишком маленький интервал времени, всего с 1900 по 2050 годы.
Если нужно что-нибудь в более широким временим интервалом, идем в папку "/a_old_versions/" и качаем, на пример, DE408 (файлы de408.bsp, de408.cmt, de408.inp). DE408 это то же самое, что и DE406, единственое отличие в том, что временной интервал в них расширен с 10 тысячилетия до н.э. по 10 тыс. лет. нашей эры (вместо 3 тыс. до н.э./н.э.), но предупреждаю сразу, весят они целый гигобайт. Самих же DE406 почему-то нет, а та версия что, лежит на сайте швейцарских эфемерид по моему не того формата, хотя надо порпобовать, может подключится...
Если вам нужно что-нить по легче, рекомендую de414, они охватывают интервал с 1599 по 2201 годы, для большинства задач вполне подойдут, и весят всего 60 МБ.
5. Так же, если вам нужно, можно скачать ядра разных орбитальных телескопов, естественых и искусственых спутников планет, космических миссий и т.д. и т.п. ftp://naif.jpl.nasa.gov/pub/naif/
6. Теперь запускаем MatLab.
Вводим команды:
>> addpath('C:\MATLAB701\mice\src\mice\')
>> addpath('C:\MATLAB701\mice\lib\')
Потом вводим команду:
>> which mice
Если все подключилось удачно, появится надпись: "C:\MATLAB701\mice\lib\mice.mex"
Если нет, переименовываем файл "mice.mexw32" в "mice.mex" с сново пробуем команду:
>> which mice
7. Теперь подключаем эфемериды, сделать это можно командой
>> cspice_furnsh('C:\MATLAB701\mice\data\de 421.bsp')
(Обязательно указывайте полный путь к файлу de421.bsp, у меня без этого почеум-то не хотело подключаться).
Теперь подключаем ядро временых поправок:
>> cspice_furnsh('C:\MATLAB701\mice\data\na if0009.tls')
И все, в принципе можно пользоваться.
8. Давайте попробуем вычислить координаты, кажется Луны, кажется на сегодня, кажется в прямоугольной системе координат (ес ли честно еще не разобрался в функциях и в том, как в этой системе координаты переводить, толкьо вчера поставил ).
В результате чего, программа выдаст нам вот такую загагулину:
state =
1.0e+005 *
-3.2793
-1.6567
-1.0835
0.0000
-0.0000
-0.0000
lt =
1.2777
*****
Недостатки:
1. Нет специфических для астрологических исследований функций (Асц, МС, системы домов, аспекты и т.д.), но это дело поправимо, эти функции всегда можно дописать, главное эфемеридное ядро.
2. Система очень сложная, я убил пол дня, только на то, чтобы разобраться, как к её подключить, и думаю, что уйдет неделя на изучение функций.
3. Для более или менее полноценной работы, нужно грузить очень много файлов большого объема.
Приимущества:
1. В MatLab имеется шикарнейший пакет статистических функций, и вообще чего, там только нет.
2. В MatLab по сути своей заточен на матричную алгебру, что гораздо удобней, быстрей и экономичней, по сравнению с таблицами Excel.
На пример, если нам нужно сложить 2 столбца с данными, в Excel'е придется вводить формулу для сложения 2х ячеек, а потом её вручную копировать на 10000 остальныхъ ячеек, что при большом объеме данных не очень-то удобно. В то время, как в MatLab достаточно прсто написать C=A+B
3. Планеты вычисляются явно на порядок быстрей по сравнению с использованием Швейцарских эфемерид в Excel.
В общем, думаю, со временем из всего этого можно сделать отличный инструмент для астрологических исследований.
Спасибо большое за подсказку!
Вот результат Вашего примера у меня:
>> et = cspice_str2et('Nov 15, 2009')
et =
3.115152661827379e+008
>> [state,lt] = cspice_spkezr( 'MOON' , ...
et , ...
'J2000', ...
'NONE' , ...
'EARTH' )
state =
-3.279327470694660e+005
-1.656735259926945e+005
-1.083460408138630e+005
4.930845619716319e-001
-8.336137698406330e-001
-3.514793890952423e-001
lt =
1.277713634827687e+000
Сейчас и я начинаю нелегкий путь осваивания!!!
А я его забросил, решил, что все-таки легче по пути Швейцарских эфемерид пойти
... хотя можно сделать гибрид JPL и ШЭ для матлаба, там ведь есть возможности, которых нет в ШЭ, хотя с другой стороны ШЭ они все же под астрологию заточены
А я его забросил, решил, что все-таки легче по пути Швейцарских эфемерид пойти
... хотя можно сделать гибрид JPL и ШЭ для матлаба, там ведь есть возможности, которых нет в ШЭ, хотя с другой стороны ШЭ они все же под астрологию заточены
оттолкнувшис от этой темы я немножечко всем помогу:
По поводу "нестыковок" между ZET, SPICE и Швейцарскими эфемеридами и прочими программами - в большинстве случаев ларчик тут просто открывается:
- Системы координат, которые используется в астрологии - немного устарели и отличаются от современных рекомендаций МАС.
- В астрологии нет единого мнения на счет того, что "правильней" использовать ли "видимые" координаты или "истинные". В частности не ясно: нужен ли учет параллакса, следует ли использовать поправки на скорость света, его деформацию гравитационным полем Солнца, стоит ли учитывать атмосферные эффекты и т.д. и т.п. Поэтому разные авторы программ делают кто во что горазд или просто не замечают этих тонкостей.
- Разные авторы программ по-разному округляют временные и угловые минуты/секунды. В ШЭ, например, можно вводить не только целую часть секунды, но и её десятичную часть, но на практике это мало кто делает, все округляется до секунд. В результате после множественных преобразований времени/координат - конечный результат может сильно отличаться от того, что должно быть.
По отдельности все это мелочи (если говорить об астрологических задачах), а в сумме может получиться "сюрприз"
Так что я бы не стал писать так:
Цитата:
Популярные 'швейцарские эфемериды' - лишь подобие эфемерид НАСА.
На самом деле они являются довольно точной интерполяцией JPL эфемерид. Разница ставится заметной, когда Вы отправляете марсоход на Марс или пытаетесь послать лазерный луч в определенную точку на поверхности Луны.
Для тех задач, которые решаете Вы - эфемериды фактически идентичны, если конечно Вы правильно настроили все поправки, выбрали идентичные системы координат и все правильно округлили.
Цитата:
Решил посчитать напрямую из 'швейцарских эфемерид', от которых отталкивается ZET, но фирменный интерфейс SWISS оказался платным.
Платным он становится лишь только тогда, когда Вы на их основе пишите программу, которую используете в коммерческих целях или бесплатную, но с закрытым исходным кодом. В остальных случаях - они распространяются по бесплатной лицензии GPL.
Подскажите плз - для внутренних планет все работает,
а для Юпитера и дальше - нет. В чем может быть причина ?
MFILE:
addpath('C:\MATLAB6p5\mice\src\mice\')
addpath('C:\MATLAB6p5\mice\lib\')
which mice
cspice_furnsh('C:\MATLAB6p5\mice\data\de 430.bsp')
cspice_furnsh('C:\MATLAB6p5\mice\data\na if0010.tls')
cspice_furnsh('C:\MATLAB6p5\mice\data\pc k00010.tpc')
et = cspice_str2et('Jan 1, 2000')
[ pos, ltime ] = cspice_spkezr('JUPITER', et, 'J2000','NONE', 'EARTH' )
MATLAB:
et = -4.3136e+004
??? SPICE(SPKINSUFFDATA): [spkezr_c->SPKEZR->SPKEZ->SPKGEO] Insufficient ephemeris data has been loaded to compute the state of 599 (JUPITER) relative to 399 (EARTH) at the ephemeris epoch 2000 JAN 01 00:01:04.183.
Error in ==> E:\Astro\analys.m
On line 14 ==> [ pos, ltime ] = cspice_spkezr('JUPITER', et, 'J2000','NONE', 'EARTH' )
Подскажите плз - для внутренних планет все работает,
а для Юпитера и дальше - нет. В чем может быть причина ?
MFILE:
addpath('C:\MATLAB6p5\mice\src\mice\')
addpath('C:\MATLAB6p5\mice\lib\')
which mice
cspice_furnsh('C:\MATLAB6p5\mice\data\de 430.bsp')
cspice_furnsh('C:\MATLAB6p5\mice\data\na if0010.tls')
cspice_furnsh('C:\MATLAB6p5\mice\data\pc k00010.tpc')
et = cspice_str2et('Jan 1, 2000')
[ pos, ltime ] = cspice_spkezr('JUPITER', et, 'J2000','NONE', 'EARTH' )
MATLAB:
et = -4.3136e+004
??? SPICE(SPKINSUFFDATA): [spkezr_c->SPKEZR->SPKEZ->SPKGEO] Insufficient ephemeris data has been loaded to compute the state of 599 (JUPITER) relative to 399 (EARTH) at the ephemeris epoch 2000 JAN 01 00:01:04.183.
Error in ==> E:\Astro\analys.m
On line 14 ==> [ pos, ltime ] = cspice_spkezr('JUPITER', et, 'J2000','NONE', 'EARTH' )
======================================== =======================
Добрый день, i-mir! Я тоже сталкивался с этой проблемой!(
Насколько я понял, для внешних планет начиная с Юпитера, SPICE рассчитывает координаты только для барицентра планеты (планета+спутники). Т.к. пакет SPICE заточен под космические полёты и расчёты идут в барицентрической системе координат. Но т.к. масса спутников несоизмеримо меньше чем масса основной планеты то, я думаю, что можно пренебречь этой маленькой не точностью. Для этого вместо названия планет, начиная с Юпитера, надо использовать числовые имена ,барицентра планеты. Т.е. Юпитер - 5, Сатурн - 6, Уран - 7, Нептун - 8, Плутон - 9. В составе пакета SPICE есть утилита brief.exe, она позволяет просмотреть данные о файлах DExxx.bsp. Удачи!!!