AlexanderMasht

На Пикабу
поставил 29 плюсов и 0 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
3008 рейтинг 0 подписчиков 0 подписок 50 постов 10 в горячем

Полетное задание Гагарина уставки аналоговых приборов

В номере журнала Наука и жизнь №4 2021 г, стр. 21, а также в Интернет издании "Коммерсантъ Наука" №9 от 14.04.2021, стр. 12 год опубликованы две очень интересных интересные статьи про полет Юрия Гагарина в космос. В статьях приводится много интересных технических данных.


Я обратил внимание на две иллюстрации из этих статей, хочу поделиться с вами своими мыслями:


Это отдельные страницы из полетного задания Гагарина. Фактически приводятся настройки аналоговых приборов, системы управления.


Как вам такое: Настройка приборов КИ22-8В-2 и И-22-8. Установочное значение кажущейся скорости в момент выдачи главной команды на выключение двигателя III ступени 2283.52 м/с.


Что это за прибор? Я подозреваю, это интегрирующий акселерометр, причем, аналоговый, который интегрирует измеренную величину линейного ускорения и таким образом нарастающим итогом определяет скорость движения ракеты. Посмотрите, какая точность.

Кстати, двигатель третьей ступени должен быть отключен радиокомандой с Земли, но он отключился на пол-секунды позже автономной бортовой автоматикой. Про это много написано.


Посмотрите другие настройки аналоговых приборов, например, настройки каких-то усилителей СОБИС и РСК, обеспечивающих объемные соотношения расходов компонентов топлива. Меня удивила точность задания. Это, ведь не просто расчет, а какие-то точные регулировки, полученные в ходе предварительных испытаний.


Как, господа - программисты, вы также настраиваете свои регуляторы?


(Изображения взяты из журнала Наука и жизнь)

Полетное задание Гагарина уставки аналоговых приборов Космос, Юрий Гагарин, Автоматика

В интересных единицах приведена заданная дальность полета: 1.03 оборота вокруг Земли.

Показать полностью 1

Плёночные фотографии

Все мы уже давно привыкли фотографировать цифровыми фотоаппаратами, особенно смартфонами. Я иногда испытываю ностальгию, достаю свой старый пленочный фотоаппарат Зенит-122. Не могу сказать, что я профи, но я нахожу некоторые плюсы в использовании настоящего плёночного фотоаппарата:


1 – Интрига (и это, с моей точки зрения, – самое главное). Вы никогда заранее не знаете, что получилось, пока не проявили плёнку.


2 – Разумное самоограничение. Вы знаете, что у Вас, например, ровно 36 кадров, и вы не будете снимать направо и налево, из серии: «Что вижу, то и снимаю».


3 – Как бы не хвалили динамический диапазон современных светочувствительных ПЗС матриц цифровых фотоаппаратов, есть некоторое соображения в пользу плёнки. Если динамический диапазон ПЗС матриц большой, то он все равно - линейный.


Увеличение линейного динамического диапазона приводит к потере контрастности. Уменьшение линейного динамического диапазона приводит к резкому обрубанию пересеченных и недосеченных объектов.


У пленки же есть длинные плавные «хвосты» в области пересвета и недосвета. Там контраст падает, но, тем не менее можно различить текстуру и детали объекта.


4- это как садишься за руль ретромобиля. Все вручную  настраиваешь, фокус, экспозицию ...



Вот такой набор я использовал: Зенит 122 со штатным объективом Helios-44, телеобъектив Юпитер-200, широкоугольный объектив Мир-20.

Плёночные фотографии Фотография, Пейзаж, Длиннопост

Пейзажи ниже – это объективом Мир-20.

Плёночные фотографии Фотография, Пейзаж, Длиннопост

Белое облако вокруг дерева - это утренний туман (время 5 утра).


И Солнце не абсолютно белое, и тени не угольно-чёрные, и нет дифракционных лучей от Солнца крест-на-крест, которые иногда проявляются на цифровой матрице.

Плёночные фотографии Фотография, Пейзаж, Длиннопост

Это просто туман, и отражение облаков в воде.


Гуси сняты Юпитером-200 (близко не подпускали, дикие)

Плёночные фотографии Фотография, Пейзаж, Длиннопост

Место действия - самый юг Финляндии, Балтийское море, если кому интересно.

Показать полностью 4

Кафе в Питере

Как бы ничего особенного, за исключением того, что это дочка пятиклассница решила порадовать папу. Они сейчас на каникулы уехали в Питер на несколько дней. Я на работе.  Вот она не удержалась, прислала фотографию, ещё перезвонила.

