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

Обновлено: 07.07.2024

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

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

тип имя_переменной [n] [m];

Здесь тип определяет тип элементов массива, имя_переменной — имя матрицы, n — количество строк, m — количество столбцов. Строки нумеруются от 0 до n-1, столбцы от 0 до m-1.

Например int h[10] [15];

Выше матрица целых чисел h, состоящая из 10 строк и 15 столбцов (строки нумеруются от 0 до 9, столбцы от 0 до 14).

Для обращения к элементу матрицы необходимо указать ее имя и в квадратных скобках номер строки, затем номер столбца. Например, h[2] [5].

Ввод-вывод матриц

Матрицы, как и одномерные массивы, нужно вводить (выводить) поэлементно. Блок-схема ввода элементов матрицы A[n] [m] изображена ниже:

Ввод элементов матрицы

Код программы на Visual C++ вода-вывода матрицы будет иметь примерно такой вид:

Эта статья открывает список уроков на тему “Линейная алгебра с примерами на Python“ . Мы постараемся рассказать о базовых понятиях линейной алгебры, которые могут быть полезны тем, кто занимается машинным обучением и анализом данных, и будем сопровождать все это примерами на языке Python .

Матрицы

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

В общем виде матрица записывается так:

Представленная выше матрица состоит из i-строк и j-столбцов. Каждый ее элемент имеет соответствующее позиционное обозначение, определяемое номером строки и столбца на пересечении которых он расположен: \(a_\)- находится на i-ой строке и j-м столбце.

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

Виды матриц и способы их создания в Python

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

Напомним, для того, чтобы использовать библиотеку Numpy ее нужно предварительно установить, после этого можно импортировать в свой проект. По установке Numpy можно подробно прочитать в разделе “Установка библиотеки Numpy” из введения. Для того чтобы импортировать данный модуль, добавьте в самое начало программы следующую строку

Рассмотрим, различные варианты матриц и способы их задания в Python .

Вектор

Вектором называется матрица, у которой есть только один столбец или одна строка. Более подробно свойства векторов, их геометрическая интерпретация и операции над ними будут рассмотрены в “ Главе 2 Векторная алгебра” .

Вектор-строка

Вектор-строка имеет следующую математическую запись.

Такой вектор в Python можно задать следующим образом.

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

Создадим нулевую вектор-строку размера 5 .

В случае, если требуется построить вектор-строку так, чтобы она сама являлась элементом какого-то массива, это нужно для возможности транспонирования матрицы (см. раздел “ 1.3 Транспонирование матрицы” ), то данную задачу можно решить так.

Построим единичную вектор-строку в обоих из представленных для нулевого вектора-строки форм.

Вектор-столбец

Вектор-столбец имеет следующую математическую запись.

В общем виде вектор столбец можно задать следующим образом.

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

Единичный вектор-столбец можно создать с помощью функции ones() .

Квадратная матрица

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

Создадим следующую матрицу.

В Numpy можно создать квадратную матрицу с помощью метода array() .

Как вы уже наверное заметили, аргументом функции np.array() является список Python , его можно создать отдельно и передать в функцию.

Но в Numpy есть еще одни способ создания матриц – это построение объекта типа matrix с помощью одноименного метода. Задать матрицу можно в виде списка.

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

Диагональная матрица

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

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

Библиотека Numpy предоставляет инструменты, которые могут упростить построение такой матрицы.

Первый вариант подойдет в том случае, если у вас уже есть матрица, и вы хотите сделать из нее диагональную. Создадим матрицу размера 3 3 .

Извлечем ее главную диагональ.

Построим диагональную матрицу на базе полученной диагонали.

Второй вариант подразумевает построение единичной матрицы, ей будет посвящен следующий параграф.

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

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

Создадим единичную матрицу на базе списка, который передадим в качестве аргумента функции matrix() .

Такой способ не очень удобен, к счастью для нас, для построения такого типа матриц в библиотеке Numpy есть специальная функция – eye() .

В качестве аргумента функции передается размерность матрицы, в нашем примере – это матрица 3 3 . Тот же результат можно получить с помощью функции identity() .

Нулевая матрица

У нулевой матрицы все элементы равны нулю.

Пример того, как создать такую матрицу с использованием списков, мы приводить не будем, он делается по аналогии с предыдущим разделом. Что касается Numpy , то в составе этой библиотеки есть функция zeros() , которая создает нужную нам матрицу.

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

Задание матрицы в общем виде

Если у вас уже есть данные о содержимом матрицы, то создать ее можно используя списки Python или функцию matrix() из библиотеки Numpy .

Если же вы хотите создать матрицу заданного размера с произвольным содержимым, чтобы потом ее заполнить, проще всего для того использовать функцию zeros() , которая создаст матрицу заданного размера, заполненную нулями.

P.S.

Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта . Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.


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

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

— правило справедливо лишь для квадратных матриц, которые имеют одинаковое (равное) число строк и столбцов;

— показатель степени должен быть натуральным (2, 3, 4, 5, 6, 7…).

Квадрат матрицы

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



В каком порядке и как нужно выполнять расчет, чтобы возвести А в квадрат?

Решение:


Напоследок скажем, что сегодня существует множество онлайн-калькуляторов, позволяющих выполнять широкий спектр математических матричных операций:

— возведение матриц в степень;

— умножение на число;

— сложение и вычитание;

— нахождение обратной матрицы;

— нахождение ранга и определителя.

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

1. Скелетное разложение матрицы. В дальнейшем мы будем пользоваться представлением произвольной прямоугольной -матрицы ранга в виде произведения двух матриц и , имеющих соответственно размеры и :

Здесь ранги сомножителей и обязательно равны рангу произведения ,. Действительно (см. стр. 22), Но ранги и не могут превосходить , так как — один из размеров матриц и . Поэтому .

