Как сделать из вектора матрицу

Знакомство с матрицами

Понятие и базовые операции.

Разработчики нейросетей говорят, что все нейросети — это просто бесконечное перемножение матриц. Мы решили разобраться, что это за матрицы и как их перемножать, а для этого пришлось полезть в линейную алгебру. И это оказалось не так сложно, как мы думали:

  • Вектор — это просто группа из нескольких чисел, выстроенных в определённой последовательности. Например, рост и вес человека можно представить как вектор (172, 80). Ничего сложного.
  • У вектора может быть внутри сколько угодно чисел. Главное — чтобы мы договорились, что для нас значат эти числа, и не меняли их местами просто так, произвольно.
  • Векторы можно складывать, вычитать, умножать. Это чуть сложнее, чем с обычными числами.
  • У вектора есть понятие линейной зависимости. Грубо говоря — параллельны друг другу векторы или нет. От этого зависит, какие операции можно делать с этими векторами.

Вектор — это «кирпичик» линейной алгебры. На его основе мы переходим к понятию матрицы.

Содержание
  1. Что такое матрица
  2. Простые операции с матрицами
  3. Сложение и вычитание матриц
  4. Умножение матриц
  5. Что дальше
  6. learnopengl. Урок 1.7 — Трансформации
  7. Вектора
  8. Скалярные векторные операции
  9. Обратный вектор
  10. Сложение и вычитание
  11. Длина
  12. Умножение вектора на вектор
  13. Скалярное произведение
  14. Векторное произведение
  15. Матрицы
  16. Сложение и вычитание
  17. Умножение матрицы на скаляр
  18. Умножение матриц
  19. Умножение матрицы на вектор
  20. Единичная матрица
  21. Матрица масштабирования
  22. Матрица сдвига
  23. Матрица вращения
  24. Комбинирование матриц
  25. На практике
  26. Содержание
  27. 1. Базовые сведения
  28. 1.1 Матрицы
  29. 1.2. Простейшие операции с матрицами
  30. 1.3. Умножение матриц
  31. 1.4. Квадратные матрицы
  32. 1.5. След и определитель
  33. 1.6. Векторы
  34. 1.7. Простейшие операции с векторами
  35. 1.8. Произведения векторов
  36. 1.9. Норма вектора
  37. 1.10. Угол между векторами
  38. 1.11. Векторное представление матрицы
  39. 1.12. Линейно зависимые векторы
  40. 1.13. Ранг матрицы
  41. 1.14. Обратная матрица
  42. 1.15. Псевдообратная матрица
  43. 1.16. Умножение вектора на матрицу
  44. 2. Дополнительная информация
  45. 2.1. Системы линейных уравнений
  46. 2.2. Билинейные и квадратичные формы
  47. 2.3. Положительно определенные матрицы
  48. 2.4. Разложение Холецкого
  49. 2.5. Полярное разложение
  50. 2.6. Собственные векторы и собственные значения
  51. 2.7. Собственные значения
  52. 2.8. Собственные векторы
  53. 2.9. Эквивалентные и подобные матрицы
  54. 2.10. Приведение матрицы к диагональному виду
  55. 2.11. Разложение по сингулярным значениям (SVD)
  56. 2.12. Линейное пространство
  57. 2.13. Базис линейного пространства
  58. 2.14. Геометрическая интерпретация
  59. 2.15. Множественность базисов
  60. 2.16. Подпространство
  61. 2.17. Проекция на подпространство
  62. Заключение

Видео:Собственные векторы и собственные значения матрицыСкачать

Собственные векторы и собственные значения матрицы

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

Если вектор — это строка с числами в определённом порядке, то матрица — это таблица с числами в определённом порядке. Как у любой таблицы, у матрицы есть столбцы и строки. В них сидят какие-то числа. Всё вместе — это математический объект, то есть в каких-то случаях всю эту таблицу можно рассматривать как единое целое и совершать с ним операции.

Матрицы принято обозначать большими буквами латинского алфавита вроде А, В, С, D и так далее.

Числа внутри матрицы называют элементами. Каждый элемент обозначается двумя цифрами: первая цифра указывает на строку, а вторая — на столбец. Это адрес числа внутри матрицы. Например, элемент А₂₃ означает, что нужное число находится во второй строке и третьем столбце. Нумерация элементов нужна для записи формул и устного объяснения того, где находится нужное число в матрице.

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

В этой статье и в следующих материалах мы будем рассматривать разные виды матрицы и постепенно изучим их особенности.

Как сделать из вектора матрицуОбщая схема матрицы Как сделать из вектора матрицуПример квадратной матрицы с пятью строками и столбцами. Записывается как матрица размера 5×5. В числовой матрице мы не нумеруем элементы — они закрепляются за числами по умолчанию. Например, элементу А₂₃ соответствует число три

Видео:Матрицы и векторыСкачать

Матрицы и векторы

Простые операции с матрицами

Вынесение минуса за пределы матрицы. Если внутри матрицы у большинства элементов знак минус, то часто это мешает расчётам или приводит к ошибкам. Чтобы этого избежать, от минуса избавляются. Для этого нужно вынести минус за пределы матрицы и изменить знак всех элементов внутри самой матрицы.

И наоборот: если внутри матрицы у большинства элементов знак минус и перед матрицей стоит минус, то минус можно внести в матрицу.

Как сделать из вектора матрицуВыносим минус за пределы матрицы и получаем вместо двадцати одного отрицательного элемента — четыре Как сделать из вектора матрицуПеред матрицей минус, и внутри у большинства элементов минус. Вносим минус в матрицу и делаем её удобной для дальнейших вычислений

Умножение матрицы на число. Для умножения матрицы на число достаточно каждый элемент матрицы умножить на это число.

Как сделать из вектора матрицуПример умножения матрицы на число

Транспонирование матрицы. Это операция, которая позже нам понадобится для решения матричных уравнений. Для транспонирования мы берём известную матрицу, меняем в ней местами строки со столбцами и получаем новую матрицу. Как бы поставили матрицу набок.

⚠️ При этом в матрице запрещено в произвольном порядке менять элементы. Зато можно полностью менять местами строки или столбцы. Если мы поменяем местами первую и вторую строку, то это останется прежняя матрица.

Как сделать из вектора матрицуСхема транспонирования матриц: первая строка переходит в первый столбец, вторая строка — во второй столбец и так далее в зависимости от количества элементов матрицы Как сделать из вектора матрицуПример транспонирования. Транспонированная матрица обозначается буквой той же матрицы, из которой она получилась + надстрочечный индекс в виде печатной буквы «Т» Как сделать из вектора матрицуМатрицу можно перетасовывать, но это нужно делать по правилам. Транспонирование — одно из таких правил

Видео:Собственные значения и собственные векторы матрицы (4)Скачать

Собственные значения и собственные векторы матрицы (4)

Сложение и вычитание матриц

Если в нескольких матрицах совпадает число строк и столбцов, то мы можем их складывать и вычитать. Для вычислений нам нужно поэлементно сложить или вычесть каждый элемент матриц: первый элемент первой матрицы складываем с первым элементом второй матрицы или вычитаем из него и так далее. В результате получаем новую матрицу.

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

Видео:Занятие 12. Векторы и матрицыСкачать

Занятие 12. Векторы и матрицы

Умножение матриц

