Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Матричное представление преобразований

Что такое матрица

 

Матрица - довольно многозначное слово, которое пришло в нашу речь из немецкого языка. Это слово можно встретить в сфере математики, техники и электроники и даже в сфере киноиндустрии. Но сейчас не об этом. Итак, что же такое матрица?

В математике термин "матрица" обозначает математический объект, который представляет собой прямоугольную таблицу, состоящую из целых или дробных чисел. По сути дела, это совокупность строк и столбцов, на пересечении которых располагаются элементы матрицы. Размер матрицы определяется как раз количеством строк и столбцов. Для чего нужны матрицы в математике? В основном они применяются для удобного и компактного расположения систем линейных уравнений. При такой записи количество строк матрицы будет равно количеству уравнений в системе, а столбцы будут соответствовать неизвестным. Таким образом упрощается поиск неизвестных. С матрицами можно производить алгебраические операции: умножение, сложение, умножение на матрицу вектора и на скаляр.

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

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

Обычно матрицу обозначают заглавной буквой латинского алфавита и выделяют круглыми скобками «(…)» (встречается также выделение квадратными скобками «[…]», двойными прямыми линиями "||…||").

Числа, составляющие матрицу (элементы матрицы), обозначают той же буквой, что и саму матрицу, но маленькой.

У каждого элемента матрицы есть 2 нижних индекса () - первый «i» обозначает номер строки, в которой находится элемент, а второй «j» - номер столбца. Говорят матрица размерности  подразумевая, что в матрице n строк и m столбцов.

 

Матричное представление преобразований

 

Матрица m×n - это набор чисел, распределенных по m строкам и по n столбцам. На приведенном ниже рисунке изображены различные матрицы.

 

 

Две матрицы одинакового размера можно складывать путем складывания соответствующих элементов матриц. На приведенном ниже рисунке показано два примера сложения матриц.

 

 

Матрицу размера m×n можно умножить на матрицу размера n×p, в результате чего получится матрица размера m×p. Число столбцов в первой из перемножаемых матриц должно совпадать с числом строк во второй из перемножаемых матриц. Например, матрицу размером 4×2 можно умножить на матрицу размером 2×3, в результате чего получится матрица размером 4×3.

Точки на плоскости, а также строки и столбцы матрицы можно рассматривать как векторы. Например, (2, 5) - это вектор из двух компонентов, а (3, 7, 1) - это вектор из трех компонентов. Скалярным произведением двух векторов называется число, получаемое по следующим правилам:

 

(a, b) • (c, d) = ac + bd

(a, b, c) • (d, e, f) = ad + be + cf

 

Например, скалярное произведение векторов (2, 3) и (5, 4) равно (2)(5) + (3)(4) = 22. Скалярное произведение векторов (2, 5, 1) и (4, 3, 1) равно (2)(4) + (5)(3) + (1)(1) = 24. Обратите внимание, что скалярное произведение векторов - это число, а не вектор. Также обратите внимание, что скалярное произведение двух векторов можно вычислить, только если у этих векторов одинаковое количество компонентов.

Обозначение A(i, j) соответствует элементу матрицы A, расположенному на пересечении i-ой строки и j-го столбца. Например, запись A(3, 2) обозначает элемент матрицы A, расположенный на пересечении 3-ей строки и 2-го столбца. Предположим, что A, B и C - это матрицы, причем AB = C. Элементы матрицы C вычисляются следующим образом:

(i, j) = (i-я строка A) • (j-й столбец B)

 

На приведенном ниже рисунке показано несколько примеров перемножения матриц.

 


 

 

Если рассматривать точки на плоскости в качестве матриц размером 1×2, эти точки можно подвергать преобразованиям, умножая их матрицы на матрицу размером 2×2. На приведенном ниже рисунке изображены результаты применения различных преобразований к точке с координатами (2, 1).

 

 

Все преобразования, показанные на приведенном ранее рисунке, являются линейными преобразованиями. Некоторые другие преобразования, такие как сдвиг, не являются линейными и не могут быть осуществлены путем умножения на матрицу размером 2×2. Предположим, что нужно взять точку с координатами (2, 1), повернуть ее на 90 градусов относительно начала координат, сдвинуть на 3 единицы вдоль оси X и на 4 единицы вдоль оси Y. Такое преобразование можно выполнить путем выполнения умножения и сложения матриц.

 

 

Линейное преобразование (умножение на матрицу размером 2×2) и сдвиг (прибавление матрицы размером 1×2), вместе называются аффинным преобразованием. Альтернативой заданию аффинного преобразования через пару матриц (одна для линейного преобразования и одна для сдвига) является запись всего преобразования в виде одной матрицы размером 3×3. Чтобы можно было использовать такие матрицы преобразований, точки плоскости нужно хранить в виде матриц размером 1×3, с фиктивной третьей координатой. Обычно третью координату делают равной 1. Например, точка с координатами (2, 1) представляется матрицей [2 1 1]. На приведенном ниже рисунке представлен пример аффинного преобразования (поворот на 90 градусов; сдвиг на 3 единицы по оси X и на 4 единицы по оси Y), заданного умножением на матрицу размером 3×3.


 

 

В предыдущем примере точка (2, 1) преобразуется в точку (2, 6). Обратите внимание, что третий столбец матрицы размером 3×3 содержит числа 0, 0, 1.Такие значения обязательны для всех матриц размером 3×3, задающих аффинные преобразования. Смысловую нагрузку несут только шесть чисел в первом и втором столбцах матрицы преобразования. Верхняя левая часть матрицы размером 2×2 задает линейную часть преобразования, а первые два числа в третьей строке матрицы задают сдвиг.

 

 

Интерфейс GDI+ позволяет хранить аффинные преобразования в объекте Matrix <http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.matrix(v=vs.110).aspx>. Так как третий столбец матрицы, задающей аффинное преобразование, всегда равен (0, 0, 1), при создании объекта Matrix <http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.matrix(v=vs.110).aspx> нужно задавать только шесть чисел в первых двух столбцах. Инструкция Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) создает матрицу, изображенную на приведенном выше рисунке.

Составные преобразования <javascript:void(0)>

 

Составным преобразованием называется серия последовательно применяемых преобразований. Рассмотрим следующие матрицы и преобразования:

Матрица A Поворот на 90 градусов.
Матрица B Масштабирование по оси X с коэффициентом 2.
Матрица C Сдвиг на три единицы по оси Y.

 

Если взять матричное представление для точки с координатами (2, 1) - [2 1 1] - и последовательно умножить его на матрицу A, затем на B, а затем на C, точка (2, 1) последовательно подвергнется трем соответствующим преобразованиям.

 

[2 1 1]ABC = [-2 5 1]

 

Вместо того чтобы хранить три части составного преобразования в отдельных матрицах, можно перемножить матрицы A, B и C и получить одну матрицу размером 3×3, содержащую все составное преобразование. Предположим, что ABC = D. Тогда точка, умноженная на матрицу D, подвергается тем же преобразованиям, что и после последовательного умножения на матрицы A, B и C.

 

[2 1 1]D = [-2 5 1]

 

На приведенном ниже рисунке показаны матрицы A, B, C и D.

 

 

Тот факт, что матрица составного преобразования может быть создана путем перемножения отдельных матриц преобразования, означает, что любая последовательность аффинных преобразований может быть задана одним объектом Matrix <http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.matrix(v=vs.110).aspx>.

Важно помнить

Порядок применения (перемножения) матриц преобразования имеет значение. В общем случае поворот, затем масштабирование и затем сдвиг производят преобразование, отличное от того, которое получается после применения масштабирования, затем поворота и затем сдвига. Поэтому важное значение имеет порядок, в котором перемножаются матрицы. В общем случае ABC не равно BAC.

Класс Matrix <http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.matrix(v=vs.110).aspx> содержит несколько методов для составных преобразований: Multiply <http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.matrix.multiply(v=vs.110).aspx>, Rotate <http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.matrix.rotate(v=vs.110).aspx>, RotateAt <http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.matrix.rotateat(v=vs.110).aspx>, Scale <http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.matrix.scale(v=vs.110).aspx>, Shear <http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.matrix.shear(v=vs.110).aspx> и Translate <http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.matrix.translate(v=vs.110).aspx>. В приведенном ниже примере демонстрируется создание матрицы составного преобразования, реализующей поворот на 30 градусов, затем масштабирование вдоль оси Y с коэффициентом 2 и сдвиг на 5 единиц вдоль оси X.

На приведенном ниже рисунке изображена полученная матрица.

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...