Кафе в Питере Юмор, Семья
Показать полностью 1

Построение плоскости облаку точек методом наименьших квадратов

Однажды встала задача по набору измеренных точек построить аппроксимирующую плоскость в пространстве. Можно было бы конечно численными методами подогнать плоскость к точкам, но хотел получить готовую точную формулу (как для аппроксимации прямой).


Я не нашёл простой готовой формулы, либо предложенные методы были довольно сложные для понимания, например, среди решений фигурировала мнимая единица (i² = -1), которую предлагалось потом каким-то образом обходить.


Поэтому я решил вывести формулу самостоятельно. Оказалось всё довольно просто.

(Не пугайтесь, в конце статьи будет готовый к применению алгоритм расчета)


Итак:

Задача такая – есть некоторое количество точек M(x,y,z) в трехмерном пространстве, нужно найти плоскость такую, чтобы сумма квадратов расстояний от точек M до этой плоскости была минимальной.


1) Уравнение плоскости:

Ax+By+Cz+D = 0


2) Расстояние от произвольной точки M(x,y,z) до плоскости:

d = Ax+By+Cz+D


3) Потребуем выполнения условия:

S(A,B,C,D) = Σd² = Σ(Ax+By+Cz+D)² = min


4) Раскроем скобки для d² (разными способами, комбинируя разные слагаемые)

d² = (Ax+(By+Cz+D))² = A²x²+2Ax(By+Cz+D)+(By+Cz+D)²

d² = (By+(Ax+Cz+D))² = B²y²+2By(Ax+Cz+D)+(Ax+Cz+D)²

d² = (Cz+(Ax+By+D))² = C²z²+2Cz(Ax+By+D)+(Ax+By+D)²

d² = (D+(Ax+By+Cz))² = D²+2D(Ax+By+Cz)+(Ax+By+Cz)²


4) Функция S(A,B,C,D) должна иметь локальный минимум. Найдём такие A,B,C,D, чтобы производные функции S по её аргументам A,B,C и D равнялись нулю.

dS/dA = Σ(2Ax²+2x(By+Cz+D)) = 0

dS/dB = Σ(2By²+2y(Ax+Cz+D)) = 0

dS/dC = Σ(2Cz²+2z(Ax+By+D)) = 0

dS/dD = Σ(2D+2(Ax+By+Cz)) = 0


5) Получилась система из четырёх уравнений с четырьмя неизвестными A,B,C,D

AΣx²+BΣxy+CΣzx+DΣx = 0

AΣxy+BΣy²+CΣyz+DΣy = 0

AΣzx+BΣyz+CΣz²+DΣz = 0

AΣx+BΣy+CΣz+DN = 0, (N - число точек)


6) Из уравнения 4. выразим D через A,B,C и подставим его в уравнения 1.2.3.

D = −(AΣx+BΣy+CΣz)/N

AΣx²+BΣxy+CΣzx−Σx(AΣx+BΣy+CΣz)/N = 0

AΣxy+BΣy²+CΣyz−Σy(AΣx+BΣy+CΣz)/N = 0

AΣzx+BΣyz+CΣz²−Σz(AΣx+BΣy+CΣz)/N = 0


Или

A(Σx²−(Σx)²/N)+B(Σxy−ΣxΣy/N)+C(Σzx−ΣzΣx/N) = 0

A(Σxy−ΣxΣy/N)+B(Σy²−(Σy)²/N)+C(Σyz−ΣyΣz/N) = 0

A(Σzx−ΣzΣx/N)+B(Σyz−ΣyΣz/N)+C(Σz²−(Σz)²/N) = 0


7) Введём обозначения для известных чисел (их можно просто вычислить из массива точек, просуммировав соответствующие выражения):

"XX" = Σx²−(Σx)²/N

"YY" = Σy²−(Σy)²/N

"ZZ" = Σz²−(Σz)²/N

"XY" = Σxy−ΣxΣy/N

"YZ" = Σyz−ΣyΣz/N

"ZX" = Σzx−ΣzΣx/N


8) Система уравнения принимает вид:

A∙XX+B∙XY+C∙ZX = 0

A∙XY+B∙YY+C∙YZ = 0

A∙ZX+B∙YZ+C∙ZZ = 0


9) Дальше я руками ввёл некоторую δ, чтобы избежать тривиального решения A=B=C=0, а дополнительное условие нормировки позволит определить эту δ. Это - тонкое место, я не могу объяснить, в чем здесь фокус, но результат получается правильный.

A∙XX+B∙XY+C∙ZX = δ

A∙XY+B∙YY+C∙YZ = δ