Матрицы умножаются по принципу строка на столбец. Мы умножаем первую строку первой матрицы, на первый столбец второй матрицы, складываем результаты и получаем первый элемент новой матрицы. По аналогичной схеме вычисляем все остальные элементы. Звучит запутанно, поэтому идём по шагам:

  1. У нас есть две матрицы A и B. Их нужно перемножить, чтобы получить новую матрицу C.
  2. Размер матрицы A два на два: есть две строки и два столбца. Первая строка состоит из элементов А₁₁ и А₁₂; вторая — А₂₁ и А₂₂.
  3. У матрицы B такая же размерность: есть две строки и два столбца. Первая строка состоит из элементов B₁₁ и B₁₂; вторая — B₂₁ и B₂₂.
  4. У нас две одинаковые по размеру матрицы с двумя строками и столбцами. Это значит, что и матрица C будет размером два на два. Первая строка будет состоять из элементов C₁₁ и C₁₂; вторая — C₂₁ и C₂₂.
  5. Считаем элемент C₁₁. Умножаем первый элемент первой строки матрицы А (А₁₁) на первый элемент первого столбика матрицы B (B₁₁). Это первая часть, после которой ставим знак плюс. Вторая часть: умножаем второй элемент первой строчки матрицы А (А₁₂) на второй элемент первого столбика матрицы B (B₂₁). Складываем обе части и получаем первый элемент первой строки матрицы С (C₁₁).
  6. Считаем элемент C₁₂. Умножаем первый элемент первой строки матрицы А (А₁₁) на первый элемент второго столбика матрицы B (B₁₂). Это первая часть. Вторая часть: умножаем второй элемент первой строчки матрицы А (А₁₂) на второй элемент второго столбика матрицы B (B₂₂). Складываем части и получаем второй элемент первой строки матрицы С (C₁₂).
  7. Считаем элемент C₂₁. Умножаем первый элемент второй строки матрицы А (А₂₁) на первый элемент первого столбика матрицы B (B₁₁). Это первая часть. Вторая часть: умножаем второй элемент второй строки матрицы А (А₂₂) на второй элемент первого столбика матрицы B (B₂₁). Складываем части и получаем первый элемент второй строки матрицы С (C₂₁).
  8. Считаем элемент C₂₂. Умножаем первый элемент второй строки матрицы А (А₂₁) на первый элемент второго столбика матрицы B (B₁₂). Это первая часть. Вторая часть: умножаем второй элемент второй строки матрицы А (А₂₂) на второй элемент второго столбика матрицы B (B₂₂). Складываем части и получаем второй элемент второй строки матрицы С (C₂₂).

Если нам нужно найти матрицу в квадрате, то мы умножаем эту матрицу на саму себя. Если нужна матрица в кубе — умножаем её на саму себя три раза и так далее в зависимости от количества степеней. Если в одной из матриц все элементы нули, то она считается нулевой и после умножения на другую матрицу даёт нулевую матрицу — это как нуль умноженный на число всегда даёт нуль.

Как сделать из вектора матрицуФормула умножения матриц Как сделать из вектора матрицуПример умножения квадратных матриц размерностью 2×2

Видео:#11. Произведение матриц и векторов, элементы линейной алгебры | NumPy урокиСкачать

#11. Произведение матриц и векторов, элементы линейной алгебры | NumPy уроки

Что дальше

В следующий раз продолжим знакомиться с базовыми понятиями, которые нам понадобятся для решения матричных уравнений. А на сегодня Нео свободен 👽

Видео:Урок 1. Матрицы, определитель матрицы и ранг матрицы | Высшая математика | TutorOnlineСкачать

Урок 1. Матрицы, определитель матрицы и ранг матрицы | Высшая математика | TutorOnline

learnopengl. Урок 1.7 — Трансформации

Как сделать из вектора матрицуТеперь мы знаем как создавать объекты, раскрашивать их и накладывать на них текстуры, но они все еще довольно скучны, поскольку являются статическими объектами. Мы можем попробовать заставить их двигаться изменяя координаты вершин для каждого кадра, но это довольно муторно и требует процессорных вычислений. Есть гораздо более удобный способ для совершения трансформаций над объектом — это применение матриц. Но это не значит, что мы сейчас будем разговаривать про кунг фу и искусственный цифровой мир.

Часть 2. Базовое освещение

Часть 3. Загрузка 3D-моделей

Часть 4. Продвинутые возможности OpenGL

Часть 5. Продвинутое освещение

Матрицы — это очень мощные математические конструкции, которые поначалу пугают, но стоит к ним привыкнуть и они сразу станут крайне полезными. Во время обсуждения матриц требуется также немного углубиться в математику. Также для более склонных к математике читателей я оставлю ссылки на дополнительные ресурсы по этой теме.

Как бы то ни было, для полного понимания трансформаций мы, во первых, должны разобраться с векторами. Основная задача этой главы — дать вам основные математические знания, которые нам понадобятся позже.

Видео:Собственные векторы и собственные числа линейного оператораСкачать

Собственные векторы и собственные числа линейного оператора

Вектора

В самом простом определении, вектора — это не более чем направления. У вектора может быть направление и магнитуда (также иногда называется модулем или длиной). Вы можете представлять себе вектора в качестве направлений на карте сокровищ: “Сделайте 10 шагов налево, теперь 3 шага на север и теперь 5 шагов направо”. В данном примере “налево” — это направление, а “10 шагов” — это длина вектора. Направления на этой карте сокровищ составляются из 3 векторов. Вектора могут иметь любую размерность, но чаще всего используются двухкомпонентные и четырехкомпонентные вектора. Если вектор двухкомпонентный, то он описывает направление на плоскости (или на 2D графике), если вектор трехкомпонентный, то он описывает направление в трехмерном мире.

Ниже вы можете видеть 3 вектора, каждый из которых представлен в виде (x, y) в качестве стрелок на 2D графике. Поскольку более интуитивно представлять вектора в 2D (чем в 3D), то вы можете думать о 2D векторах, как о 3D векторах, но с нулевой z координатой. До тех пор, пока вектор описывает направление — позиция вектора не меняет его значения. На графике можно увидеть, что вектора v и w одинаковы, хотя из позиции отличаются:

Как сделать из вектора матрицу

Когда математики описывают вектора, они предпочитают использовать символы нижнего регистра с небольшой черточкой сверху. Пример:

Как сделать из вектора матрицу

Поскольку вектора зачастую описывают направление — то иногда их тяжело представить в виде позиции. Обычно мы визуализируем вектор следующим образом: мы устанавливаем центр в (0, 0, 0), а затем указываем направление, описанное точкой. Таким образом получается позиционный вектор (также мы можем взять за центр другую точку, а потом сказать “Этот вектор указывает на точку в пространстве из этой точки”). Позиционный вектор (3, 5) будет указывать на точку (3, 5) на графе с основанием (0, 0). С помощью векторов мы можем описывать как направления так и позиции в двухмерном и трехмерном пространствах.

Также мы можем производить над векторами некоторые математические действия.

Скалярные векторные операции

Скаляр — это одно число (или однокомпонентный вектор, если вы хотите продолжать работать с векторами). Во время сложения/вычитания/умножения или деления вектора на скаляр мы просто складываем/вычитаем/умножаем или делим каждый элемент вектора на этот скаляр. Пример:

Как сделать из вектора матрицу

Где вместо сложения может быть вычитание, умножение или деление.

Обратный вектор

Обращение (отрицание) вектора — это получение вектора, чье направление противоположно исходному. Обратный вектор для вектора, указывающего на северо-восток, будет вектор, указывающий на юго-запад. Для обращения вектора мы просто умножаем вектор на -1. Пример:

Как сделать из вектора матрицу

Сложение и вычитание

Сложение двух векторов производится покомпонентно. Пример:

Как сделать из вектора матрицу

Визуально сумма векторов v=(4,2) и k=(1,2) выглядит так:

Как сделать из вектора матрицу

Также как и с обычным сложением и вычитанием, вычитание векторов — это тоже сложение, но с обратным вторым вектором:

Как сделать из вектора матрицу

Вычитание векторов друг из друга порождают вектор, который является разницей в позициях операндов:

Как сделать из вектора матрицу

Длина

Для получения длины (модуля) вектора мы используем теорему Пифагора, которые вы, возможно, помните со школы. Вектор образует треугольник, если представить его компоненты в качестве сторон треугольника:

Как сделать из вектора матрицу

Поскольку длина сторон (x, y) известна, и мы хотим узнать длину гипотенузы — то мы делаем это следующим образом:

Как сделать из вектора матрицу

Где ||v|| — это длина вектора v. Такая формула легко расширяется в 3D добалением z^2. Пример расчета длины:

Как сделать из вектора матрицу

