Линейное преобразование: векторы, попадающие в непреднамеренные места, manim

#python #manim

Вопрос:

при применении линейного преобразования с матрицей [3, 0],[0, 2], шляпа i должна удлиниться в 3 раза по своей длине, а шляпа j должна удлиниться в 2 раза по своей длине, верно? i hat не должен двигаться в направлении j hat, потому что вторая координата равна нулю. Но когда я визуализировал анимацию, я получил следующее: см. Изображение

Посмотрите, вместо того, чтобы i hat (зеленый) перемещался из (2, -1) в (6,-3), он немного переместился в направлении j hat?

Почему это так? Может кто-нибудь мне объяснить?

Комментарии:

1. @j1-lee Но вы видели это

2. @j1-lee я понял. Это была проблема не с моей линейной алгеброй, а с manim. На самом деле, когда мы применяем=[[2 ,-1],[-1 , 3]] а потом Б= [[3 , 0],[0 , 2]], мы ожидаем увидеть результирующую матрицу BA= [[6 , -2],[-3 , 6]]. Но manim на самом деле показывает AB .

3. @j1-lee Но поскольку A и B здесь являются матрицами, составной матрицей является BA. Его подобные функции f(g(x)) : f(x) применяются после g (x). Порядок равен g (x), затем f (x). То же самое для матриц

4. @j1-lee Спасибо, я делаю видео, объясняющее примыкания как линейные преобразования.

5. @j1-ли А=[[2 ,-1],[-1 , 3]] состоит в том, чтобы переместить i шляпу в (2,-1) и j шляпу в (-1,3). Итак, в некотором смысле я перемещаю все векторное пространство, а не только один вектор. Итак, каждый вектор в этом векторном пространстве будет преобразован. Вы смотрели это видео ? Он визуализирует все эти преобразования.

Ответ №1:

Когда мы «применяем» матрицу в manim with self.apply_matrix , на самом деле это не применение матрицы.

Например, если мы self.apply_matrix(A) и тогда self.apply_matrix(B) , то мы должны получить матрицу BA, которая является результатом применения B после A.

Но то, что мы на самом деле получаем, — это AB.

А поскольку умножение матриц не является коммутативным, это разные вещи. Вот почему мы получаем неправильную трансформацию.

Не знаю, почему manim ведет себя таким образом.