Прощальное предпродажное фото
Примечание. Пробел в кодах команд здесь обозначается знаком подчёркивания.
| Шаг | Клавиши | Код | Шаг | Клавиши | Код | Шаг | Клавиши | Код | ||
|---|---|---|---|---|---|---|---|---|---|---|
| Основная программа | 33 | F 6 tg-1 | 1L | 66 | ПП | 53 | ||||
| 00 | ПП | 53 | 34 | F 8 cos | 1Г | 67 | 9 0 | 90 | ||
| 01 | 6 3 | 63 | 35 | F В↑ Bx | 0_ | 68 | 3 | 03 | ||
| 02 | П→X 2 | 62 | 36 | F 7 sin | 1C | 69 | - | 11 | ||
| 03 | × | 12 | 37 | П→X 0 | 60 | 70 | F ШГ→ x<0 | 5C | ||
| 04 | П→X 3 | 63 | 38 | F 7 sin | 1C | 71 | 7 8 | 78 | ||
| 05 | + | 10 | 39 | × | 12 | 72 | П→X d | 6Г | ||
| 06 | В↑ | 0E | 40 | П→X 8 | 68 | 73 | + | 10 | ||
| 07 | В↑ | 0E | 41 | - | 11 | 74 | ↔ | 14 | ||
| 08 | П→X 4 | 64 | 42 | ↔ | 14 | 75 | 1 | 01 | ||
| 09 | + | 10 | 43 | ÷ | 13 | 76 | - | 11 | ||
| 10 | F 7 sin | 1C | 44 | П→X 0 | 60 | 77 | ↔ | 14 | ||
| 11 | П→X 5 | 65 | 45 | F 8 cos | 1Г | 78 | П→X a | 6- | ||
| 12 | × | 12 | 46 | ÷ | 13 | 79 | × | 12 | ||
| 13 | ↔ | 14 | 47 | F 5 cos-1 | 1- | 80 | П→X c | 6C | ||
| 14 | 2 | 02 | 48 | 1 | 01 | 81 | + | 10 | ||
| 15 | × | 12 | 49 | 5 | 05 | 82 | K 7 [x] | 34 | ||
| 16 | F 7 sin | 1C | 50 | ÷ | 13 | 83 | ↔ | 14 | ||
| 17 | П→X 6 | 66 | 51 | - | 11 | 84 | П→X b | 6L | ||
| 18 | × | 12 | 52 | В↑ | 0E | 85 | × | 12 | ||
| 19 | + | 10 | 53 | F В↑ Bx | 0_ | 86 | K 7 [x] | 34 | ||
| 20 | + | 10 | 54 | + | 10 | 87 | + | 10 | ||
| 21 | F В↑ Bx | 0_ | 55 | F В↑ Bx | 0_ | 88 | + | 10 | ||
| 22 | П→X 1 | 61 | 56 | + | 10 | 89 | В/О | 52 | ||
| 23 | - | 11 | 57 | K 3 ←°′″ | 30 | 90 | П→X 9 | 69 | ||
| 24 | 1 | 01 | 58 | ↔ | 14 | 91 | ÷ | 13 | ||
| 25 | 5 | 05 | 59 | K 3 ←°′″ | 30 | 92 | K 7 [x] | 34 | ||
| 26 | ÷ | 13 | 60 | С/П | 50 | 93 | F В↑ Bx | 0_ | ||
| 27 | F В↑ Bx | 0_ | 61 | БП | 51 | 94 | K 8 {x} | 35 | ||
| 28 | + | 10 | 62 | 0 0 | 00 | 95 | П→X 9 | 69 | ||
| 29 | ↔ | 14 | Подпрограмма календаря | 96 | × | 12 | ||||
| 30 | F 7 sin | 1C | 63 | ПП | 53 | 97 | В/О | 52 | ||
| 31 | П→X 7 | 67 | 64 | 9 0 | 90 | |||||
| 32 | × | 12 | 65 | ↔ | 14 | |||||
| № | Значение | Примечание |
|---|---|---|
| Астрономические константы | ||
| 0 | 53.9 | Широта Минска в градусах и долях градуса |
| 1 | 27.57 | Долгота Минска в градусах и долях градуса |
| 2 | 9.8564733 E -1 | Смещение среднего Солнца за сутки в градусах |
| 3 | 235.268 | Прямое восхождение среднего Солнца на дату JD 2 400 000 (RJD 0) |
| 4 | 78 | Коэффициенты для вычисления уравнения времени |
| 5 | 1.925 | |
| 6 | -2.375 | |
| 7 | -4.3362 E -1 | -tg угла наклона эклиптики к экватору |
| 8 | 1.4834754 E -2 | sin 51′: 35′ (атмосферная рефракция) + 16′ (видимый радиус Солнца) |
| Константы для подпрограммы калдендаря | ||
| 9 | 100 | Для разделения года, месяца, дня |
| a | 30.6 | Среднее число дней в месяце (нюансы тут не описываю) |
| b | 365.25 | Число дней в Юлианском году |
| c | 15079.5 | Константа для вычисления RJD |
| d | 12 | Число месяцев в году |
Сокращённая юлианская дата (RJD) на 12h UTC даты (1900+ГГ).ММ.ДД:
RJD = [ ГГ * 365.25 ] + [ (MM - 3) * 30.6 + 15079.5 ] + ДД
При этом, если ММ < 3, то нужно увеличить ММ на 12 и уменьшить ГГ на 1.
Примеры.
28.02.2023 считаем как 28.14.2022: RJD = [122 * 365.25] + [(14 - 3) * 30.6 + 15079.5] + 28
= [44560.5] + [15416.1] + 28 = 44560 + 15416 + 28 = 60004
01.03.2023: RJD = [123 * 365.25] + [(3 - 3) * 30.6 + 15079.5] + 1
= [44925.75] + [15079.5] + 1 = 44925 + 15079 + 1 = 60005
Прямое восхождение среднего Солнца на момент RJD в градусах:
A = 235.268 + 9.8564733*10-1 * RJD
Уравнение времени в градусах:
УрВр ≈ 1.925 * sin(A + 78) - 2.375 * sin(2 * A)
Прямое восхождение истинного Солнца в градусах:
ПрВс = A + УрВр
Дальше чистая тригонометрия, мне лень расписывать. Молодой был - не поленился разобраться с этими формулами, а теперь лень.
Эту программу я написал в те годы, когда персональных компьютеров у нас ещё не было. Стал бы я покупать микрокалькулятор, если бы имел полноценный компьютер! Но ЭТО можно было реально программировать, и ЭТО было моё личное, а не на работе.
Сейчас (2023г.), разбирая старый хлам, я нашёл этот калькулятор, причём в работоспособном состоянии. Годы оказались над ним не властны. Старые записи тоже сохранились. И я решил оформить современными средствами кое-что из плодов моих старых трудов. Конечно, всё это теперь никому не нужно, да и тогда особо не было нужно. Но очень многое в этой жизни мы делаем не потому, что это нужно для выживания, а просто ради удовольствия и спортивного интереса. Это был спортивный интерес - втиснуть в малюсенькую память как можно больше. Вдруг теперь кому-то захочется покопаться в этом коде и разобраться, например, почему результат выдаётся для UTC+3, хотя этой константы нигде в программе нет. Не буду портить удовольствие и подсказывать.
Выделена подпрограмма календаря, которая по дате в формате (Г)ГГММДД, где (Г)ГГ = ГГГГ - 1900, вычисляет сокращённый юлианский день RJD (на полдень по UTC указанной даты, т.е. целое число). Нам повезло, что 2000 год - високосный. После 2100.02.28 эта программа будет неприменима. Но тогда она уже точно будет никому не нужна.
Значение RJD можно использовать для различных календарных расчётов: вычисление разности двух дат в днях, числа дней в месяце, номера дня недели, фазы Луны (приблизительно) и т.п.
Может возникнуть вопрос: зачем при расчёте восхода и захода Солнца указывать год, разве время восхода и захода на одну и ту же дату разных лет отличается? Да, немного отличается из-за того, что продолжительность года не кратна продолжительности суток. Время восхода и захода в какую-то дату одного года может быть ближе к соседней дате другого года, чем к такой же дате.
Точность этой программы ниже, чем могла бы быть, если бы было больше памяти.
Основная погрешность (порядка минуты) - из-за неучёта годичного движения Солнца в течение суток. Я вычисляю прямое восхождение и склонение Солнца примерно на середину дня и считаю его неизменным от восхода до захода. По-хорошему нужно считать вычисленное время восхода и захода первым приближением, пересчитать координаты Солнца на эти моменты и по новым координатам вычислить новое, уточнённое время восхода и захода (для восхода - по своим координатам, для захода - по своим). Теоретически нужно найти предел бесконечной последовательности приближений, но практически погрешность второго приближения не превышает другие неустранимые погрешности. К сожалению, вычисление второго приближения никак не вписывается в память калькулятора. Поэтому результаты моей программы могут на минуту-другую отличаться от напечатанных в календаре.
Вторая погрешность, гораздо меньшая, возникает из-за того, что формулы являются не точными, а приближёнными. В небесной механике вообще практически нет точных формул. Задача N тел при N > 2 не имеет точного аналитического решения. Чем точнее нужны формулы, тем они получаются длиннее. Для Солнца дело обстоит ещё не так плохо. Погрешность простой формулы для приблизительного вычисления уравнения времени - порядка секунд. Для Луны всё гораздо хуже. Простая формула вычисления фазы Луны даёт погрешность порядка полусуток, а достаточно точные формулы для координат Луны занимают много страниц, и их вывод занимал у математиков XVIII-XX веков долгие годы...
Третья погрешнось, принципиально неустранимая - из-за неизвестной величины атмосферной рефракции. При приблизительных расчётах принято считать рефракцию у горизонта равной 35′, что я и делаю. Реальная величина зависит от состояния атмосферы (температуры, давления) и не может быть вычислена без этих данных. Погрешность от неточного учёта рефракции, вероятно, может быть порядка секунд. Поэтому даже в профессиональных астрономических календарях, где координаты небесных тел приводятся с точностью до долей угловой секунды, время восхода и захода светил округляется до минут.
На этом я прощаюсь с игрушкой моей молодости. Хранить ради ностальгических воспоминаний нет смысла.
2023.03.25. Калькулятор МК-52 продан за 55 руб. через аукцион http://ay.by/.
* * *
Это, видимо, первый доступный советский программируемый калькулятор. Я купил его, как только появилась возможность. Конечно, первый блин был немного комом. Круговой стек, который по сути не является стеком, был не очень удобен для работы. Для ввода адреса перехода приходилось искать в инструкции команду с соответствующим кодом. В следующих моделях эти недостатки устранялись. Видимо, МК-52 - вершина развития советских калькуляторов такого типа. Его я и купил позже, пропустив все промежуточные модели. Сам калькулятор Б3-21 я давно выбросил. Увы - нельзя превращать квартиру в музей.
При всех своих недостатках Б3-21 был первым. О нём писали книги. Вот что я нашёл в своём шкафу.
Видимо, все эти книги я выброшу в макулатуру, т.к. вряд ли они сейчас кому-то нужны.
Это был уже совершенно другой уровень. Для своего времени и своей цены (порядка месячной з/платы), я считаю, возможности этого калькулятора были поразительными: программирование на языке Бейсик, порядка 1000 шагов программы (ключевые слова типа if, for, sin занимали один шаг), 26 переменных (по числу букв латинского алфавита), возможность работы с индикатором в графическом режиме.
Вот список программ из моей тетради.
Да, не слабо я поиграл с этим калькулятором в своё время, хорошая была игрушка. Сколько времени потратил...
Теперь этот калькулятор оказался неработоспособен. Жидкокристаллический индикатор (тех лет) - более хрупкая вещь, чем обычный светящийся. Пришлось выбросить.
Кстати, на http://ay.by/ после продажи моего МК-52 остались ещё 3 штуки. А по МК-85 нашёлся только номер журнала. Видимо, МК-85 объективно хуже сохраняется, а не только у меня.
Прощайте, мои калькуляторы, я буду о вас вспоминать, увидев эту страницу...