A∙ZX+B∙YZ+C∙ZZ = δ

A²+B²+C² = 1 дополнительное условие нормировки


10) Введём обозначения для определителей матриц:

Построение плоскости облаку точек методом наименьших квадратов Аппроксимация, Плоскость, Длиннопост

11) тогда решение системы уравнений можно записать так:

δ = 1/√(DetA(1)²+DetB(1)²+DetB(1)²)

A = DetA(δ)

B = DetB(δ)

C = DetC(δ)


мы также помним: D = −(AΣx+BΣy+CΣz)/N


На самом деле не нужно вычислять величину δ, вместо этого следует действовать по следующему алгоритму:


АЛГОРИТМ:


Шаг 1. Вычисляем числа "XX", "YY", "ZZ", "XY", "YZ", "ZX" в соответствии с пунктом 7


Шаг 2 Вычисляем определители, составленные из этих чисел и единиц:

Построение плоскости облаку точек методом наименьших квадратов Аппроксимация, Плоскость, Длиннопост

Шаг 3 Вычисляем ненормированные коэффициенты:

A1=DetA(1)

B1=DetB(1)

C1=DetC(1)


Шаг 4 Вычисляем длину вектора (A1,B1,C1)

L = √(A1²+B1²+C1²)


Шаг 2’ Вычисляем определители другие (в первых строчках минусы перед единицами):

Построение плоскости облаку точек методом наименьших квадратов Аппроксимация, Плоскость, Длиннопост

Шаг 3’ Вычисляем ненормированные коэффициенты со штрихами:

A1’=DetA’(1)

B1’=DetB’(1)

C1’=DetC’(1)


Шаг 4’ Вычисляем длину вектора (A1’,B1’,C1’)

L’ = √(A1’²+B1’²+C1’²)


Шаг 5 Сравниваем, что больше L, или L’


Шаг 6 Если L > L’ тогда:

A = A1/L

B = B1/L

C = C1/L


Шаг 6’ Если L < L’ тогда:

A = A1’/L’

B = B1’/L’

C = C1’/L’


Шаг 7 Вычисляем D

D = −(AΣx+BΣy+CΣz)/N


Искомое уравнение плоскости: Ax+By+Cz+D = 0


Здесь я алгоритм разбил на две ветки со штрихом и без штриха, потому что L может оказаться близко к нулю для некоторых углов (если очень не повезет, то L может быть вообще равна 0). Тогда при делении на величину, близкую к нулю мы потеряем точность.


Такое случается, например, при повороте плоскости на 45 градусов вокруг одной из осей,

Например, плоскости A=−√2, B=0, С=√2 и при малом случайном разбросе точек около плоскости величина L стремится к нулю, в то время, как L’ как раз максимальна. И наоборот для плоскости A=√2, B=√2, С=0 величина L’ стремится к нулю.

Показать полностью 3

Передача информации быстрее света (парадокс узкополосного фильтра)

Лазер испускает короткий импульс света, так называемый волновой пакет, ограниченный в пространстве. На каком-то расстоянии от лазера находится детектор излучения, который обнаруживает волновой пакет. Детектор – довольно чувствительный, он может обнаружить начало волнового пакета, даже пока максимум амплитуды пакета ещё не достиг детектора. Волновой пакет ограничен в пространстве, значит, спектр его имеет некоторую ширину. Чем короче пакет в пространстве, тем шире его спектр. Всё же детектор не может обнаружить пакет  раньше, чем начало пакета его достигнет.


Теперь в нашем мысленном эксперименте мы на пути пакета между лазером и детектором поставим узкополосный фильтр, который вырежет из спектра пакета одну очень узкую спектральную линию. Понятно, что амплитуда пакета после фильтра будет меньше, так как наш фильтр будет пропускать только ту часть энергии пакета, которая попадает в полосу пропускания фильтра.


Однако, спектр пакета после прохождения фильтра будет более узким, это означает, что пакет окажется растянутым в пространстве. В пределе пакет после фильтра будет близок к гармонической волне, которая в пространстве не ограничена.


Правда, если ширина полосы пропускания фильтра будет бесконечно малой, то через фильтр сможет пройти только бесконечно малая энергия пакета, поэтому мы ограничимся достаточно малой, но не бесконечно малой шириной полосы пропускания фильтра. Наш волновой пакет в любом случае окажется растянутым в пространстве.

Передача информации быстрее света (парадокс узкополосного фильтра) Физика, Парадокс, Длиннопост

Мы видим, что начало отфильтрованного пакета может достичь детектора раньше, чем долетел бы исходный пакет в отсутствии фильтра. А мы помним, что наш детектор – очень чувствительный.


Это значит, что теоретически мы сможем обнаружить пакет раньше, чем свет от лазера дошёл бы до нашего детектора в отсутствии фильтра. Значит ли это, что, мы могли бы передавать информацию быстрее скорости света?


Конечно, нет. Интересный вывод можно сделать для разрешения этого парадокса: любой фильтр, совершенно независимо от его физической природы обязан вносить задержку в распространение сигнала. Причем минимальная возможная величина эта задержки должна быть порядка v/w, где w – ширина полосы пропускания фильтра, v – фазовая скорость распространения сигнала.


Действительно, попробуем рассмотреть варианты устройства оптического фильтра. Первое, что приходи на ум – резонатор с полупрозрачными зеркалами. Свет проходит, переотражаясь несколько раз, и в силу интерференционного сложения волна с определенной длиной имеет преимущество. В этом случае механизм задержки, вносимой фильтром можно представить себе как «лишний» путь, проделанный светом в процессе переотражения между зеркалами.


Если мы попробуем придумать какой-нибудь фильтр на молекулярном уровне, то он будет состоять их отдельных молекул, осцилляторов, которые будут поглощать и переизлучать свет. При этом задержка будет связана со временем взаимодействия света с молекулами. Тут работает принцип неопределённости: неопределённость энергии фотона, испускаемого возбуждённой молекулой обратно пропорциональна времени жизни молекулы в возбуждённом состоянии. Здесь мы опять сталкиваемся с тем, что чем будет тоньше спектральная линия, тем дольше молекулы будут жить в возбуждённом состоянии, пред тем, как переизлучить свет.


Почему обязательно свет? Мы можем с таким же успехом говорить об электромагнитном излучении радио-диапазона. Тогда фильтр мы можем соорудить из простых радиодеталей. Фильтр будет состоять из приемной антенны, колебательного контура, какого-нибудь усилительного каскада (хотя, можно и без него) и передающей, излучающей антенны. В этом случае, чем больше добротность колебательного контура (чем уже полоса фильтра), тем больше времени потребуется, чтобы этот колебательный контур раскачать, ведь колебательный контур будет запасать энергию.


Можно также придумать какой-нибудь гипотетический сверхбыстродействующий цифровой фильтр для радиосигнала. Какой-нибудь очень быстрый аналого-цифровой преобразователь на входе, весьма производительный процессор, и цифро-аналоговый преобразователь на выходе. При этом пусть процессор делает преобразование Фурье измеренного входного сигнала, вырезает из полученного спектра тонкую полосу и делает обратное преобразование Фурье. Даже, если все преобразования сигнала и вычисления будут производиться за ничтожно малое время, любому программисту понятно, что прежде чем делать преобразование Фурье мы должны накопить некоторый буфер значений входного сигнала. И чем лучше мы хотим получить разрешение спектра, тем длиннее должен быть входной буфер по времени.


Такие же соображения относятся и к звуку, и к любому сигналу другой физической природы. И дело здесь не в скорости света, а в причинно-следственной связи.

Показать полностью 1

Рекурсия простыми словами

Если Вы программист, Вы безусловно сталкивались не раз с рекурсивным вызовом функции, особенно наглядно выглядит разбор какого-нибудь *.xml файла, когда нужны вытащить из него какие-нибудь многократно вложенные друг в друга элементы.


Для остальных поясню – рекурсивный вызов функции - это, когда функция вызывает саму себя. Часто это выглядит как какой-то хитрый фокус. Ведь Вы пишете функцию, а внутри для выполнения ряда действий вызываете эту же самую функцию, которую Вы на момент использования еще не дописали до конца.


Поясню на примере алгоритма решения известной головоломки Ханойская башня. Вы можете найти в Интернете множество описаний этой головоломки. Суть головоломки следующая: имеются три стержня, пронумеруем их 1,2 и 3. На первом стержне надеты кольца разного диаметра, как в детской пирамидке. Кольца упорядочены по диаметру: самое большое кольцо - внизу, самое маленькое – сверху.


Задача переложить все кольца на второй стержень, при этом третьим стержнем можно пользоваться как временным буфером для размещения колец. Важно, что за один ход можно перекладывать только одно кольцо, и никогда нельзя класть кольцо большего диаметра на кольцо меньшего диаметра. Есть несколько способов решения этой головоломки, самый красивый, с моей точки зрения - с использованием рекурсии.

Рекурсия простыми словами Программирование, Калькулятор, Рекурсия, Видео, Длиннопост

Вообще, решение подобных головоломок на компьютере, как, в впрочем, и перенос в компьютер любой другой игры с реальными фигурами, например морского боя, или шахмат может поставить в тупик программиста. Ведь встает задача описать как-то текущее положение, игровое поле, запомнить, где какое кольцо лежит, где какая фигура расположена.


То, что человек воспринимает визуально нужно как-то описать на языке, понятном для компьютера, использовать массивы данных и изменять их при каждом ходе.


Самое интересное, что при использовании рекурсии для решения головоломки Ханойская башня нам вообще не придется запоминать, где какое кольцо лежит, и как-то анализировать текущую игровую ситуацию.


Итак, алгоритм:


Допустим, что у нас есть готовая функция F(N), которая переносит N колец с первого стержня на второй. Тогда основная программа выглядит следующим образом:


1) Начало программы

2) Вызов функции F(N)

3) Конец программы


Сама функция будет выглядеть следующим образом:


1) Если N = 1, тогда выводим ход в формате (1,2), что означает перенести одно кольцо с первого стержня на второй, а дальше – сразу переходим к кону функции

В противном случае (если N > 1) делаем следующие действия:


2) Меняем местами 2 и 3 стержни (чтобы «обмануть» функцию)

3) Вызываем функцию F(N-1) - функция переносит N-1 кольцо с первого стержня на третий, так как она «считает», что третий стержень это второй, а второй – это третий.

4) Меняем обратно местами 2 и 3 стержни. Теперь у нас N-1 кольцо (все кольца, кроме самого большого) лежат на третьем стержне, а на первом стрежне осталось самое большое кольцо.

5) выводим ход: (1,2), что означает перенести одно кольцо (самое большое) с первого стержня на второй

6) Меняем местами 1 и 3 стержни (чтобы «обмануть» функцию)

7) Вызываем функцию F(N-1) - функция переносит N-1 кольцо с третьего стержня на второй, так как она «считает», что третий стержень это первый, а первый – это третий.

8) Меняем обратно местами 1 и 3 стержни. Теперь у нас все кольца на втором стержне

9) Конец функции


Что же значит, «поменять местами стержни» с точки зрения программы? Ничего на самом деле не нужно менять, мы просто повесим бирки на стержни с их номерами №1, №2 и №3. И пусть функция сообщает ход в формате (n,m), но в качестве чисел n и m выдает не истинные номера стержней, а те номера, которые записаны на бирках. Тогда, чтобы «обмануть» функцию достаточно перевесить бирки на стержнях.


Специально чтобы порадовать любителей программировать во всяких экзотических языках программирования, типа Python привожу текст программы на языке макрокоманд ЯМК отечественных программируемых микрокалькуляторов:

Рекурсия простыми словами Программирование, Калькулятор, Рекурсия, Видео, Длиннопост

Не все языки программирования позволяют функции вызывать саму себя, но это ограничение можно обойти, используя, например оператор GoTo (или БП) для «безусловного перехода» к определенной строчке программы (туда, где начинается функция), а в конце функции также использовать оператор GoTo для возврата. При этом при вызове функции нужно где-то запоминать адрес для возврата и подсовывать его второму оператору GoTo в качестве адреса для возврата.


Вот, что получилось:

Количество колец N вводится в начале программы. Программа может работать до N= 9, ограничение связано с ограничением памяти, отведенной под хранения адресов возврата. Для хранения адресов возврата Используется всего 9 регистров с 4 по C. Регистры 1,2,3 используются под бирки, регистр 0 используется, как указатель адресов возврата, регистр Д используется для N.


Программа выдает каждый очередной ход в формате n,m (переместить кольцо c n на m), по завершении программа выдает число пи.


Вот еще вариант хорошего эмулятора Электроника МК-61.

Рекурсия простыми словами Программирование, Калькулятор, Рекурсия, Видео, Длиннопост

У него мне не нравятся обозначения на кнопках [П -> х] и [х -> П] вместо [П] и [ИП] как у калькулятора Электроника Б3-34. Когда пытаешься проговорить про себя стрелку ->, но невольно заменяешь ее предлогом «на», или «в», получается что-то не очень приличное.

Показать полностью 3 1

Хорошее хобби у человека

Человек увлекается виндсёрфингом. Уважаю.

Хорошее хобби у человека Юмор, Хобби

Новогодняя елка

Оператор: Что-то реактивная мощность упала, сейчас прибавлю.

Механик: Думаю, не получится.

Оператор: Почему?


Конец кабеля отвалился в щеточном аппарате, немного искрил. Ситуация почти штатная.

Отличная работа, все прочитано!