Вычисленное значение: 4.47

Также существует специальный вид векторов, называемый единичными векторами. Особенность таких векторов в том, что их длина всегда равна 1. Мы можем преобразовать любой вектор в единичный делением этого вектора на его длину:

Как сделать из вектора матрицу

Такой вектор называется нормализованным. Единичные векторы обозначаются с небольшой крышей над буквой. С ними, также, проще работать, поскольку нам приходится заботиться только о направлении такого вектора.

Видео:Линал 2.6. Умножение матрицы на векторСкачать

Линал 2.6. Умножение матрицы на вектор

Умножение вектора на вектор

Умножение двух векторов выполняется довольно странно. Нормальное умножение не применимо, поскольку оно не имеет визуального смысла, но у нас есть 2 специфических подхода, из которых можно выбирать во время умножения: первый — скалярное произведение, которое изображается как точка, а второе — векторное произведение, которое изображается как крест.

Скалярное произведение

Скалярное произведение двух векторов эквивалентно скалярному произведению длин этих векторов, умноженное на косинус угла между ними. Если это предложение сбило вас с толку, то посмотрите на формулу:

Как сделать из вектора матрицу

Где угол между векторами описан как тета. Почему это может быть интересно? Что же, представим если вектора v и k являются единичными векторами. Соответственно формула сокращается до:

Как сделать из вектора матрицу

Теперь скалярное произведение определяет только угол между двумя векторами. Вы возможно помните, что функция cos становится 0, с углом в 90 градусов ну и 1 с углом 0. Это позволяет легко проверять ортогональны ли вектора или параллельны друг другу (ортогональность означает, что вектора прямоугольны). Если хотите узнать больше про sin или cosine, то рекомендую видео Khan Academy про базовую тригонометрию.

Вы также можете вычислить угол между двумя неединичными векторами, но для этого вам придется разделить результат на длины этих векторов, чтобы остаться только с cos.

Так как же считать скалярное произведение? Скалярное произведение — это умножение компонентов векторов и последующее сложение результатов. Пример:

Как сделать из вектора матрицу

Для вычисления угла между векторами нам потребуется обратить функцию косинуса (cos^-1) в данном случае — это 143.1 градуса. Таким образом мы эффективно вычислили угол между этими двумя векторами. Скалярное произведение очень полезно во время работы со светом.

Векторное произведение

Векторное произведение возможно только в трехмерном пространстве и принимает на вход два непараллельных вектора, а возвращает вектор, который ортогонален входным. Если входные вектора ортогональны друг другу, то векторное произведение создаст 3 ортогональных вектора. Далее вы узнаете, почему это может быть полезно. Следующее изображение показывает как это выглядит трехмерном пространстве:

Как сделать из вектора матрицу

В отличии от других операций, векторное произведение не очень интуитивно без углубления в линейную алгебру, так что лучше просто запомнить формулу. Ниже представлено векторное произведение между двумя ортогональными векторами A и B.

Как сделать из вектора матрицу

Как вы можете видеть, в этой формуле не очень много смысла. В любом случае после всех этих шагов вы получите вектор, который будет ортогонален входным.

Видео:Умножение матрицСкачать

Умножение матриц

Матрицы

Теперь, после того как мы обсудили почти все на счет векторов, настало время углубиться в матрицы. Матрица, обычно, это четырехугольних из набора чисел, символов и/или выражений. Вот пример матрицы 2х3:

Как сделать из вектора матрицу

Доступ к элементам матрицы осуществляется с помощью (i,j), где i — это строка, а j — это столбец. Вот почему матрица выше называется 2х3 (3 столбца и 2 строки). Такая система — обратна той, что используется в 2D графах (x, y). Для получения значения 4 из матрицы выше, мы должны указать индекс (2, 1) (вторая строка, первый столбец).

Матрицы, по факту, ничего более чем четырехугольные массивы математических выражений. Они также обладают очень приятным набором математических свойств и, также как и вектора, имеют несколько операций — сложение, вычитание и умножение.

Сложение и вычитание

Сложение матрицы со скаляром выполняется следующим образом:

Как сделать из вектора матрицу

Скаляр просто прибавляется во всем элементам матрицы. Тоже самое происходит и при вычитании:

Как сделать из вектора матрицу

Сложение и вычитание между двумя матрицами выполняется поэлементно. Таким образом операции сложения и вычитания могут быть применены только к матрицам одинакового размера. Пример:

Как сделать из вектора матрицу

Тоже самое, только с вычитанием:

Как сделать из вектора матрицу

Умножение матрицы на скаляр

Также как сложение и вычитание, умножение матрицы на скаляр производится умножением каждого элемента матрицы на скаляр. Пример:

Как сделать из вектора матрицу

Видео:4. Умножение матриц, примеры с решениемСкачать

4. Умножение матриц, примеры с решением

Умножение матриц

Умножение матриц не очень сложное, но и не такое простое. Умножение имеет несколько ограничений:

  1. Вы можете умножать только матрицы, где число столбцов первой совпадает с числом строк второй матрицы.
  2. Умножение матриц не коммутативно. A * B != B * A.

Вот пример умножения двух матриц 2х2:

Как сделать из вектора матрицу

Сейчас, возможно вы пытаетесь понять, что же тут вообще происходит? Умножение матриц — это комбинация из нормального умножения и сложения с использованием строк левой матрицы со столбцами правой матрицы. Следующее изображение должно внести немного ясности:

Как сделать из вектора матрицу

В начале мы берем верхнюю строку левой матрицы и левый столбец правой матрицы. Выбранные нами строка и столбец определяет то, какой элемент результирующей матрицы мы собираемся рассчитать. Если бы мы взяли первую строку левой матрицы, то мы собираемся работать с верхней строкой результирующей матрицы, затем мы выбираем столбец в правой матрице, он определяет то, с каким столбцом результирующей матрицы мы работаем. Для вычисления нижнего-правого элемента мы должны выбрать нижнюю строку левой матрицы и правый столбец правой матрицы.

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

В результате получается матрица размером (n, m), где n — количество строк в левой матрице, а m — количество столбцов в правой матрице.

Если у вас возникла проблема — то не волнуйтесь. Просто продолжайте вычислять руками и возвращайтесь к этому уроку, когда возникают сложности. Вскоре умножение матриц будет на автомате.

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

Как сделать из вектора матрицу

Как вы можете видеть умножение матриц довольно муторный процесс с большим количеством мест, где можно ошибиться. И эти проблемы лишь растут при увеличении размеров. Если вы все еще жаждите больше математических свойств матриц я крайне рекомендую видео Khan Academy.

Умножение матрицы на вектор

Мы уже использовали вектора в прошлых уроках. Мы использовали их, чтобы представлять позиции, цвета и текстурные координаты. Теперь давайте немного углубимся в кроличью нору и расскажем, что вектор — это на самом деле просто Nx1 матрица, где N — это количество компонентов вектора. Если вы чуть подумаете об этом — это имеет смысл. Вектора, прямо как матрицы — массив чисел, но только с 1 колонкой. И как же нам поможет эта информация? Что же, если у нас есть матрица MxN мы сможем ее умножить на Nx1 вектор, так как количество столбцов матрицы равно количеству строк вектора.

Но зачем нам вообще уметь умножать матрицу на вектор? Довольно много различных 3D/2D трансформаций можно выполнить, умножая матрицу на вектор, получая измененный вектор. Если вы все еще не уверены в том, что полностью понимаете текст выше, то вот немного примеров:

Видео:Собственные значения и собственные векторыСкачать

Собственные значения и собственные векторы

Единичная матрица

В OpenGL обычно работают с матрицами трансформации размерами 4х4 по той причине, что большинство векторов имеет 4 компонента. Самая простая матрица трансформации которую можно обсудить — это единичная матрица. Единичная матрица — это NxN матрица, заполненная нулями, но с 1 по диагонали. Как мы можете заметить эта матрица совершенно не изменяет вектор:

Как сделать из вектора матрицу

