Наконец-то стряхнул пыль с компьютерной модели сближения, добавил в неё код, чтобы мы могли определить интересующие нас точки, и выписать ковариационные матрицы Qk, найденные там, чтобы потом преобразовать в весовые матрицы по формуле
где
Кстати, если сложить все Ak, мы должны получить единичную матрицу, что элементарно доказывается - матрица R вынесется за скобки, и тогда получится R-1R=E. Так что несмещённость результатов обеспечена.
Но когда я попробовал всё это посчитать, поначалу вышел полный бред - не выполнялось это условие, и всё тут, какая там единица на диагонали - нескольких порядков не хватало! Всё дело было в том, что я с какого-то перепуга подумал, что матрицы Ak получаются симметричными! Ну, как бы все матрицы Qk симметричны (для ковариационных это обязательно), и обратные к ним симметричны, и потом их сумма симметрична, и обратная к ней, т.е матрица R, также симметрична. А вот произведение двух симметричных - УЖЕ НЕТ.
Простейший пример:
А когда-то я об этом точно знал и написал процедуру перемножения симметричных матриц, дающую на выходе матрицу "общего вида". А сейчас у меня лежали эти матрицы в массиве 10х21 (десять симметричных матриц 6х6, для которых нужно 21 элемент), я попытался одну за другой умножать "на месте", а результат умножения (36 элементов) затирал соседнюю матрицу, вот всё и посыпалось как костяшки домино...
Кстати, из-за этого и выражение, как данные усреднять, я в прошлый раз неправильное привёл. Правильное вот:
(отличие в транспонировании матриц! Изначально они транспонированные и получались, но я подумал - они же симметричные, можно знак убрать, так оно красивее...)
Когда это дело подправил, получил довольно интересные результаты! Я боялся, что вообще получу практически единичные матрицы, или, по крайней мере диагональные (см.
Big Data, чтоб их... (3)), но не тут-то было! Но чтобы понять, что это мне даёт, нужно ещё чуть подумать - вывести итоговую ковариационную матрицу результатов, если мы воспользуемся этими весами!
Точнее говоря, я хочу сравнить 3 варианта обработки:
1. Просто взять среднее арифметическое от измеренных параметров,
2. Брать исключительно диагональные матрицы весов, т.е при измерении смещения по оси X брать только смещения по оси X, не примешивая к ним другие смещения и повороты. А веса выбрать обратно пропорционально дисперсиям измерений.
3. Воспользоваться матрицами Ak, приведёнными выше.
Но все три варианта можно представить "в общем виде" как применение весовых матриц Ak, так что с этого и начнём, а потом только подставим выражение для Ak для варианта 3, в надежде, что выражение существенно упростится.
Мне спокойнее начинать "от печки": выразить шум результата через входные независимые случайные величины. При этом частично я "изобретаю велосипед", но так спокойнее, знаю, что никаких слагаемых (например, ковариаций между случайными величинами) не пропустил и новых не добавил.
Ковариационные матрицы Qk можно представить как произведение нижнетреугольной матрицы на себя транспонированную (разложение Холецкого): Qk = LLT. Тогда шум в усреднённом векторе будет следующим:
Максимум информации можно получить, если взять так называемый Outer product (чего-то не соображу, как это по-русски!), т.е умножить этот вектор на себя транспонированного СПРАВА, что даст матрицу NxN:
Это и будет ковариационной матрицей результата. Подставим сюда предыдущее выражение:
Раскроем скобки:
Поскольку все матрицы - константы (не зависят от случайных величин), можно "усреднение" (математическое ожидание) внести вовнутрь:
А поскольку мы имеем дело с многими выборками случайной величины (ξ1, ξ2 и т.д.), которые мы считаем независимыми друг от друга и имеющими нулевое среднее, то все их произведения с отличающимися индексами дадут нули, а с равными - единичную матрицу, поскольку у этих величин отсутствует корреляция между компонентами, а дисперсия каждого компонента единичная. Так что сие монструозное выражение сразу же упрощается:
Теперь можно вернуть назад матрицы Qk = LLT:
Ну да, результат, в целом, известный. Когда случайную величину умножаешь на матрицу, ковариационную матрицу нужно умножить "с обеих сторон". У нас здесь транспонирование не с той стороны, с какой "принято", потому что оно с самого начала там стояло.
Простое усреднение
В этом случае
и получается:
То есть, просто складываем все ковариационные матрицы и делим их на N2. В целом, логично. Если, к примеру, они все одинаковые, то дисперсия снизится в N раз, а среднеквадратичное - в корень из N, как мы обычно и ожидаем.
Усреднение с разными весами, но без "перемешивания"
тут будет заметное упрощение, что матрицы Ak будут диагональными: diag(ak1,ak2,...,akM). Но как-то сильно упростить само выражение вряд ли возможно. Элемент матрицы Qk с индексами i,j будет помножен на akiakj. Потом их всех просуммируем - и получим результат.
"Во все тяжкие"
Наконец, подставим
Получается:
QkQk-1 сокращаем, после чего раскрываем скобки, учитывая, что и Qk, и R - симметричные матрицы:
R можно вынести за скобки, сначала слева:
а потом и справа:
В скобках оказывается не что иное, как R-1:
Приходим к удивительному результату: матрица R, которую мы посчитали ранее - это и есть результирующая ковариационная матрица, выражающая, как шумит наше усреднённое "по науке" значение.
Можно ли было это понять методом "пристального взгляда", обязательно ли было эти выкладки проводить - пока не знаю.
Завтра, наконец, узнаем, насколько будут отличаться результаты разных усреднений в условиях, "максимально приближенных к боевым"...