A A A A Автор Тема: Программирование ...  (Прочитано 4290 раз)

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

XeniX

  • Гость
Программирование ...
« : 08 Фев 2004 [09:56:09] »
Написал пару программ:
Положение БКП на Юпитере - http://raxnv.stsland.ru/freesoft/Jupiter.exe
В точности не уверен. Но думаю программа полезна ЛА.
Тестирование скорости ЦПУ - http://raxnv.stsland.ru/freesoft/tester.exe
« Последнее редактирование: 08 Фев 2004 [19:58:11] от AHTOXA »

Оффлайн Iskandar

  • *****
  • Сообщений: 5 658
  • Благодарностей: 109
    • Сообщения от Iskandar
Re:Программирование.
« Ответ #1 : 08 Фев 2004 [10:52:56] »
Обычно программы выкладывают, когда уверены в точности. Проще будет в Cartes du Ciel посмотреть - хоть уверенность будет...
"Душа без воображения - всё равно, что обсерватория без телескопа" (Генри Уорд Бигер)

XeniX

  • Гость
Re:Программирование.
« Ответ #2 : 08 Фев 2004 [11:19:46] »
А не легче с интернета скачать 45кб прогу чем 5 мег планетария? Ну не знаю. просто захотелось написать такую удобную программу, в которой можно вывести прогноз видимости БКП. Все кто занимается программированием на VisualBasic помогите вот с чем: я не могу из определённой даты+время отнять 1 час! Например "01.01.01 05:34:23 - 01:00" VisualBasic выдаёт ошибку!
На счёт тестера. Прошу всех, кто скачал программу и протестировал свой ЦПУ(процессор) на скорость объявить результаты в этой теме, указав процессор+результат+ОС

Я тестировал 2 компа:
Celeron 667Mhz :
==1068(Win98)
==1907(WinXP)
Celeron 500 Mhz :
==1578(WinXP)

Выяснилось, что XP обрабатывает математические и форменные функции в 1,786 раз быстрее 98

Оффлайн drammer

  • ****
  • Сообщений: 276
  • Благодарностей: 13
  • Нетвёрдой рукой держит руль механизатор А.Репов...
    • Сообщения от drammer
Re:Программирование.
« Ответ #3 : 08 Фев 2004 [11:19:48] »
А вирусов-троянчиков в твоих exe-шниках случаем нет?  :o А то, АНТОХА, милок, давно уже примечаю за тобой хаккерские наклонности...  ;) ;D

XeniX

  • Гость
Re:Программирование.
« Ответ #4 : 08 Фев 2004 [11:21:35] »
Вирусов нет! Давно этим не занимаюсь  ;D

shandrik

  • Гость
Re:Программирование.
« Ответ #5 : 08 Фев 2004 [11:46:27] »
Все кто занимается программированием на VisualBasic помогите вот с чем: я не могу из определённой даты+время отнять 1 час! Например "01.01.01 05:34:23 - 01:00" VisualBasic выдаёт ошибку!

VB не занимаюсь, т.к. вот уже десять лет в восторге от Борландских компиляторов, но вижу, что формат в приведенном выражении у уменьшаемого и вычитаемого разный. Следует привести к одному. НО! очень тебе рекомендую прочитать про юлианские дни и написать (за 5 минут) две подпрограммы перевода туда (дату_время -> юлианскую дату) и обратно. Если любишь программирование и астрономию и собираешься (я в этом уверен) ещё писать микропрограммки для эфемерид, то эти две подпрограммы будут самыми используемыми.

XeniX

  • Гость
Re:Программирование ;D
« Ответ #6 : 08 Фев 2004 [12:04:28] »
Да нет вот как раз форматы одинаковые. Всё нормально при сложении(дата&время + 1:00) а вот вычитание(дата&время-01:00) не работает почемуто?

Попробую почитать. только где.

Nika

  • Гость
Re:Программирование ...
« Ответ #7 : 08 Фев 2004 [18:07:21] »
Вообще-то, действительно: при всевозможных манипуляциях с датой/временем возникает неожиданно большое количество проблем (всякие там переходы через дату, и проч) - и все эти проблемы решаются раз и навсегда при вычислении в юлианских днях!
То есть, исходные дата/время переводим в JD, делаем с ним всего, чего захочем, и возвращаем обратно в дата/время!

XeniX

  • Гость
Re:Программирование ...
« Ответ #8 : 08 Фев 2004 [19:56:11] »
Вообще-то, действительно: при всевозможных манипуляциях с датой/временем возникает неожиданно большое количество проблем (всякие там переходы через дату, и проч) - и все эти проблемы решаются раз и навсегда при вычислении в юлианских днях!
То есть, исходные дата/время переводим в JD, делаем с ним всего, чего захочем, и возвращаем обратно в дата/время!
И как это сделать? Я для этого и создал тему - чтоб получить дельные советы.

Вроде мои программы не качаются...щас исправлю...Теперь качаются! жду первых оценок!
« Последнее редактирование: 08 Фев 2004 [20:01:15] от AHTOXA »

Nika

  • Гость
Re:Программирование ...
« Ответ #9 : 09 Фев 2004 [02:15:44] »
Готовые процедуры "туда"/"сюда" тут же, в Электронной Астрономии, выкладывал когда-то Анатолий, в темах, где обсуждался расчет восходов/заходов и затмений. Там они были написаны на Паскале. Вот то же самое на Бейсике, только это не VB, а простой Бейсик, допотопный ДОСовский, но это не принципиально.
-------------------------------------
def fnJDg (D, IM,IY)

local  JN, IYY, IMM, IA, IB, IS, GRDAT, JD

   IF ( IM > 2 )  THEN
       IYY = IY
       IMM = IM + 1
   ELSE
       IYY = IY - 1
       IMM = IM + 13
   END if

   IF ( IYY = 0 ) THEN
       IS = 1
   ELSE
       IS  = fix ( IYY / ABS ( IYY ) )
       IYY = ABS ( IYY )
   END if

   GRDAT = IYY * 10000.0 + IMM * 100.0 + D

   IF ( IS > 0 )  THEN
       IB = 0

       IF ( GRDAT >= 15821115.0 )  THEN
          IA = fix ( IYY / 100 ) * IS
          IB = 2 - IA + fix ( ABS ( IA ) / 4 ) * IS
       END if

       JD = 1720994.5 + D + fix( 365.25  * IYY ) + fix(  30.6001 * IMM ) + IB
   ELSE
       JD = 1720994.5 + D - fix( 365.25  * IYY + 0.75 ) +fix(  30.6001 * IMM )
   end if

   fnJDg=JD

END def
----------------------------------------
sub arcJDg (RJD,day,mon,IYEAR)

   JD = RJD + 0.5

   IZ = FIX ( JD )
   F  = JD - IZ

   IF ( IZ < 2299161 )  THEN
       IA = IZ
   ELSE
      IAL  = FIX ( ( IZ - 1867216.25 ) / 36524.25 )
      IAL4 = FIX ( IAL / 4 )
      IA  = IZ + 1 + IAL - IAL4
   end if
   IB = IA + 1524
   IC = FIX ( ( IB - 122.1 ) / 365.25 )
   ID = FIX ( 365.25 * IC )
   IE = FIX ( ( IB - ID ) / 30.6001 )

   DAY = F + IB - ID - FIX ( IE * 30.6001 )

   IF ( IE  <=  13 )  THEN
       MON = IE - 1
   ELSE
       MON = IE - 13
   end if
   IF ( MON  >  2 )  THEN
       IYEAR = IC - 4716
   ELSE
       IYEAR = IC - 4715
   end if
END sub
--------------------------------
Здесь первая сделана в виде "функции", вторая - в виде "процедуры" (можно и переделать).
Следует позаботиться, чтобы употреблялись числа максимально возможной точности - то есть, значение "дня" должно позволять различить доли секунд.
Пример употребления:
jd=fnjdg(day,mon,year)+(hrs-timezone-dst)/24+min/1440+sec/86400  'jd на hh:mm:ss местного поясного летнего времени
----------------------------------------
Между прочим, если не пользоваться таким способом, то некоторые с виду простейшие задачи оказываются неожиданно сложными - например, например, определить дату/время в Нью-Йорке на текущий момент нашего местного времени... ("в уме" решается мгновенно, а в программе - далеко не так просто).
« Последнее редактирование: 09 Фев 2004 [03:00:49] от Nika »

XeniX

  • Гость
Re:Программирование ...
« Ответ #10 : 09 Фев 2004 [07:45:03] »
Привет всем! Вот залил 100% работающую версию. Прозвал её не 1.0 а 1.1! С датами разобрался. Вот теперь надо с этим разобраться и как только разберусь сразу выпущу 1.2!
Версия 1.1 на февраль работает без погрешностей!но на июнь я проверил - уже на 4-5 часов ускакала(у какая) от правильности. Буду решать problem! ;)

XeniX

  • Гость
Re:Программирование ...
« Ответ #11 : 09 Фев 2004 [10:43:54] »
это опять я...
посидел, поломал голову и понял что я совсем не правильно вычислял период Юпитера.
целый час думал и вычислял вот что вышло:
Период обращения вокруг Солнца 11,86 лет из этого следует, что четверть оборота - 2,965 лет
период оборота вокруг оси - 9,83 часа
из этих чисел узнаём что Юпитер за час поворачивается на столько же на сколько за...0,3 года...т.е  3.6 месяца...3,6*31=111,6 дней...округляем = 111 дней.
вот я делаю так : каждые 111 дней прибавляю 1 час к периоду... и из этих дней ещё каждые 30 дней прибавляю 3 минуты к периоду... получилась точность на 99% аж на 2 года! Буду думать как  добиться 99,9% точности минимум на 10-15 лет...
Вот так и вышла уже версия 1.2...качайте...не пожалеете...хватит на 2 года...  ;)
http://raxnv.stsland.ru/freesoft/Jupiter.exe


Оффлайн POCOMAXA

  • *****
  • Сообщений: 579
  • Благодарностей: 44
    • Сообщения от POCOMAXA
Re:Программирование ...
« Ответ #12 : 09 Фев 2004 [17:38:08] »
2АНТОХА: Погляди, может, это поможет http://www.isc.tamu.edu/~astro/jupiter/feature1.bas. По крайней мере алгоритм там "подсмотреть" можно...
На всякий случай ссылка "верхнего" уровня: http://www.isc.tamu.edu/~astro/jupiter/97grs.html.
А вот достаточно детальное и дельное описание алгоритма вычисления: http://www.projectpluto.com/grs_form.htm (см. http://www.projectpluto.com/jeve_grs.htm).

Вобщем, надеюсь поможет...

Удачи!
EN.NUN-ma watturum wardī awûm

Nika

  • Гость
Re:Программирование ...
« Ответ #13 : 10 Фев 2004 [02:37:01] »
Если не найдёте, чем скомпиллировать древний Бейсик, то вот я Вам его:

shandrik

  • Гость
Re:Программирование ...
« Ответ #14 : 10 Фев 2004 [08:37:01] »
это опять я...
посидел, поломал голову и понял что я совсем не правильно вычислял период Юпитера.
целый час думал и вычислял вот что вышло:
Период обращения вокруг Солнца 11,86 лет из этого следует, что четверть оборота - 2,965 лет
период оборота вокруг оси - 9,83 часа
из этих чисел узнаём что Юпитер за час поворачивается на столько же на сколько за...0,3 ...

Ну что ж, если сам нашел ошибку, это прекрасно. Начинаешь исправляться. Надеюсь, ты понял, что такое солнечные и звездные сутки, и почему иногда в феврале бывает лишний день.
Теперь разберись с синодическим и сидерическими периодами. Без них так же никуда. Я в одном из первых выпусков рассылки про них писал http://subscribe.ru/archive/science.natural.astro90705/200111/14140315.html#main
« Последнее редактирование: 10 Фев 2004 [08:37:47] от shandrik »

XeniX

  • Гость
Re:Программирование ...
« Ответ #15 : 10 Фев 2004 [12:05:18] »
Спасибо уже читаю.
Сейчас проблема встала вот в чём: почемуто при переходе от 2004 к 2005 году программа начинает ошибаться на +- 1 час.

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re:Программирование ...
« Ответ #16 : 07 Мар 2004 [04:45:07] »
Run-time error '13':
Type mismatch.

И как это называется???
У природы нет плохой погоды, у неё просто на нас аллергия.

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

shandrik

  • Гость
Re:Программирование ...
« Ответ #17 : 07 Мар 2004 [07:53:25] »
Run-time error '13':
Type mismatch.

И как это называется???

До ладно возмущаться - ну сложил паренек парсеки с килограммами, бывает  ;D ;D ;D

XeniX

  • Гость
Re:Программирование ...
« Ответ #18 : 07 Мар 2004 [13:57:24] »
Run-time error '13':
Type mismatch.

И как это называется???
Это называется "Ошибка: неправильный тип"
скажите при каком действии она вылезла?

an1440

  • Гость
Re:Программирование ...
« Ответ #19 : 07 Мар 2004 [18:06:05] »
Антоха! Прочитай всё-таки внимательно ссылки от РОСОМАХА - там прекрасное описание САМОГО ПРИНЦИПА расчета видимости определённой точки на Юпитере (в последней) и готовый вариант программы в качестве примера (или заготовки) - в первой. NIKA вон Вам  даже скомпиллировал(а?) его в zip-файл - кстати, посмотрел - классно работает. Простенько, и со вкусом. Можно употребить для контроля результатов своих вычислений.
В противном случае будет пустая трата времени - всё равно, что считать Луну, "грубо приняв" период её обращения равным 29.53 суток...

А чтобы с датами/временами "на ты" обращаться - попробуй сделать "вечный" календарь. Типа, как у Виндус в СисТрее, но на 7980 лет. Вот тебе контрольная цифра: 1350-ю годовщину Великой октябрьской социалистической революции мы будем отмечать в среду, 16 ноября 3267 года. Всех приглашаю.

« Последнее редактирование: 07 Мар 2004 [18:51:18] от an1440 »