Вектор выглядит нетронутым. Это становится очевидно из правил умножения: первый результирующий элемент — это каждый элемент первой строки матрицы, умноженные на каждый элемент вектора. Поскольку каждый элемент строки равен 0, кроме первого — то мы получаем 1 * 1 + 0 * 2 + 0 * 3 + 0 * 4 = 1. Тоже самое применяется и к остальным 3 элементам вектора.

Вы можете спросить, зачем вообще может понадобится матрица трансформации, которая ничего не трансформирует? Единичная матрица зачастую является отправной точкой для генерации других матриц трансформации и если мы углубимся в линейную алгебру, это также очень удобная матрица для доказательства теорем и решения линейных уравнений.

Видео:Математика без Ху!ни. Метод Гаусса.Скачать

Математика без Ху!ни. Метод Гаусса.

Матрица масштабирования

Когда мы масштабируем вектор — мы увеличиваем длину стрелки на величину масштабирования, сохраняя направление. Пока мы работаем в 2 или 3 размерностях мы можем определить масштабирование вектором из 2 или 3 величин, каждая из которых масштабирует одну из осей (x, y или z).

Давайте попробуем масштабировать вектор v = (3,2). Мы будем масштабировать вектор по оси x на 0.5, что сделает его в 2 раза уже; и масштабируем вектор по оси y на 2, что увеличит высоту в 2 раза. Давайте посмотрим как будет выглядеть если мы масштабируем вектор на (0.5, 2). Запишем результат в виде s.

Как сделать из вектора матрицу

Помните, что OpenGL зачастую работает в 3D пространстве, соответственно для 2D можно оставить Z координату, равную 1. Операция масштабирования, которую мы только что выполнили, является неоднородной, поскольку величина масштабирования для каждой оси различается. Если бы величина масштабирования была бы одинаковой — то такое преобразование называется однородным.

Давайте построим матрицу трансформации которая выполнит для нас масштабирование. Мы уже увидели на единичной матрице, что диагональный элемент будет умножен на соответствующий элемент вектора. Что если мы заменим единицы в единичной матрице на тройки? В таком случае мы умножим все элементы вектора на это значение. Соответственно если мы представим величины масштабирования как (S1, S2, S3) то мы сможем определить матрицу масштабирования для любого вектора (x, y, z):

Как сделать из вектора матрицу

Заметьте, что 4 элемент вектора равняется 1. Этот компонент обозначается как w и будет потом использован для других задач.

Матрица сдвига

Сдвиг — это процесс добавления одного вектора к другому для получения нового вектора с другой позицией, то-есть сдвиг вектора на основании вектора сдвига. Мы уже обсуждали сложение векторов, поэтому для вас это не будет чем-то новым.
Также как и с матрицей масштабирования в матрице 4х4 есть несколько позиций для выполнения требуемых операций, для сдвига — это верхние 3 элемента четвертой колонки. Если мы представим вектор сдвига как (Tx, Ty, Tz) — то мы можем определить матрицу сдвига следующим образом:

Как сделать из вектора матрицу

Это работает, потому что все значения вектора умножаются на w компонент вектора и складываются с начальным значениями. Это было бы невозможно при использовании матриц 3х3.

Гомогенные координаты
Компонента вектора w также называется гомогенной координатой. Для получения 3D вектора из гомогенной координаты мы делим x, y и z координаты на w. Обычно этого не замечают, так как w большую часть времени равна 1.0. Использование гомогенных координат имеет несколько преимуществ: они позволяют нам выполнять сдвиги на 3D векторах (без w компоненты это было бы невозможно) и в следующей главе мы используем значение w для создания 3D визуализаций.
Также когда гомогенная координата равна 0 — то вектор считается вектором направления, так как вектор с компонентой w равной 0 не может быть сдвинут.

С матрицей сдвига мы можем двигать объекты по всем 3 направлениям (x, y, z), что делает эту матрицу крайне полезной для наших задач.

Матрица вращения

Последние пару трансформаций были довольно просты для понимания и представления в 2D или 3D пространстве, но вращения немного более заковыристые. Если вы хотите узнать как же именно эти матрицы формируются — то я рекомендую видео Khan Academy про линейную алгебру.

Для начала давайте определим что вообще такое — вращение вектора. Вращение в 2D и 3D определяется углом. Угол может выражаться в углах или в радианах, в которых полный оборот — это 360 градусов или 2Pi соответственно. Я предпочитаю работать с градусами, поскольку они более логичны для меня.

Большинство вращательных функций требует угол в радианах, но благо преобразование из одной системы в другую выполнить довольно просто:
Градусы = радианы * (180.0f / PI)
Радианы = градусы * (PI / 180.0f)
Где PI примерно 3.14159265359

Вращение на половину круга — требует от нас вращения на 360/2 = 180 градусов. Вращение на 1/5 направо требует от нас вращение на 360/5 = 72 градуса направо. Вот пример обычного 2D вектора, где v повернут на 72 градуса направо от k.

Как сделать из вектора матрицу

Вращение в 3D описывается углом и осью вращения. Угол определяет то насколько вектор будет повернут относительно данной оси. При вращении 2D векторов в 3D мире, к примеру, мы установим ось вращения — Z.

С помощью тригонометрии мы можем преобразовывать вектора в повернутые на определенный угол. Обычно это делается хитрой комбинацией sin и cos функций. Обсуждение того, как генерируется матрицы трансформации — выходит за пределы нашего урока.

Матрица вращения определена для каждой оси в 3D пространстве, где угол показан как тета.
Матрица вращения вокруг оси X:

Как сделать из вектора матрицу

Матрица вращения вокруг оси Y:

Как сделать из вектора матрицу

Матрица вращения вокруг оси Z:

Как сделать из вектора матрицу

С помощью матриц вращения мы можем вращать наши вектора по одной из трех осей. Также можно совмещать их, например в начале повернуть по X оси, а потом по Y. Правда такой подход быстро приведет к проблеме, называемый проблемой шарнирного замка (Gimbal Lock). Мы не будем вдаваться в детали, но лучше использовать вращение по конкретной оси, например (0.662, 0.2, 0.722) (заметьте, что это единичный вектор), вместо того, чтобы совмещать вращения по конкретным осям. Матрица для таких преобразований существует и выглядит она следующим образом, где (Rx, Ry, Rz) — это ось вращения:

Как сделать из вектора матрицу

Математические обсуждения на счет генерации такой матрицы выходят за рамки этого урока. Просто держите в голове, что даже такая матрица не решает проблему шарнирного замка полность (ее просто сложнее получить). Для того, чтобы полностью решить эту проблему нам придется работать с вращениями с помощью кватернионов, которые не просто безопаснее, но еще и гораздо дружелюбнее с точки зрения вычислений. Как бы то ни было обсуждение кватернионов отведено в более поздний урок.

Комбинирование матриц

Для того, чтобы достичь максимальной полезности использования матриц для трансформаций мы должны комбинировать матрицы трансформации в одну матрицу. Давайте посмотрим, сможем ли мы сгенерировать матрицу трансформации, которая будет в себя включать несколько трансформаций. Например у нас есть вектор (x, y, z) и мы хотим масштабировать его в 2 раза и сдвинуть на (1, 2, 3). Для этого нам потребуются матрицы масштабирования и смещения. В результате мы получим что-то вроде:

Как сделать из вектора матрицу

Заметьте, что во время умножения матриц мы в начале выполняем сдвиг, а потом масштабирование. Умножение матриц не коммутативно, что означает, что порядок умножения важен. Во время умножения матриц правая матрица умножается на вектор, поэтому вам надо читать умножения справа налево. Рекомендуется в начале масштабировать, затем вращать и в конце сдвигать, во время объединения матриц, в ином случае они могут отрицать друг-друга. Например если вы в начале выполните сдвиг, а затем масштабирование, то матрица сдвига тоже будет масштабировать!

В итоге матрица трансформации применяется следующим образом:

Как сделать из вектора матрицу

Отлично, вектор масштабирован в 2 раза и смещен на (1, 2, 3).

Видео:А.7.35 Собственные вектора и собственные значения матрицыСкачать

А.7.35 Собственные вектора и собственные значения матрицы

На практике

После того, как мы обсудили всю теорию настало время применять ее на практике. OpenGL не имеет встроенной поддержки матричных или векторных преобразований, поэтому нам придется использовать собственные математические класса и функции. В этих уроках мы абстрагируемся от тонких математических деталей и просто используем готовые математические библиотеки. К счастью уже есть простая в использовании и заточенная под OpenGL математическая библиотека, под названием GLM.

GLM это аббревиатура от OpenGL Mathematics. Эта библиотека является заголовочной, что означает, что нам достаточно подключить требуемые заголовочные файлы. Не нужно заморачиваться ни с линковкой ни с компиляцией. GLM можно скачать с официального сайта. Скопируйте корневую директорию с заголовочными файлами в вашу папку includes и можно начинать.

Большая часть функциональности GLM можно найти в 3 заголовочных файлах:

Давайте посмотрим, сможем ли мы применить наши знания в преобразованиях для сдвига вектора (1, 0, 0) на (1, 1, 0) (заметьте, что мы обозначили из как glm::vec4 с гомогенной координатой равной 1.0):

В начале мы создали вектор названный vec с помощью встроенного в GLM векторного класса. Затем мы определяем mat4, которая является единичной матрицей 4х4. Затем мы создаем матрицу трансформации, передавая нашу единичную матрицу в функцию glm::translate, вместе с вектором сдвига.
Затем мы умножаем наш вектор на матрицу трансформации и выводим результат. Если вы все еще помните как работает матрица сдвига — то вы понимаете, что результирующий вектор должен быть (1+1, 0+1, 0+0), который равен (2, 1, 0). Код выше выводит 210, что означает, что матрица сдвига сделала свою работу.

Давайте попробуем сделать нечто более интересное и попробуем масштабировать, а затем повернуть объект из прошлого урока. В начале мы повернем контейнер на 90 градусов против часовой стрелки. Затем масштабируем его на 0.5 для того, чтобы уменьшить его в 2 раза. Давайте построим матрицу трансформации для этого.

В начале мы уменьшаем контейнер на 0.5, по каждой оси, а затем поворачиваем контейнер на 90 градусов по Z координате. Заметьте, что текстура также повернулась. Поскольку мы передаем матрицу в каждую из GLM функций, GLM автоматически перемножает матрицы, в результате получая матрицу трансформации.

Некоторые версии GLM принимают углы в радианах, а не в градусах. Если у вас такая версия — то преобразуйте градусы в радианы с помощью glm::radians(90.0f).

Следующий большой вопрос — это как передать матрицу трансформации в шейдер? Ранее мы уже говорили, что GLSL имеет тип mat4. Так что нам осталось принять mat4 в качестве uniform переменной и умножить вектор позиции на эту матрицу.

В GLSL также имеются типы mat2 и mat3, которые предоставляют такие же операции, что и вектора. Все затронутые в этой статье операции доступны в матричных типах.

Мы добавили uniform и умножили позиционный вектор на трансформационную матрицу перед тем как передать ее в gl_Position. Наш контейнер теперь должен стать меньше в 2 раза и повернуться на 90 градусов. Но нам все еще надо передать трансформационную матрицу в шейдер?

В начале мы получаем позицию uniform переменной и затем отправляем в нее данные матрицы с помощью функции glUniform с постфиксом Matrix4fv. Первый аргумент должен быть позицией переменной. Второй аргумент сообщает OpenGL сколько матриц мы собираемся отправлять, в нашем случае 1. Третий аргумент говорит требуется ли транспонировать матрицу. OpenGL разработчики часто используют внутренних матричный формат, называемый column-major ordering, который используется в GLM по умолчанию, поэтому нам не требуется транспонировать матрицы, мы можем оставить GL_FALSE. Последний параметр — это, собственно, данные, но GLM не хранит данные точно так как OpenGL хочет их видеть, поэтому мы преобразовываем их с помощью value_ptr.

Мы создали матрицу трансформации, объявили uniform в вершинном шейдере, и отправили матрицу в шейдере с помощью которой мы корректируем вершинные координаты. В результате должно получиться что-то вроде этого:

Как сделать из вектора матрицу

Отлично! Наш контейнер действительно повернут налево и стал в 2 раза меньше, так что трансформация прошла успешно. А теперь давайте заставим вращаться наш контейнер в реальном времени, а также передвинем его в нижний правый угол. Для того, чтобы это сделать придется производить вычисления при каждой итерации основного цикла. Мы используем функцию GLFW для получения времени, чтобы менять угол со временем:

Держите в голове, что раньше мы могли объявить матрицу трансформации где угодно, но теперь мы создаем ее при каждой итерации, чтобы мы могли обновлять вращение на каждый кадр. Это значит, что мы должны пересоздавать матрицу трансформации на каждой итерации игрового цикла. Обычно, когда на сцене несколько объектов, то их матрицы трансформации пересоздаются с новыми значениями при каждой итерации отрисовки.

Теперь мы вращаем объект вокруг центра (0, 0, 0), а после этого сдвигаем повернутую версию в нижний-правый угол экрана. Помните, что реальная последовательность применения трансформаций читается в обратном порядке: даже в коде мы в начале сдвигаем, а потом поворачиваем, то трансформации применяются в обратном порядке, в начале поворот, затем сдвиг. Понимание всех этих трансформаций и того как они влияют на объекты довольно затруднительно. Попробуйте поэкспериментировать с трансформациями и вы быстро с ними свыкнитесь.

Если вы все сделали правильно — то вы получите что-то вроде этого:

Вот и все. Сдвинутый контейнер, поворачивающийся с течением времени, и все это выполнено с помощью одной матрицы трансформации! Теперь вы можете видеть, почему матрицы настолько сильны в графическом мире. Мы можем определить безграничное количество трансформаций и совмещать их в одну матрицу для последующего повторного использования. Использование подобных трансформаций в вершинном шейдере позволяет нам не менять вершинные данные, что сохраняет нам процессорное время, поскольку нам не требуется отправлять данные в буфер.

Если вам не удалось получить правильный результат или вы где-то застряли — то взгляните на исходный код вместе с вершинным и фрагментным шейдерами.

В следующем уроке мы обсудим как использовать матрицы для определения различных координатных пространств для наших вершин. Это будет новым шагом в мир 3D графики в реальном времени!

Видео:Как разложить вектор по базису - bezbotvyСкачать

Как разложить вектор по базису - bezbotvy

Содержание

В этом документе собраны основные сведения из алгебры матриц и векторов, которые используются в хемометрике. Приведенный текст не может служить учебником по матричной алгебре — он скорее является конспектом, справочником в этой области. Более глубокое и систематическое изложение может быть найдено в литературе.

Текст разбит на две части названные — «Базовые сведения» и «Дополнительная информация». В первой части изложены положения, минимально необходимые для понимания хемометрики, а во второй части — факты, которые необходимо знать для более глубокого постижения методов многомерного анализа. Изложение иллюстрируется примерами, выполненными в рабочей книге Excel Matrix.xls, которая сопровождает этот документ.

Ссылки на примеры помещены в текст как объекты Excel. Эти примеры имеют абстрактный характер, они никак не привязаны к задачам аналитической химии. Реальные примеры использования матричной алгебры в хемометрике рассмотрены в других текстах, посвященных разнообразным хемометрическим приложениям.

Большинство измерений, проводимых в аналитической химии, являются не прямыми, а косвенными . Это означает, что в эксперименте вместо значения искомого аналита C (концентрации) получается другая величина x (сигнал), связанная, но не равная C, т.е. x (C) ≠ С. Как правило, вид зависимости x (C) не известен, однако, к счастью, в аналитической химии большинство измерений пропорциональны. Это означает, что при увеличении концентрации С в a раз, сигнал X увеличится на столько же., т.е. x ( a C) = a x (C). Кроме того, сигналы еще и аддитивны, так что сигнал от пробы, в которой присутствуют два вещества с концентрациями C 1 и C 2 , будет равен сумме сигналов от каждого компонента, т.е. x (C 1 + C 2 ) = x (C 1 )+ x (C 2 ). Пропорциональность и аддитивность вместе дают линейность . Можно привести много примеров, иллюстрирующих принцип линейности, но достаточно упомянуть два самых ярких примера — хроматографию и спектроскопию. Вторая особенность, присущая эксперименту в аналитической химии — это многоканальность . Современное аналитическое оборудование одновременно измеряет сигналы для многих каналов. Например, измеряется интенсивность пропускания света сразу для нескольких длин волн, т.е. спектр. Поэтому в эксперименте мы имеем дело со множеством сигналов x 1 , x 2 . x n , характеризующих набор концентраций C 1 ,C 2 , . C m веществ, присутствующих в изучаемой системе.

Как сделать из вектора матрицу

Итак, аналитический эксперимент характеризуется линейностью и многомерностью. Поэтому удобно рассматривать экспериментальные данные как векторы и матрицы и манипулировать с ними, используя аппарат матричной алгебры. Плодотворность такого подхода иллюстрирует пример, показанный на Рис. 1, где представлены три спектра, снятые для 200 длин волн от 4000 до 4796 cm −1 . Первый ( x 1 ) и второй ( x 2 ) спектры получены для стандартных образцов, в которых концентрация двух веществ A и B, известны: в первом образце [A] = 0.5, [B] = 0.1, а во втором образце [A] = 0.2, [B] = 0.6. Что можно сказать о новом, неизвестном образце, спектр которого обозначен x 3 ?

Рассмотрим три экспериментальных спектра x 1 , x 2 и x 3 как три вектора размерности 200. Средствами линейной алгебры можно легко показать, что x 3 = 0.1 x 1 +0.3 x 2 , поэтому в третьем образце очевидно присутствуют только вещества A и B в концентрациях [A] = 0.5×0.1 + 0.2×0.3 = 0.11 и [B] = 0.1×0.1 + 0.6×0.3 = 0.19.

Видео:7. MathCad. Векторы и матрицыСкачать

7. MathCad. Векторы и матрицы

1. Базовые сведения

Видео:MATLAB 04 Массивы и матрицыСкачать

MATLAB 04 Массивы и матрицы

1.1 Матрицы

Матрицей называется прямоугольная таблица чисел, например

Как сделать из вектора матрицу

Матрицы обозначаются заглавными полужирными буквами ( A ), а их элементы — соответствующими строчными буквами с индексами, т.е. a ij . Первый индекс нумерует строки, а второй — столбцы. В хемометрике принято обозначать максимальное значение индекса той же буквой, что и сам индекс, но заглавной. Поэтому матрицу A можно также записать как < a ij , i = 1. I ; j = 1. J >. Для приведенной в примере матрицы I = 4, J = 3 и a 23 = −7.5.

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

Видео:Математика без Ху!ни. Метод Гаусса. Совместность системы. Ранг матрицы.Скачать

Математика без Ху!ни. Метод Гаусса. Совместность системы. Ранг матрицы.

1.2. Простейшие операции с матрицами

Матрицы можно умножать на числа. При этом каждый элемент умножается на это число. Например —

Как сделать из вектора матрицу

Рис. 3 Умножение матрицы на число

Две матрицы одинаковой размерности можно поэлементно складывать и вычитать. Например,

Как сделать из вектора матрицу

Рис. 4 Сложение матриц

В результате умножения на число и сложения получается матрица той же размерности.

Нулевой матрицей называется матрица, состоящая из нулей. Она обозначается O . Очевидно, что A + O = A , A − A = O и 0 A = O .

Матрицу можно транспонировать . При этой операции матрица переворачивается, т.е. строки и столбцы меняются местами. Транспонирование обозначается штрихом, A ‘ или индексом A t . Таким образом, если A = < a ij , i = 1. I ; j = 1. J >, то A t = < a ji , j = 1. J ; i = 1. I >. Например

Как сделать из вектора матрицу

Рис. 5 Транспонирование матрицы

Очевидно, что ( A t ) t = A , ( A + B ) t = A t + B t .

Видео:vector | Библиотека стандартных шаблонов (stl) | Уроки | C++ | #1Скачать

vector | Библиотека стандартных шаблонов (stl) | Уроки | C++ | #1

1.3. Умножение матриц

Матрицы можно перемножать, но только в том случае, когда они имеют соответствующие размерности. Почему это так, будет ясно из определения. Произведением матрицы A , размерностью I × K , и матрицы B , размерностью K × J , называется матрица C , размерностью I × J , элементами которой являются числа

Как сделать из вектора матрицу

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

Как сделать из вектора матрицу

Рис.6 Произведение матриц

Правило перемножения матриц можно сформулировать так. Для того, чтобы найти элемент матрицы C , стоящий на пересечении i -ой строки и j -ого столбца ( c ij ) надо поэлементно перемножить i -ую строку первой матрицы A на j -ый столбец второй матрицы B и сложить все результаты. Так в показанном примере, элемент из третьей строки и второго столбца, получается как сумма поэлементных произведений третьей строки A и второго столбца B

Как сделать из вектора матрицу

Рис.7 Элемент произведения матриц

Произведение матриц зависит от порядка, т.е. AB ≠ BA , хотя бы по соображениям размерности. Говорят, что оно некоммутативно. Однако произведение матриц ассоциативно. Это означает, что ABC = ( AB ) C = A ( BC ). Кроме того, оно еще и дистрибутивно, т.е. A ( B + C ) = AB + AC . Очевидно, что AO = O .

Видео:Что такое векторы и матрицы? Душкин объяснитСкачать

Что такое векторы и матрицы? Душкин объяснит

1.4. Квадратные матрицы

Если число столбцов матрицы равно числу ее строк ( I = J = N ), то такая матрица называется квадратной. В этом разделе мы будем рассматривать только такие матрицы. Среди этих матриц можно выделить матрицы, обладающие особыми свойствами.

Единичной матрицей (обозначается I, а иногда E ) называется матрица, у которой все элементы равны нулю, за исключением диагональных, которые равны 1, т.е.

Как сделать из вектора матрицу

Очевидно AI = IA = A .

Матрица называется диагональной , если все ее элементы, кроме диагональных ( a ii ) равны нулю. Например

Как сделать из вектора матрицу

Рис. 8 Диагональная матрица

Матрица A называется верхней треугольной , если все ее элементы, лежащие ниже диагонали, равны нулю, т.е. a ij = 0, при i > j . Например

Как сделать из вектора матрицу

Рис. 9 Верхняя треугольная матрица

Аналогично определяется и нижняя треугольная матрица.

Матрица A называется симметричной , если A t = A . Иными словами a ij = a ji . Например

Как сделать из вектора матрицу

Рис. 10 Симметричная матрица

Матрица A называется ортогональной , если

Матрица называется нормальной если

Видео:Ввод и вывод матриц в c++Скачать

Ввод и вывод матриц в c++

1.5. След и определитель

Следом квадратной матрицы A (обозначается Tr( A ) или Sp( A )) называется сумма ее диагональных элементов,

Как сделать из вектора матрицу

Как сделать из вектора матрицу

Рис. 11 След матрицы

Sp(α A ) = α Sp( A ) и

Sp( A + B ) = Sp( A )+ Sp( B ).

Можно показать, что

Sp( A ) = Sp( A t ), Sp( I ) = N ,

Другой важной характеристикой квадратной матрицы является ее определитель (обозначается det( A )). Определение определителя в общем случае довольно сложно, поэтому мы начнем с простейшего варианта — матрицы A размерностью (2×2). Тогда

Как сделать из вектора матрицу

Для матрицы (3×3) определитель будет равен

Как сделать из вектора матрицу

В случае матрицы ( N × N ) определитель вычисляется как сумма 1·2·3· . · N = N ! слагаемых, каждый из которых равен

Как сделать из вектора матрицу

Индексы k 1 , k 2 . k N определяются как всевозможные упорядоченные перестановки r чисел в наборе (1, 2, . , N ). Вычисление определителя матрицы — это сложная процедура, которую на практике осуществляется с помощью специальных программ. Например,

Как сделать из вектора матрицу

Рис. 12 Определитель матрицы

Отметим только очевидные свойства:

det( I ) = 1, det( A ) = det( A t ),

det( AB ) = det( A )det( B ).

1.6. Векторы

Если матрица состоит только из одного столбца ( J = 1), то такой объект называется вектором . Точнее говоря, вектором-столбцом. Например

Как сделать из вектора матрицу

Можно рассматривать и матрицы, состоящие из одной строки, например

Как сделать из вектора матрицу

Этот объект также является вектором, но вектором-строкой . При анализе данных важно понимать, с какими векторами мы имеем дело — со столбцами или строками. Так спектр, снятый для одного образца можно рассматривать как вектор-строку. Тогда набор спектральных интенсивностей на какой-то длине волны для всех образцов нужно трактовать как вектор-столбец.

Размерностью вектора называется число его элементов.

Ясно, что всякий вектор-столбец можно превратить в вектор-строку транспонированием, т.е.

Как сделать из вектора матрицу

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

1.7. Простейшие операции с векторами

Векторы можно складывать и умножать на числа так же, как это делается с матрицами. Например,

Как сделать из вектора матрицу

Рис. 13 Операции с векторами

Два вектора x и y называются колинеарными , если существует такое число α, что

1.8. Произведения векторов

Два вектора одинаковой размерности N можно перемножить. Пусть имеются два вектора x = ( x 1 , x 2 . x N ) t и y = ( y 1 , y 2 . y N ) t . Руководствуясь правилом перемножения «строка на столбец», мы можем составить из них два произведения: x t y и xy t . Первое произведение

Как сделать из вектора матрицу

называется скалярным или внутренним . Его результат — это число. Для него также используется обозначение ( x , y ) = x t y . Например,

Как сделать из вектора матрицу

Рис. 14 Внутреннее (скалярное) произведение

Как сделать из вектора матрицу

называется внешним . Его результат — это матрица размерности ( N × N ). Например,

Как сделать из вектора матрицу

Рис. 15 Внешнее произведение

Векторы, скалярное произведение которых равно нулю, называются ортогональными .

1.9. Норма вектора

Скалярное произведение вектора самого на себя называется скалярным квадратом. Эта величина

Как сделать из вектора матрицу

определяет квадрат длины вектора x . Для обозначения длины (называемой также нормой вектора) используется обозначение

Как сделать из вектора матрицу

Как сделать из вектора матрицу

Рис. 16 Норма вектора

Вектор единичной длины (|| x || = 1) называется нормированным. Ненулевой вектор ( x ≠ 0 ) можно нормировать, разделив его на длину, т.е. x = || x || ( x/ || x ||) = || x || e . Здесь e = x/ || x || — нормированный вектор.

Векторы называются ортонормированными, если все они нормированы и попарно ортогональны.

1.10. Угол между векторами

Скалярное произведение определяет и угол φ между двумя векторами x и y

Как сделать из вектора матрицу

Если вектора ортогональны, то cosφ = 0 и φ = π/2, а если они колинеарны, то cosφ = 1 и φ = 0.

1.11. Векторное представление матрицы

Каждую матрицу A размера I × J можно представить как набор векторов

Как сделать из вектора матрицу

Здесь каждый вектор a j является j -ым столбцом, а вектор-строка b i является i -ой строкой матрицы A

Как сделать из вектора матрицу

1.12. Линейно зависимые векторы

Векторы одинаковой размерности ( N ) можно складывать и умножать на число, также как матрицы. В результате получится вектор той же размерности. Пусть имеется несколько векторов одной размерности x 1 , x 2 . x K и столько же чисел α α 1 , α 2 . α K . Вектор

y = α 1 x 1 + α 2 x 2 +. + α K x K

называется линейной комбинацией векторов x k .

Если существуют такие ненулевые числа α k ≠ 0, k = 1. K , что y = 0 , то такой набор векторов x k называется линейно зависимым . В противном случае векторы называются линейно независимыми. Например, векторы x 1 = (2, 2) t и x 2 = (−1, −1) t линейно зависимы, т.к. x 1 +2 x 2 = 0

1.13. Ранг матрицы

Рассмотрим набор из K векторов x 1 , x 2 . x K размерности N . Рангом этой системы векторов называется максимальное число линейно-независимых векторов. Например в наборе

Как сделать из вектора матрицу

имеются только два линейно независимых вектора, например x 1 и x 2 , поэтому ее ранг равен 2.

Очевидно, что если векторов в наборе больше, чем их размерность ( K > N ), то они обязательно линейно зависимы.

Рангом матрицы (обозначается rank( A )) называется ранг системы векторов, из которых она состоит. Хотя любую матрицу можно представить двумя способами (векторы столбцы или строки), это не влияет на величину ранга, т.к.

rank( A ) = rank( A t ).

1.14. Обратная матрица

Квадратная матрица A называется невырожденной, если она имеет единственную обратную матрицу A -1 , определяемую условиями

Обратная матрица существует не для всех матриц. Необходимым и достаточным условием невырожденности является

det( A ) ≠ 0 или rank( A ) = N .

Обращение матрицы — это сложная процедура, для выполнения которой существуют специальные программы. Например,

Как сделать из вектора матрицу

Рис. 17 Обращение матрицы

Приведем формулы для простейшего случая — матрицы 2×2

Как сделать из вектора матрицу

Если матрицы A и B невырождены, то

1.15. Псевдообратная матрица

Если матрица A вырождена и обратная матрица не существует, то в некоторых случаях можно использовать псевдообратную матрицу, которая определяется как такая матрица A + , что

Псевдобратная матрица — не единственная и ее вид зависит от способа построения. Например для прямоугольной матрицы можно использовать метод Мура-Пенроуза.

Если число столбцов меньше числа строк, то

A + =(A t A) −1 A t

Как сделать из вектора матрицу

Рис. 1 7a Псевдообращение матрицы

Если же число столбцов больше числа строк, то

A + =A t (AA t ) −1

1.16. Умножение вектора на матрицу

Вектор x можно умножать на матрицу A подходящей размерности. При этом вектор-столбец умножается справа Ax , а вектор строка — слева x t A . Если размерность вектора J , а размерность матрицы I × J то в результате получится вектор размерности I . Например,

Как сделать из вектора матрицу

Рис. 18 Умножение вектора на матрицу

Если матрица A — квадратная ( I × I ), то вектор y = Ax имеет ту же размерность, что и x . Очевидно, что

A (α 1 x 1 + α 2 x 2 ) = α 1 Ax 1 + α 2 Ax 2 .

Поэтому матрицы можно рассматривать как линейные преобразования векторов. В частности Ix = x , Ox = 0 .

2. Дополнительная информация

2.1. Системы линейных уравнений

Пусть A — матрица размером I × J , а b — вектор размерности J . Рассмотрим уравнение

относительно вектора x , размерности I . По сути — это система из I линейных уравнений с J неизвестными x 1 . x J . Решение существует в том, и только в том случае, когда

rank( A ) = rank( B ) = R ,

где B — это расширенная матрица размерности I ×( J+1 ), состоящая из матрицы A , дополненной столбцом b , B = ( A b ). В противном случае уравнения несовместны.

Если R = I = J , то решение единственно

Если R I , то существует множество различных решений, которые можно выразить через линейную комбинацию J − R векторов. Система однородных уравнений Ax = 0 с квадратной матрицей A ( N × N ) имеет нетривиальное решение ( x ≠ 0 ) тогда и только тогда, когда det( A ) = 0. Если R = rank( A ) N , то существуют N − R линейно независимых решений.

2.2. Билинейные и квадратичные формы

Если A — это квадратная матрица , а x и y — вектора соответствующей размерности, то скалярное произведение вида x t Ay называется билинейной формой , определяемой матрицей A . При x = y выражение x t Ax называется квадратичной формой.

2.3. Положительно определенные матрицы