Для того чтобы получить разложение (36), достаточно в качестве столбцов матрицы взять любые линейно независимых столбцов матрицы , либо любые линейно независимых столбцов, через которые линейно выражаются столбцы матрицы . Тогда произвольный -й столбец матрицы будет линейной комбинацией столбцов матрицы с коэффициентами ; эти коэффициенты и образуют -й столбец матрицы (, см. стр. 19).

Поскольку матрицы и имеют максимально возможный ранг , то квадратные матрицы и являются неособенными:

Действительно, пусть столбец — произвольное решение уравнения

Помножим это уравнение слева на строку . Тогда . Отсюда следует и (поскольку — линейная комбинация линейно независимых столбцов матрицы ; ср. с формулой (13")) . Из того, что уравнение (38) имеет только нулевое решение , вытекает, что. Аналогично устанавливается второе неравенство (37).

Разложение (36) будем называть скелетным разложением матрицы .

2. Существование и единственность псевдообратной матрицы. Рассмотрим матричное уравнение

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

Определение 5. Матрица размеров называется псевдообратной для -матрицы , если выполняются равенства

где и — некоторые матрицы

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

и, следовательно (см. конец § 3),

Для того чтобы установить существование матрицы , мы воспользуемся скелетным разложением (36) и будем искать сначала псевдообратные матрицы и . Так как по определению должны иметь место равенства

где — некоторая матрица, то

Умножая слева на и замечая, что — неособенная квадратная матрица, найдем:

Но тогда второе из равенств (42) дает искомое выражение для :

Совершенно аналогично найдем:

Покажем теперь, что матрица

удовлетворяет условиям (40), (41) и, следовательно, является псевдообратной матрицей для .

С другой стороны, из равенств (43), (44) и (45) с учетом равенства , полагая, находим

Таким образом доказано, что для произвольной прямоугольной матрицы существует одна и только одна псевдообратная матрица , которая определяется формулой (45), где и — сомножители в скелетном разложении матрицы . Из самого определения псевдообратной матрицы непосредственно следует, что в случае квадратной неособенной матрицы псевдообратная матрица совпадает с обратной .

Здесь . в качестве столбцов матрицы первые два столбца матрицы . Тогда

Поэтому, согласно формуле (45)

3. Свойства псевдообратной матрицы. Отметим следующие свойства псевдообратной матрицы:

Первое свойство означает, что операции перехода к сопряженной и к псевдообратной матрице перестановочны между собой. Равенство 2° выражает собой взаимность понятия псевдообратной матрицы, тан как согласно 2° псевдообратной матрицей для является исходная матрица . Согласно равенствам 3° и 4° матрицы и являются эрмитовыми и инволютивными (квадрат каждой из этих матриц равен самой матрице).

Для вывода равенства 1° воспользуемся скелетным разложением (36): . Тогда равенство дает скелетное разложение матрицы . Поэтому, заменяя в формуле (45) матрицу на , а матрицу на , получим:

Равенства , , являются скелетными разложениями. Следовательно,

Используя свойство 1°, а также выражения для и , найдем:

Справедливость равенств 3° и 4° проверяется непосредственно путем подстановки в эти равенства вместо соответствующего выражения из формулы (45).

Заметим, что в общем случае, когда разложение не является скелетным, не всегда имеет место равенство . Так, например

4. Наилучшее приближенное решение (по методу наименьших квадратов). Рассмотрим произвольную систему линейных уравнений

или в матричной записи

Здесь - заданные числа, а – искомые.

В общем случае система (46) может быть и несовместной.

имеет наименьшее значение.

Покажем, что система (46) всегда имеет одно и только одно наилучшее приближенное решение и это приближенное решение определяется по формуле

где — псевдообратная матрица для матрицы .

Для этого рассмотрим произвольный столбец и положим

Исходя из разложения (36) и формулы (45), найдем:

Поэтому из равенства (53) следует

Поэтому из равенства (52) находим

и, следовательно, для любого столбца

тогда, согласно равенству (55)

С другой стороны,

Вспоминая, что (см.определение 5), получим в силу (57):

Поэтому из равенства (58) находим

причем знак = имеет место только при , т.е. при , где .

Пример. Найти наилучшее приближенное решение (по методу наименьших квадратов) системы линейных уравнений:

Но тогда (см. пример на стр. 35)

Определим норму - матрицы как неотрицательное число, задаваемое формулой

При этом очевидно, что

Рассмотрим матричное уравнение

где и – заданные и -матрицы, а - искомая -матрица.

Определим наилучшее приближенное решение уравнения (62) из условия

причем в случае, когда

следует, что -й столбец искомой матрицы должен быть наилучшим приближенным решением системы линейных уравнений

Поскольку это равенство справедливо при любом то

Таким образом, уравнение (62) всегда имеет одно и только одно наилучшее приближенное решение, определяемое формулой (65).

В частном случае, когда — единичная матрица -го порядка, имеем . Следовательно, псевдообратная матрица является наилучшим приближенным решением (по методу наименьших квадратов) матричного уравнения

Это свойство псевдообратной матрицы может быть принято в качестве ее определения.

5. Метод Гревилля последовательного нахождения псевдообратной матрицы состоит в следующем. Пусть - -й столбец в -матрице , — матрица, образованная первыми столбцами матрицы . — последняя строка в матрице (, , ). Тогда

и для имеют место рекуррентные формулы

при этом, если , то

если же , т.е. , то

Предлагаем читателю проверить, что матрица является псевдообратной для матрицы , если матрица и строка определяются формулами (61)-(64). Этот метод не требует вычисления детерминантов и может быть использован для вычисления обратной матрицы. Пример. Пусть

Читайте также: