Діагональна матриця 2x2 – це правило переміщення кожної точки одночасно
Діагональна матриця 2x2 не просто множить числа – застосовуючи її до кожної точки (x, y) у площині, вона визначає лінійне перетворення: правило, яке переміщує всю площину одночасно, зберігаючи початкову точку нерухомою та прямі прямою і рівномірно віддаленими. Все, що матриця робить з цілою нескінченною плоскою, повністю визначається тим, куди вона надсилає лише два вектори, (1,0) та (0,1), оскільки будь-яка точка є комбінацією цих двох:
[ a b ] [x] [ a*x + b*y ] [ c d ] [y] = [ c*x + d*y ] Перший стовпець (a,c) – куди потрапляє вектор (1,0) Другий стовпець (b,d) – куди потрапляє вектор (0,1) Читаючи матрицю по стовпцях, можна передбачити все перетворення без множення жодної точки: перший стовпець буквально є новою позицією точки (1,0), а другий стовпець – нова позиція (0,1), і кожна інша точка рухається лінійною інтерполяцією між ними.
[ a b ] [x] [ a*x + b*y ] [ c d ] [y] = [ c*x + d*y ] column 1, (a,c) -- where (1,0) lands column 2, (b,d) -- where (0,1) lands
Обертання, масштабування та зсув – це один і той же об'єкт
Кожна звична 2-вимірна трансформація є просто конкретним вибором чотирьох чисел a, b, c, d:
обертання на кут тета: [ cos(тета) -sin(тета) ] [ sin(тета) cos(тета) ]
масштабування (sx, sy): [ sx 0 ] [ 0 sy ]
зсув (горизонтальний): [ 1 k ] [ 0 1 ]
Обертальна матриця має стовпці, які завжди мають довжину одиниці та перпендикулярні один до одного – це алгебраїчний підпис обертання, і тому обертання ніколи не спотворюють форми, лише переорієнтовують їх. Матриці масштабування діагональні, незалежно розтягуючи кожен з осей. Зсув утримує один з осей фіксованим, а пропорційно зміщує інший вздовж нього, перетворюючи квадрат на паралелограм. Об’єднання кількох трансформацій – це просто множення їх матриць разом в порядку застосування.
rotation by angle theta: [ cos(theta) -sin(theta) ]
[ sin(theta) cos(theta) ]
scale by (sx, sy): [ sx 0 ]
[ 0 sy ]
shear (horizontal): [ 1 k ]
[ 0 1 ]
Визначник: як матриця змінює площу
Визначник, ad - bc для 2x2 матриці, має точне геометричне значення: він є знаком множника, на який трансформація масштабує площу. Квадрат одиниці відображається на паралелограм, площа якого дорівнює точно |det|. Якщо det = 2, площа будь-якої фігури подвоюється; якщо det = 0,5, площа зменшується вдвічі; і якщо det = 0, трансформація стискає всю площину у розмірності 2 до лінії або точки — повна, незворотна втрата однієї виміру, що й пояснює, чому матриця з визначником 0 не має оберненої.
det = a*d - b*c det > 0 збережено орієнтування (без перевертання), площа масштабується на |det| det знак визначника також важливий: від'ємний визначник означає, що трансформація включає відображення, перевертаючи орієнтацію (за годинниковою стрілкою стає проти годинникової), навіть якщо площа зберігається за величиною.
det = a*d - b*c det > 0 orientation preserved (no flip), area scaled by |det| det < 0 orientation flipped (a mirror is hiding in there), area scaled by |det| det = 0 the plane collapses onto a line or a point -- not invertible
Вектори власної осі: напрямки, які матриця не повертає
Для майже кожного напряму в площині застосування матриці призводить до повороту цього напряму в нове місце. Вектор власної осі – виняток: це напрямок, який матриця лише розтягує або стискає, ніколи не повертаючи його від своєї лінії. Кількість розтягування відповідає власному числу λ:
M v = λ * v v вектор власної осі – напрямок, який не змінюється під дією перетворення (до зміни масштабу) λ власне число – величина, наскільки цей напрям розтягнутий (або інвертований, якщо від’ємне). Для чистого зсуву один вектор власної осі спрямований вздовж фіксованої осі (власне число 1, незмінне), і існує лише одна незалежна власна орієнтація. Для чистої поворотної дії (інше ніж 0 або 180 градусів) реальних векторів власної осі немає – будь-який напрямок повертається, що є алгебраїчним відбитком повороту і пояснює, чому його власні числа виходять у вигляді комплексно-спряженої пари замість дійсних чисел. Вектори власної осі мають значення далеко за межами цієї симуляції: вони – осі, вздовж яких повторне застосування матриці (наприклад, у Марківській ланцюзі, фізичному режимі або коваріансній матриці машинного навчання) поводиться просто, росте або зменшується на фіксовану величину кожного разу, а не заплутаний з усіма іншими напрямками.
M v = lambda * v v eigenvector -- a direction unchanged by the transformation (up to scale) lambda eigenvalue -- how much that direction is stretched (or flipped, if negative)
Frequently asked questions
Який найшвидший спосіб передбачити, що робить матриця, не множачи кожен пункт?
Прочитайте її два стовпці. Перший стовпець показує точно, куди матриця відправляє точку (1,0); другий стовпець показує точно, куди вона відправляє точку (0,1). Оскільки кожна інша точка в площині є комбінацією цих двох, бачачи, куди потрапляють стовпці, ви можете одразу зрозуміти всю трансформацію.
Чому визначник дорівнює нулю означає, що матриця не має оберненої?
Визначник – це фактор, на який матриця масштабує площу. Визначник дорівнює нулю означає, що кожну форму стискають до нуля – вся двовимірна площа здувається в одну лінію або точку. Інформація про те, які з (тепер нескінченно багатьох) початкових точок відображаються на задане вихідне значення, втрачається, тому немає способу обернути трансформацію та не існує оберненої матриці.
Чому у чистої поворотної матриці немає власних векторів?
Власний вектор – це напрямок, в якому матриця лише розтягує, ніколи не відхиляє від себе. Істинний поворот (крім 0 або 180 градусів) повертає кожну окрему точку в площині під одним і тим самим кутом, тому немає жодного напрямку, який не був повернутий – алгебраїчно це відображається як те, що власні значення виходять у вигляді комплексно-спряженої пари замість дійсних чисел.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте Matrix Transformations і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію Matrix Transformations