Квадратная матрица A называется положительно определенной, если для любого ненулевого вектора x ≠ 0 ,

Аналогично определяются отрицательно ( x t Ax x t Ax ≥ 0) и неположительно ( x t Ax ≤ 0) определенные матрицы.

2.4. Разложение Холецкого

Если симметричная матрица A положительно определена, то существует единственная треугольная матрица U с положительными элементами, для которой

Как сделать из вектора матрицу

Рис. 19 Разложение Холецкого

2.5. Полярное разложение

Пусть A — это невырожденная квадратная матрица размерности N × N . Тогда существует однозначное полярное представление

где S — это неотрицательная симметричная матрица, а R — это ортогональная матрица. Матрицы S и R могут быть определены явно:

S 2 = AA t или S = ( AA t ) ½ и R = S −1 A = ( AA t ) −½ A .

Как сделать из вектора матрицу

Рис. 20 Полярное разложение

Если матрица A вырождена, то разложение не единственно — а именно: S по-прежнему одна, а вот R может быть много. Полярное разложение представляет матрицу A как комбинацию сжатия/растяжения S и поворота R .

2.6. Собственные векторы и собственные значения

Пусть A — это квадратная матрица. Вектор v называется собственным вектором матрицы A , если

где число λ называется собственным значением матрицы A . Таким образом преобразование, которое выполняет матрица A над вектором v , сводится к простому растяжению или сжатию с коэффициентом λ. Собственный вектор определяется с точностью до умножения на константу α ≠ 0, т.е. если v — собственный вектор, то и α v — тоже собственный вектор.

2.7. Собственные значения

У матрицы A , размерностью ( N × N ) не может быть больше чем N собственных значений. Они удовлетворяют характеристическому уравнению

являющемуся алгебраическим уравнением N -го порядка. В частности, для матрицы 2×2 характеристическое уравнение имеет вид

Как сделать из вектора матрицу

Как сделать из вектора матрицу

Рис. 21 Собственные значения

Набор собственных значений λ 1 . λ N матрицы A называется спектром A .

Спектр обладает разнообразными свойствами. В частности

det( A ) = λ 1 ×. ×λ N , Sp( A ) = λ 1 +. +λ N .

Собственные значения произвольной матрицы могут быть комплексными числами, однако если матрица симметричная ( A t = A ), то ее собственные значения вещественны.

2.8. Собственные векторы

У матрицы A , размерностью ( N × N ) не может быть больше чем N собственных векторов, каждый из которых соответствует своему собственному значению. Для определения собственного вектора v n нужно решить систему однородных уравнений

Она имеет нетривиальное решение, поскольку det( A − λ n I ) = 0.

Как сделать из вектора матрицу

Рис. 22 Собственные вектора

Собственные вектора симметричной матрицы ортогональны.

2.9. Эквивалентные и подобные матрицы

Две прямоугольные матрицы A и B одной размерности I × J эквивалентны , если существуют такие квадратные матрицы S , размерности I × I , и T , размерности J × J , что

Эквивалентные матрицы имею один и тот же ранг.

Две прямоугольные матрицы A и B одной размерности N × N подобны , если существует такая невырожденная матрица T , что

Матрица T называется преобразованием подобия.

Подобные матрицы имеют один и тот же ранг, след, определитель и спектр.

2.10. Приведение матрицы к диагональному виду

Нормальную (в частности симметричную) матрицу A можно привести к диагональному виду преобразованием подобия —

Здесь Λ = diag(λ 1 . λ N ) — это диагональная матрица, элементами которой являются собственные значения матрицы A , а T — это матрица, составленная из соответствующих собственных векторов матрицы A , т.е. T = ( v 1 . v N ).

Как сделать из вектора матрицу

Рис. 23 Приведение к диагональному виду

2.11. Разложение по сингулярным значениям (SVD)

Пусть имеется прямоугольная матрица A размерностью I × J ранга R ( I ≤ J ≤ R ). Ее можно разложить в произведение трех матриц P R ( I × R ), D R ( R × R ) и Q R ( J × R ) —

Как сделать из вектора матрицу

Как сделать из вектора матрицу.

Здесь P R — матрица, образованная R ортонормированными собственными векторами p r матрицы AA t , соответствующим R наибольшим собственным значениям λ r ;

AA t p r = λ r p r ;

Q R — матрица, образованная R ортонормированными собственными векторами q r матрицы A t A ;

A t Aq r = λ r q r .

D R = diag (σ 1 . σ R ) — положительно определенная диагональная матрица , элементами которой являются σ 1 ≥. ≥σ R ≥0 — сингулярные значения матрицы A , равные квадратным корням из собственных значений матрицы A t A —

Как сделать из вектора матрицу

Как сделать из вектора матрицу

Рис. 24 SVD разложение

Дополняя матрицы P R и Q R ортонормированными столбцами, а матрицу D R нулевыми значениями, можно сконструировать матрицы P ( I × J ), D ( J × J ) и Q ( J × J ) такие, что

Как сделать из вектора матрицу

2.12. Линейное пространство

Рассмотрим все возможные векторы размерности N . Это множество называется линейным пространством размерности N и обозначается R N . Так как в R N включены все возможные векторы, то любая линейная комбинация векторов из R N будет также принадлежать этому пространству.

2.13. Базис линейного пространства

Любой набор из N линейно независимых векторов называется базисом в пространстве R N . Простейший пример базиса — это набор векторов

Как сделать из вектора матрицу

в каждом из которых только один элемент равен 1, а остальные равны нулю. Тогда любой вектор x = ( x 1 , x 2 . x N ) t может быть представлен как линейная комбинация x = x 1 e 1 + x 2 e 2+ . + x N e N базисных векторов.

Базис, составленный из попарно ортогональных векторов, называется ортогональным , а если базисные вектора еще и нормированы, то этот базис называется ортонормированным .

2.14. Геометрическая интерпретация

Линейному пространству можно дать удобную геометрическую интерпретацию. Представим себе N -мерное пространство, в котором базисные вектора задают направления осей координат. Тогда произвольный вектор x = ( x 1 , x 2 . x N ) t можно изобразить точкой в этом пространстве с координатами ( x 1 , x 2 . x N ).

Как сделать из вектора матрицу

Рис. 25 Координатное пространство

2.15. Множественность базисов

В линейном пространстве могут быть неограниченное число базисов. Так, в пространстве R 3 помимо обычного ортонормированного базиса

Как сделать из вектора матрицу

можно установить и другой ортонормированный базис, например

Как сделать из вектора матрицу

Каждый базис можно представить матрицей B = ( b 1 . b N ), составленной из базисных векторов. Переход от одного базиса к другому осуществляется с помощью невырожденной квадратной матрицы T , т.е. B 2 = TB 1 .

2.16. Подпространство

Пусть имеется набор из K линейно независимых векторов x 1 , x 2 . x K в пространстве R N . Рассмотрим все возможные линейные комбинации этих векторов

x = α 1 x 1 + α 2 x 2 +. + α K x K

О получившимся множестве Q говорят, что оно является линейной оболочкой или что оно натянуто на векторы x 1 , x 2 . x K . По определению линейного пространства это множество Q само является линейным пространством размерности K . При этом оно принадлежит пространству R N , поэтому Q называется линейным подпространством R K в пространстве R N .

2.17. Проекция на подпространство

Рассмотрим подпространство R K , натянутое на векторы X = ( x 1 , x 2 . x K ) в пространстве R N . Матрица базиса X имеет размерность ( N × K ). Любой вектор y из R N может быть спроецирован на подпространство R K , т.е. представлен в виде

где вектор y || принадлежит R K , а вектор y ⊥ ортогонален y || .

Как сделать из вектора матрицу

Рис. 26 Проекция на подпространство

Проекцию y || можно представить как результат действия проекционной матрицы P

Проекционная матрица определяется как

Как сделать из вектора матрицу

Как сделать из вектора матрицу

Рис. 27 Проекционное разложение

Заключение

Матричные методы активно используются при анализе данных, в том числе и хемометрическими методами.

Поделиться или сохранить к себе: