Задать вопрос
@Plant

Как найти матрицу перехода по векторам?

Пусть в базисе e1 дан вектор v1 = [10, 10, 1, 1]
Вектор v1 домножен на матрицу перехода View
Результатом умножения является вектор v1" = [ 9.63 9.61 1.96 1. ]

Можно ли найти матрицу перехода View зная координаты векторов v1, v1" ... vn, vn"?
Конечная задача заключается в поиске углов поворота и переноса базиса e1 имея координаты векторов в двух базисах.

Ps. по возможности с объяснением или ссылкой на теорию.
  • Вопрос задан
  • 2569 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@idap
интересуюсь python, latex, linux, ML, AI
Конечно возможно, если среди v1, v2 ... будут хотя бы 4 линейно независимых вектора.
Если расписать View*v1 = v1", то вы получите систему линейных уравнений, 4 уравнения и 16 неизвестных (неизвестные – это элементы матрицы View).
Далее, к этим уравнениям допишем уравнения ещё 4 уравнения View*v2 = v2". Получится уже система с 8-мью уравнениями и 16 неизвестными.
И т.д.
В итоге, проделав это со всеми vi, vi", у вас получится 4*n уравнений и 16 неизвестных.
Ответ написан
Mrrl
@Mrrl
Заводчик кардиганов
Судя по названию View, вы работаете в терминах компьютерной графики, когда векторы - строки и умножаются на матрицу слева: v1' = v1*View.
Берёте 4 линейно независимых вектора v1,v2,v3,v4, составляете из них матрицу M, в которой они записаны по строкам. Из соответствующих векторов v1',v2',v3',v4' строите матрицу M'. Тогда M' = M*View (это довольно очевидно - достаточно вспомнить, как перемножаются матрицы). Отсюда, View = Inverse(M)*M' (умножаем предыдущую формулу на Inverse(M) слева).
Если пар больше 4, и соответствия только приближённые, то ситуация сложнее - придётся звать на помощь метод наименьших квадратов. Если на матрицу View есть какие-то ограничения, то тоже придётся ещё повозиться (потому что матрица, вычисленная по первым 4 векторам, может быть, например, не совсем ортогональной).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы