Матрицы: примеры с решением и объяснением
Матрицы представляют собой таблицы чисел, взаимосвязанных между собой. Над ними возможно проводить ряд разнообразных операций, о которых мы расскажем вам ниже.
Размер матрицы определяется её порядками — количеством строчек $m$ и столбцов $n$, которые в ней присутствуют. Строчки образованы элементами, стоящими на горизонтальных линиях, а столбцы — элементами, стоящими на прямых вертикальных линиях. В случае если количество строчек эквивалентно количеству столбцов — порядок рассматриваемой таблички определяется лишь одним значением $m = n$.
Для любого элемента матрицы номер строчки, в которой он находится, записывается первым в индексе, а номер столбца — вторым, то есть запись $a_
Сложение и вычитание
Итак, о сложении и вычитании. Эти действия возможно проводить только с матрицами одинакового размера.
Для того чтобы осуществить эти действия, необходимо провести сложение или вычитание каждого элемента матрицы с элементом другой матрицы, стоящим на той же позиции, что элемент в первой.
В качестве примера найдём сумму $A+B$, где:
Сумма любого элемента новой полученной матричной таблички $A + B$ равна $a_
Вычитание для двух матриц $A-B$ осуществляется аналогично, но каждый элемент новой матрицы результата будет вычисляться по формуле $a_
Обратите внимание, что сложение и вычитание для матриц возможно осуществлять только если их порядки одинаковые.
Решите следующие матричные примеры: $A + B$; $A – B$.
$A=\begin
$B=\begin
Объяснение:
Действия выполняем для каждой пары элементов $a_
$A+B=\begin
$A-B=\begin
Умножение матрицы на число
Для того чтобы произвести умножение матричной таблички на какое-либо число, нужно каждый её элемент умножить на это число, то есть любой элемент новой матрицы $C$, являющейся результатом произведения $A$ на $λ$ будет равен $с_
Умножьте $A$ на $λ$, где $A=\begin
$A \cdot λ = 5 \cdot \begin
Произведение матричных таблиц
Эта задача несколько сложнее предыдущих, но при этом в ней также нет ничего сложного.
Для осуществления умножения двух матриц $A \cdot B$ количество столбцов в $A$ должно совпадать с количеством строчек в $B$.
Математически это можно записать так:
То есть видя перемножаемые исходные матрицы можно сразу определить порядки получаемой новой. Например, если необходимо перемножить $A_<3 \times 2>$ и $B_<2 \times 3>$ — полученный результат будет иметь размер $3 \times 3$:
Если число столбцов первого матричного множителя не совпадает с количеством строчек второго матричного множителя, то умножение выполнить невозможно.
$A \times B = ?$, если $A=\begin
$A \times B = \begin
$A \times B= \begin
Нахождение определителя матрицы
Определитель матрицы обозначается как $Δ$ или $\det$.
Детерминант возможно найти только для квадратных разновидностей матриц.
В простейшем случае, когда матрица состоит из всего одного элемента, её определитель равен этому элементу: $det A = |a_<11>|= a_<11>$
Вычислить определитель от матрицы порядка двух можно следуя такому правилу:
Определитель матрицы размера 2 равен разности произведений элементов, стоящих на главной диагонали с произведением элементов с побочной диагонали:
В случае если определитель матрицы задан размером $3 \times 3$, то найти его можно используя мнемонические правила: Саррюса или треугольников, также можно разложить матрицу по строчке или столбцу или воспользоваться преобразованиями Гаусса.
Для определителей большего размера можно использовать преобразования Гаусса и разложение по строчке.
Обратные матрицы
По аналогии с обычным умножением числа на обратное ему число $(1+\frac1x= 1)$, умножение обратной матрицы $A^<-1>$ на исходную матрицу даёт в результате единичную матрицу $E$.
Самый простой метод решения при поиске обратной матрицы — Жордана-Гаусса. Рядом с матрицей-подопытным кроликом записывается единичная того же размера, а затем исходная с помощью преобразований приводится к единичной, причём все выполняемые действия повторяются и с $E$.
Получить обратную матрицу.
Решение:
Пишем вместе $A$ и справа от неё соответствующего размера $E$:
$ \begin
Получаем нуль в последней строчке на первой позиции:прибавляем к ней верхнюю, умноженную на $-3$:
$ \begin
Теперь обнуляем последний элемент первой строчки. Для этого к верхней строчке плюсуем нижнюю:
$ \begin
Делим вторую на $-2$:
$ \begin
Транспонирование матричных таблиц
Транспонирование — это смена строк и столбцов в матрице или определителе местами с сохранением их исходного порядка. Определитель траспонированной матричной таблички $A^T$ будет равен определителю исходной матрицы $A$.
Транспонируйте матрицу $A$ и проверьте себя, найдя определитель $A$ и транспонированной матричной таблички.
$A=\begin
Решение:
Применим метод Саррюса для детерминанта:
$\det A= 1 \cdot 5 \cdot (-3) + 2 \cdot 6 \cdot (-1) + 3 \cdot 4 \cdot (-2) – 2 \cdot 4 \cdot (-3) – 1 \cdot 6 \cdot (-2) – 3 \cdot 5 \cdot (-1) = -15 – 12 – 24+ 24 + 12 + 15 = 0$.
Теперь произведём транспонирование $A$, для этого повалим матрицу на её правый бок:
$A^T = \begin
Найдём для $A^T$ определитель, используя то же правило:
$det A^T = 1 \cdot 5 \cdot (-3) + 4 \cdot (-2) \cdot 3 + (-1) \cdot 2 \cdot 6 – 4 \cdot 2 \cdot (-3) – 1 \cdot (-2) \cdot 6 – (- 1) \cdot 5 \cdot 3 = — 15 -24 — 12+24+12+15 = 0$.
Создать матрицу из набора чисел полученных из CSV файлa
У меня есть CSV файл, где записаны числа. Мне нужно, из этих чисел сделать матрицу:
И т.д., там 426 строк и 13 столбцов, это только часть.
Как мне теперь из этого сделать матрицу?
![]()
Воспользуйтесь специально предназначенной для этого функцией — np.genfromtxt(. )
также можно воспользоваться модулем Pandas — результатом будем DataFrame, который можно легко преобразовать в матрицу:
![]()
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.9.7.43618
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
NumPy: матрицы и операции над ними
В этом ноутбуке из сторонних библиотек нам понадобится только NumPy. Для удобства импортируем ее под более коротким именем:
1. Создание матриц
Приведем несколько способов создания матриц в NumPy.
Самый простой способ — с помощью функции numpy.array(list, dtype=None, . ).
В качестве первого аргумента ей надо передать итерируемый объект, элементами которого являются другие итерируемые объекты одинаковой длины и содержащие данные одинакового типа.
Второй аргумент является опциональным и определяет тип данных матрицы. Его можно не задавать, тогда тип данных будет определен из типа элементов первого аргумента. При задании этого параметра будет произведена попытка приведения типов.
Например, матрицу из списка списков целых чисел можно создать следующим образом:
Второй способ создания — с помощью встроенных функций numpy.eye(N, M=None, . ), numpy.zeros(shape, . ), numpy.ones(shape, . ).
Первая функция создает единичную матрицу размера N×M ; если M не задан, то M = N .
Вторая и третья функции создают матрицы, состоящие целиком из нулей или единиц соответственно. В качестве первого аргумента необходимо задать размерность массива — кортеж целых чисел. В двумерном случае это набор из двух чисел: количество строк и столбцов матрицы.
Примеры:
Обратите внимание: размерность массива задается не двумя аргументами функции, а одним — кортежем!
Вот так — np.ones(7, 5) — создать массив не получится, так как функции в качестве параметра shape передается 7, а не кортеж (7, 5).
И, наконец, третий способ — с помощью функции numpy.arange([start, ]stop, [step, ], . ), которая создает одномерный массив последовательных чисел из промежутка [start, stop) с заданным шагом step, и метода array.reshape(shape).
Параметр shape, как и в предыдущем примере, задает размерность матрицы (кортеж чисел). Логика работы метода ясна из следующего примера:
Более подробно о том, как создавать массивы в NumPy, см. документацию.
2. Индексирование
Для получения элементов матрицы можно использовать несколько способов. Рассмотрим самые простые из них.
Для удобства напомним, как выглядит матрица d:
Элемент на пересечении строки i и столбца j можно получить с помощью выражения array[i, j].
Обратите внимание: строки и столбцы нумеруются с нуля!
Из матрицы можно получать целые строки или столбцы с помощью выражений array[i, :] или array[:, j] соответственно:
Еще один способ получения элементов — с помощью выражения array[list1, list2], где list1, list2 — некоторые списки целых чисел. При такой адресации одновременно просматриваются оба списка и возвращаются элементы матрицы с соответствующими координатами. Следующий пример более понятно объясняет механизм работы такого индексирования:
Примеры использования слайсинга:
Более подробно о различных способах индексирования в массивах см. документацию.
3. Векторы, вектор-строки и вектор-столбцы
Следующие два способа задания массива кажутся одинаковыми:
Однако, на самом деле, это задание одномерного массива (то есть вектора) и двумерного массива:
Обратите внимание: вектор (одномерный массив) и вектор-столбец или вектор-строка (двумерные массивы) являются различными объектами в NumPy, хотя математически задают один и тот же объект. В случае одномерного массива кортеж shape состоит из одного числа и имеет вид (n,), где n — длина вектора. В случае двумерных векторов в shape присутствует еще одна размерность, равная единице.
В большинстве случаев неважно, какое представление использовать, потому что часто срабатывает приведение типов. Но некоторые операции не работают для одномерных массивов. Например, транспонирование (о нем пойдет речь ниже):
4. Datatypes
Все элементы в массиве numpy принадлежат одному типу. В этом плане массивы ближе к C, чем к привычным вам листам питона. Numpy имеет множество встренных типов, подходящих для решения большинства задач.
5. Математические операции
К массивам (матрицам) можно применять известные вам математические операции. Следут понимать, что при этом у элементов должны быть схожие размерности. Поведение в случае не совпадения размерностей хорошо описанно в документации numpy.
6. Умножение матриц и столбцов
Напоминание теории. Операция умножения определена для двух матриц, таких что число столбцов первой равно числу строк второй.
Пусть матрицы A и B таковы, что A ∈ ℝ n×k и B ∈ ℝ k×m . Произведением матриц A и B называется матрица C , такая что cij = ∑ k r = 1 airbrj , где cij — элемент матрицы C , стоящий на пересечении строки с номером i и столбца с номером j .
В NumPy произведение матриц вычисляется с помощью функции numpy.dot(a, b, . ) или с помощью метода array1.dot(array2), где array1 и array2 — перемножаемые матрицы.
Матрицы в NumPy можно умножать и на векторы:
Обратите внимание: операция * производит над матрицами покоординатное умножение, а не матричное!
Более подробно о матричном умножении в NumPy см. документацию.
7. Объединение массивов
Массивы можно Объединенять. Есть горизонтальное и вертикальное объединение.
Массивы можно переформировать при помощи метода, который задает новый многомерный массив. Следуя следующему примеру, мы переформатируем одномерный массив из десяти элементов во двумерный массив, состоящий из пяти строк и двух столбцов:
Задания: (Блок 1)
Задание 1:
Решите без использования циклов средставми NumPy (каждый пункт решается в 1-2 строчки)
- Создайте вектор с элементами от 12 до 42
- Создайте вектор из нулей длины 12, но его пятый елемент должен быть равен 1
- Создайте матрицу (3, 3), заполненую от 0 до 8
- Найдите все положительные числа в np.array([1,2,0,0,4,0])
- Умножьте матрицу размерности (5, 3) на (3, 2)
- Создайте матрицу (10, 10) так, чтобы на границе были 0, а внтури 1
- Создайте рандомный вектор и отсортируйте его
- Каков эквивалент функции enumerate для numpy массивов?
- *Создайте рандомный вектор и выполните нормализацию столбцов (из каждого столбца вычесть среднее этого столбца, из каждого столбца вычесть sd этого столбца)
- *Для заданного числа найдите ближайший к нему элемент в векторе
- *Найдите N наибольших значений в векторе
Задание 2:
8. Транспонирование матриц
Напоминание теории. Транспонированной матрицей A T называется матрица, полученная из исходной матрицы A заменой строк на столбцы. Формально: элементы матрицы A T определяются как a T ij = aji , где a T ij — элемент матрицы A T , стоящий на пересечении строки с номером i и столбца с номером j .
В NumPy транспонированная матрица вычисляется с помощью функции numpy.transpose() или с помощью метода array.T, где array — нужный двумерный массив.
В следующих разделах активно используется модуль numpy.linalg, реализующий некоторые приложения линейной алгебры. Более подробно о функциях, описанных ниже, и различных других функциях этого модуля можно посмотреть в его документации.
9. Определитель матрицы
Напоминание теории. Для квадратных матриц существует понятие определителя.
Пусть A — квадратная матрица. Определителем (или детерминантом) матрицы A ∈ ℝ n×n назовем число
где α1, α2, …, αn — перестановка чисел от 1 до n , N(α1, α2, …, αn) — число инверсий в перестановке, суммирование ведется по всем возможным перестановкам длины n .
Не стоит расстраиваться, если это определение понятно не до конца — в дальнейшем в таком виде оно не понадобится.
Например, для матрицы размера 2×2 получается:
Вычисление определителя матрицы по определению требует порядка n! операций, поэтому разработаны методы, которые позволяют вычислять его быстро и эффективно.
В NumPy определитель матрицы вычисляется с помощью функции numpy.linalg.det(a), где a — исходная матрица.
Рассмотрим одно интересное свойство определителя. Пусть у нас есть параллелограмм с углами в точках (0, 0), (c, d), (a + c, b + d), (a, b) (углы даны в порядке обхода по часовой стрелке). Тогда площадь этого параллелограмма можно вычислить как модуль определителя матрицы ⎛ ⎜ ⎝ a c b d ⎞ ⎟ ⎠ . Похожим образом можно выразить и объем параллелепипеда через определитель матрицы размера 3×3 .
10. Ранг матрицы
Напоминание теории. Рангом матрицы A называется максимальное число линейно независимых строк (столбцов) этой матрицы.
В NumPy ранг матрицы вычисляется с помощью функции numpy.linalg.matrix_rank(M, tol=None), где M — матрица, tol — параметр, отвечающий за некоторую точность вычисления. В простом случае можно его не задавать, и функция сама определит подходящее значение этого параметра.
С помощью вычисления ранга матрицы можно проверять линейную независимость системы векторов.
Допустим, у нас есть несколько векторов. Составим из них матрицу, где наши векторы будут являться строками. Понятно, что векторы линейно независимы тогда и только тогда, когда ранг полученной матрицы совпадает с числом векторов. Приведем пример:
11. Системы линейных уравнений
Напоминание теории. Системой линейных алгебраических уравнений называется система вида Ax = b , где A ∈ ℝ n×m , x ∈ ℝ m×1 , b ∈ ℝ n×1 . В случае квадратной невырожденной матрицы A решение системы единственно.
В NumPy решение такой системы можно найти с помощью функции numpy.linalg.solve(a, b), где первый аргумент — матрица A , второй — столбец b .
Убедимся, что вектор x действительно является решением системы:
Бывают случаи, когда решение системы не существует. Но хотелось бы все равно “решить” такую систему. Логичным кажется искать такой вектор x , который минимизирует выражение ‖ Ax − b ‖ 2 — так мы приблизим выражение Ax к b .
В NumPy такое псевдорешение можно искать с помощью функции numpy.linalg.lstsq(a, b, . ), где первые два аргумента такие же, как и для функции numpy.linalg.solve(). Помимо решения функция возвращает еще три значения, которые нам сейчас не понадобятся.
12. Обращение матриц
Напоминание теории. Для квадратных невырожденных матриц определено понятие обратной матрицы.
Пусть A — квадратная невырожденная матрица. Матрица A − 1 называется обратной матрицей к A , если
где I — единичная матрица.
В NumPy обратные матрицы вычисляются с помощью функции numpy.linalg.inv(a), где a — исходная матрица.
13. Собственные числа и собственные вектора матрицы
Напоминание теории. Для квадратных матриц определены понятия собственного вектора и собственного числа.
Пусть A — квадратная матрица и A ∈ ℝ n×n . Собственным вектором матрицы A называется такой ненулевой вектор x ∈ ℝ n , что для некоторого λ ∈ ℝ выполняется равенство Ax = λx . При этом λ называется собственным числом матрицы A . Собственные числа и собственные векторы матрицы играют важную роль в теории линейной алгебры и ее практических приложениях.
В NumPy собственные числа и собственные векторы матрицы вычисляются с помощью функции numpy.linalg.eig(a), где a — исходная матрица. В качестве результата эта функция выдает одномерный массив w собственных чисел и двумерный массив v, в котором по столбцам записаны собственные вектора, так что вектор v[:, i] соотвествует собственному числу w[i].
Обратите внимание: у вещественной матрицы собственные значения или собственные векторы могут быть комплексными.
14. Расстояния между векторами
Вспомним некоторые нормы, которые можно ввести в пространстве ℝ n , и рассмотрим, с помощью каких библиотек и функций их можно вычислять в NumPy.
p-норма
p-норма (норма Гёльдера) для вектора x = (x1, …, xn) ∈ ℝ n вычисляется по формуле:
В частных случаях при: * p = 1 получаем ℓ1 норму * p = 2 получаем ℓ2 норму
Далее нам понабится модуль numpy.linalg, реализующий некоторые приложения линейной алгебры. Для вычисления различных норм мы используем функцию numpy.linalg.norm(x, ord=None, . ), где x — исходный вектор, ord — параметр, определяющий норму (мы рассмотрим два варианта его значений — 1 и 2). Импортируем эту функцию:
ℓ1 норма
ℓ1 норма (также известная как манхэттенское расстояние) для вектора x = (x1, …, xn) ∈ ℝ n вычисляется по формуле:
Ей в функции numpy.linalg.norm(x, ord=None, . ) соответствует параметр ord=1.
ℓ2 норма
ℓ2 норма (также известная как евклидова норма) для вектора x = (x1, …, xn) ∈ ℝ n вычисляется по формуле:
Ей в функции numpy.linalg.norm(x, ord=None, . ) соответствует параметр ord=2.
Более подробно о том, какие еще нормы (в том числе матричные) можно вычислить, см. документацию.
15. Расстояния между векторами
Для двух векторов x = (x1, …, xn) ∈ ℝ n и y = (y1, …, yn) ∈ ℝ n ℓ1 и ℓ2 раccтояния вычисляются по следующим формулам соответственно:
16. Скалярное произведение и угол между векторами
Скалярное произведение в пространстве ℝ n для двух векторов x = (x1, …, xn) и y = (y1, …, yn) определяется как:
Длиной вектора x = (x1, …, xn) ∈ ℝ n называется квадратный корень из скалярного произведения, то есть длина равна евклидовой норме вектора:
Теперь, когда мы знаем расстояние между двумя ненулевыми векторами и их длины, мы можем вычислить угол между ними через скалярное произведение:
где α ∈ [0, π] — угол между векторами x и y .
17. Комплексные числа в питоне
Напоминание теории. Комплексными числами называются числа вида x + iy , где x и y — вещественные числа, а i — мнимая единица (величина, для которой выполняется равенство i 2 = − 1 ). Множество всех комплексных чисел обозначается буквой ℂ (подробнее про комплексные числа см. википедию).
В питоне комплескные числа можно задать следующим образом (j обозначает мнимую единицу):
С комплексными числами в питоне можно производить базовые арифметические операции так же, как и с вещественными числами:
Задания: (Блок 2)
Задание 3:
Рассмотрим сложную математическую функцию на отрезке [1, 15]:
f(x) = sin(x / 5) * exp(x / 10) + 5 * exp(-x / 2)

Она может описывать, например, зависимость оценок, которые выставляют определенному сорту вина эксперты, в зависимости от возраста этого вина. Мы хотим приблизить сложную зависимость с помощью функции из определенного семейства. В этом задании мы будем приближать указанную функцию с помощью многочленов.
Как известно, многочлен степени n (то есть w0 + w1x + w2x 2 + … + wnx n ) однозначно определяется любыми n + 1 различными точками, через которые он проходит. Это значит, что его коэффициенты w0 , … wn можно определить из следующей системы линейных уравнений:

где через x1, . xn, xn + 1 обозначены точки, через которые проходит многочлен, а через f(x1), . f(xn), f(xn + 1) — значения, которые он должен принимать в этих точках.
Воспользуемся описанным свойством, и будем находить приближение функции многочленом, решая систему линейных уравнений.
Некоторые свойства операций над матрицами.
Матричные выражения
На базовых уроках Действия с матрицами, Как найти обратную матрицу? мы познакомились с понятием матрицы и основными операциями над матрицами. При этом основные акценты были подробно расставлены на технических приёмах вычисления, чтобы совершенно неподготовленный человек смог быстро научиться решать матрицы. Поэтому чайникам следует начать с первых двух статей и лягушатника с определителем матрицы. Из инструментальных средств рекомендую запастись матричным калькулятором, который позволит контролировать весь процесс решения и не допустить ошибок. Найти его можно, например, на складе математических формул и таблиц.
А сейчас последует продолжение темы, в котором мы рассмотрим не только новый материал, но и отработаем действия с матрицами.
Некоторые свойства операций над матрицами
Существует достаточно много свойств, которые касаются действий с матрицами, в той же Википедии можно полюбоваться стройными шеренгами соответствующих правил. Однако на практике многие свойства в известном смысле «мертвЫ», поскольку в ходе решения реальных задач используются лишь некоторые из них. Моя цель – рассмотреть прикладное применение свойств на конкретных примерах, и если вам необходима строгая теория, пожалуйста, воспользуйтесь другим источником информации.
Но сначала вернёмся к действиям с матрицами (к слову, в той статье мы уже неявно затронули ряд свойств). Начну с небольшого вопроса, который вызвал трудности у некоторых посетителей сайта:
Можно ли к матрице прибавить число?
Например: . Ну, или наоборот:
Нет. К матрице можно прибавить только другую матрицу, причём точно такого же размера.
Матрицу можно умножить на число. Но сложить их нельзя. Таковы правила игры.
Следует отметить, что допустимо сложение определителя матрицы с числом:
Результат вычисления определителя – число, а два числа суммируются без всяких проблем.
Вышесказанное, естественно, справедливо и для разности, ведь вычитание – это частный случай сложения.
Как на счёт того, чтобы плотно зависнуть у меня сегодня вечером? =) Практика показывает, что наибольшие трудности у студентов вызывает умножение матриц. Так наполним же кружки соответствующей информацией.
Повторим само правило. В статье Действия с матрицами я рассказал о том, какие матрицы можно умножать и привёл ряд наиболее распространённых примеров. Давайте рассмотрим операцию чуть подробнее и выделим два существенных пункта:
1) Смотрим на левую часть. Из первого урока нам известно, что матричное умножение возможно в том и только в том случае, если количество столбцов первой матрицы равно количеству строк второй матрицы.
2) Смотрим на правую часть и обращаем внимание на размерность результата – СКОЛЬКО строк и столбцов должно быть у итоговой матрицы.
Решение: произведение существует, причём итоговая матрица состоит из 1 строки и 2 столбцов:
Ответ:
Это пример для самостоятельного решения.
Предложенные примеры не случайны. Они вроде бы просты, но у начинающих здесь нередко возникает путаница с размерами матрицы-результата. Поэтому читателям с небольшим опытом целесообразно переписать вышеприведённую формулу и особенно серьёзно отнестись к практическим примерам.
А по каким принципам составляются начинка (суммы произведений чисел), думаю, все уже поняли. Дополнительно возьмём на вооружение образную ассоциацию, которая поможет хорошо запомнить действие. Читаем следующий параграф:
Как возвести матрицу в квадрат?
Операция определена только для квадратных матриц – «два на два», «три на три» и т.д.
Возвести квадратную матрицу в квадрат – это значит, умножить её саму на себя:
Возвести в квадрат матрицу
Решение: пример рутинный, и чтобы извлечь максимальную пользу, давайте закрепим очень распространённый случай умножения двух матриц «три на три»:

Строки первой матрицы – это столы в ресторане, а цветные столбцы второй матрицы – официанты. Сначала столы обслуживает красный официант, затем зелёный официант, и под конец застолья – синий официант. Тааак, хватит прикалываться, он не голубой =)
Это действительно удобный мысленный приём, который можно использовать на практике – последовательно (слева направо) перебираем столбцы второй матрицы и «пристраиваем» их к каждой строке первой матрицы.
Ответ:
Возведение матрицы в куб и более высокие степени разберём позже.
Немного о некоммутативности матричного умножения и единичной матрице
Материал, по меньшей мере, частично вам знаком. Для тех, кто не знает термина:
Коммутативность = Перестановочность.
Обычные числа переставлять можно: , а матрицы в общем случае не перестановочны: . Собственно, подробная иллюстрация с конкретными примерами уже была дана в статье Действия с матрицами.
Рассмотрим некоторые исключения из правила, которые потребуются для выполнения практических задач.
Если у квадратной матрицы существует обратная матрица , то их умножение коммутативно:
Чтобы проверить, правильно ли найдена обратная матрица, нужно вычислить произведение либо произведение и убедиться в том, что получится единичная матрица . Конкретные примеры можно посмотреть в статье Как найти обратную матрицу?
Единичной матрицей называется квадратная матрица, у которой на главной диагонали расположены единицы, а остальные элементы равны нулю. Например: , и т.д.
При этом справедливо следующее свойство: если произвольную матрицу умножить слева или справа на единичную матрицу подходящих размеров, то в результате получится исходная матрица:
Как видите, здесь также имеет место коммутативность матричного умножения.
Возьмём какую-нибудь матрицу, ну, скажем, матрицу из предыдущей задачи: .
Желающие могут провести проверку и убедиться, что:
Единичная матрица для матриц – это аналог числовой единицы для чисел, что особенно хорошо видно из только что рассмотренных примеров.
Коммутативность числового множителя относительно умножения матриц
Для матриц и действительного числа справедливо следующее свойство:
То есть числовой множитель можно (и нужно) вынести вперёд, чтобы он «не мешал» умножить матрицы.
Примечание: вообще говоря, формулировка свойства неполная – «лямбду» можно разместить в любом месте между матрицами, хоть в конце. Правило остаётся справедливым, если перемножаются три либо бОльшее количество матриц.
Решение:
(1) Согласно свойству перемещаем числовой множитель вперёд. Сами матрицы переставлять нельзя!
(2) – (3) Выполняем матричное умножение.
(4) Здесь можно поделить каждое число 10, но тогда среди элементов матрицы появятся десятичные дроби, что не есть хорошо. Однако замечаем, что все числа матрицы делятся на 5, поэтому умножаем каждый элемент на .
Окончательный ответ лучше оставить в виде , хотя, в принципе, годится и внесение дроби: . На технических тонкостях умножения матрицы на число я подробно останавливался на уроке Действия с матрицами.
Ответ:
Маленькая шарада для самостоятельного решения:
Решение и ответ в конце урока.
Какой технический приём важен в ходе решения подобных примеров? С числом разбираемся в последнюю очередь.
Прицепим к локомотиву ещё один вагон:
Как умножить три матрицы?
Прежде всего, ЧТО должно получиться в результате умножения трёх матриц ? Кошка не родит мышку. Если матричное умножение осуществимо, то в итоге тоже получится матрица. М-да, хорошо мой преподаватель по алгебре не видит, как я объясняю замкнутость алгебраической структуры относительно её элементов =)
Произведение трёх матриц можно вычислить двумя способами:
1) найти , а затем домножить на матрицу «цэ»: ;
2) либо сначала найти , потом выполнить умножение .
Результаты обязательно совпадут, и в теории данное свойство называют ассоциативностью матричного умножения:
Перемножить матрицы двумя способами
Алгоритм решения двухшаговый: находим произведение двух матриц, затем снова находим произведение двух матриц.
1) Используем формулу
2) Используем формулу
Ответ:
Более привычен и стандартен, конечно же, первый способ решения, там «как бы всё по порядку». Кстати, по поводу порядка. В рассматриваемом задании часто возникает иллюзия, что речь идёт о каких-то перестановках матриц. Их здесь нет. Снова напоминаю, что в общем случае ПЕРЕСТАВЛЯТЬ МАТРИЦЫ НЕЛЬЗЯ. Так, во втором пункте на втором шаге выполняем умножение , но ни в коем случае не . С обычными числами такой бы номер прошёл, а с матрицами – нет.
Свойство ассоциативности умножения справедливо не только для квадратных, но и для произвольных матриц – лишь бы они умножались:
Найти произведение трёх матриц
Это пример для самостоятельного решения. В образце решения вычисления проведены двумя способами, проанализируйте, какой путь выгоднее и короче.
Свойство ассоциативности матричного умножения имеет место быть и для бОльшего количества множителей.
Теперь самое время вернуться к степеням матриц. Квадрат матрицы рассмотрен в самом начале и на повестке дня вопрос:
Как возвести матрицу в куб и более высокие степени?
Данные операции также определены только для квадратных матриц. Чтобы возвести квадратную матрицу в куб, нужно вычислить произведение:
Фактически это частный случай умножения трёх матриц, по свойству ассоциативности матричного умножения: . А матрица, умноженная сама на себя – это квадрат матрицы:
Таким образом, получаем рабочую формулу:
То есть задание выполняется в два шага: сначала матрицу необходимо возвести в квадрат, а затем полученную матрицу умножить на матрицу .
Возвести матрицу в куб.
Это небольшая задачка для самостоятельного решения.
Возведение матрицы в четвёртую степень проводится закономерным образом:
Используя ассоциативность матричного умножения, выведем две рабочие формулы. Во-первых: – это произведение трёх матриц.
1) . Иными словами, сначала находим , затем домножаем его на «бэ» – получаем куб, и, наконец, выполняем умножение ещё раз – будет четвёртая степень.
2) Но существует решение на шаг короче: . То есть, на первом шаге находим квадрат и, минуя куб, выполняем умножение
Дополнительное задание к Примеру 8:
Возвести матрицу в четвёртую степень.
Как только что отмечалось, сделать это можно двумя способами:
1) Коль скоро известен куб, то выполняем умножение .
2) Однако, если по условию задачи требуется возвести матрицу только в четвёртую степень, то путь выгодно сократить – найти квадрат матрицы и воспользоваться формулой .
Оба варианта решения и ответ – в конце урока.
Аналогично матрица возводится в пятую и более высокие степени. Из практического опыта могу сказать, что иногда попадаются примеры на возведение в 4-ю степень, а вот уже пятой степени что-то не припомню. Но на всякий случай приведу оптимальный алгоритм:
1) находим ;
2) находим ;
3) возводим матрицу в пятую степень: .
Вот, пожалуй, и все основные свойства матричных операций, которые могут пригодиться в практических задачах.
Во втором разделе урока ожидается не менее пёстрая тусовка.
Матричные выражения
Повторим обычные школьные выражения с числами. Числовое выражение состоит из чисел, знаков математических действий и скобок, например: . При расчётах справедлив знакомый алгебраический приоритет: сначала учитываются скобки, затем выполняется возведение в степень / извлечение корней, потом умножение / деление и в последнюю очередь – сложение /вычитание.
Если числовое выражение имеет смысл, то результат его вычисления является числом, например:
Матричные выражения устроены практически так же! С тем отличием, что главными действующими лицами выступают матрицы. Плюс некоторые специфические матричные операции, такие, как транспонирование и нахождение обратной матрицы.
Рассмотрим матричное выражение , где – некоторые матрицы. В данном матричном выражении три слагаемых и операции сложения/вычитания выполняются в последнюю очередь.
В первом слагаемом сначала нужно транспонировать матрицу «бэ»: , потом выполнить умножение и внести «двойку» в полученную матрицу. Обратите внимание, что операция транспонирования имеет более высокий приоритет, чем умножение. Скобки, как и в числовых выражениях, меняют порядок действий: – тут сначала выполняется умножение , потом полученная матрица транспонируется и умножается на 2.
Во втором слагаемом в первую очередь выполняется матричное умножение , и обратная матрица находится уже от произведения. Если скобки убрать: , то сначала необходимо найти обратную матрицу , а затем перемножить матрицы: . Нахождение обратной матрицы также имеет приоритет перед умножением.
С третьим слагаемым всё очевидно: возводим матрицу в куб и вносим «пятёрку» в полученную матрицу.
Если матричное выражение имеет смысл, то результат его вычисления является матрицей.
Все задания будут из реальных контрольных работ, и мы начнём с самого простого:
Даны матрицы . Найти:
Решение: порядок действий очевиден, сначала выполняется умножение, затем сложение.
Сложение выполнить невозможно, поскольку матрицы разных размеров.
Не удивляйтесь, заведомо невозможные действия часто предлагаются в заданиях данного типа.
Пробуем вычислить второе выражение:
Тут всё нормально.
Ответ: действие выполнить невозможно, .
Найти значения выражений:
Решение: Разбираемся с произведением . Сначала транспонируем матрицы «дэ»:
И умножаем матрицы:
Матричное умножение выполнить невозможно, так как число столбцов матрицы не равно числу строк матрицы .
А вот с произведением проблем не возникает:
Еще раз заметьте, как на первом же шаге множитель (–1) выносится вперёд, и ноги до него доходят в самую последнюю очередь.
С более сложными выражениями вроде чайникам рекомендую разбираться поэтапно, чтобы не запутаться:
Сначала находим произведение:
Затем считаем второе слагаемое:
И, наконец, всё выражение:
Более подготовленные студенты могут оформить решение одной строкой:
Ответ: действие выполнить невозможно, , .
Пара заключительных примеров для самостоятельного решения:
Для матриц Примера №10 выполнить действия:
Вычислить значение матричного многочлена , если .
В последнем примере решение удобно оформить по пунктам.
Матричные выражения – это просто! И вряд ли на практике вам встретится что-то сложнее, чем разобранные примеры.
Теперь во всеоружии можно приступить к изучению матричных уравнений.
Решения и ответы:
Пример 2: Решение:
Ответ:
Пример 5: Решение:
Ответ:
Пример 7: Решение:
1) Используем формулу
2) Используем формулу
Ответ:
Пример 8: Решение: Сначала возведём матрицу в квадрат:
Возведём матрицу в куб:
Возведём матрицу в четвёртую степень двумя способами:
Ответ:
Пример 11: Решение:
Возведение в квадрат невозможно, поскольку операция определена только для квадратных матриц.
Ответ: , действие выполнить невозможно,
Пример 12: Решение:
1)
2)
3)
4)
5)
Ответ:
Примечание: выражение можно было вычислить и по-другому – предварительно раскрыть скобки: