Как перемножить матрицы в wolfram mathematica
Перейти к содержимому

Как перемножить матрицы в wolfram mathematica

  • автор:

Научный форум dxdy

Проблема следующая.
В Mathematica 6.0 пытаюсь перемножить матрицы (для примера):
$A= \left ( \begin<array> <cc>1 & 2\\ 3 & 5\\ \end <array>\right)$» /></p>
<p>и <br /><img decoding=

В сиcтеме Mathematica предусмотрена также возможность вводить матрицу, как прямоугольную таблицу. Для этого предусмотрена специальная кнопка на панели инструментов BasicInput. На этой кнопке помещено изображение матрицы размера . Нужно щёлкнуть по этой кнопке левой кнопкой мыши. Комбинация клавиш предназначена для добавления в матрицу столбца, а комбинация клавиш Ctr и Enter – для добавления строки. Удалять строки и столбцы можно обычными приёмами редактирования.

Приведём примеры симметричной и диагональной матриц.

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

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

Рассмотрим теперь основные операции над матрицами и правила выполнения этих операций в системе Mathematica.

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

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

Прибавление к матрице числа.

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

При сложении двух матриц одинаковых размеров получается матрица тех же размеров. Каждый элемент этой матрицы равен сумме соответствующих элементов слагаемых.

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

Таким образом, элемент произведения матриц и , стоящий в й строке и м столбце, равен сумме произведений элементов й строки первой матрицы на соответствующие элементы го столбца второй матрицы

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

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

При умножении двух векторов, мы, очевидно, получим число.

Пусть имеется матрица размером Построим матрицу размером следующим образом: в качестве первого столбца матрица возьмём первую строку матрицы , второго столбца- вторую строку матрицы и т.д. Построенная таким образом матрица называется транспонированной к матрице А.

Элементарные преобразования строк матриц.

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

1. Перестановка строк матрицы.

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

3. Прибавление к одной из строк матрицы другой строки, умноженной на некоторое число.

Рассмотрим выполнение этих преобразований в системе Mathematica.

Умножим вторую строку этой матрицы на число 12.

Прибавим к третьей строке матрицы первую строку, умножив её предварительно на 13.

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

Рассмотрим теперь схему преобразования матрицы с выбором главного элемента.

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

Затем выбираем наибольший по абсолютной величине элемент среди строк и столбцов, не рассмотренных ранее. Так продолжаем до тех пор, пока не переберём все строки матрицы.

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

Наибольший по абсолютной величине элемент находится в первой строке. Делим все элементы первой строки на этот элемент.

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

MatrixForm[A]

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

Наибольший по абсолютной величине элемент находится в третьей строке. Делим все элементы третьей строки на этот элемент.

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

MatrixForm[A]

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

Наибольший по абсолютной величине элемент находится в четвёртой строке. Делим все элементы четвёртой строки на этот элемент

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

MatrixForm[A]

Находим максимальный по абсолютной величине элемент второй строки.

Этот элемент находится в четвёртом столбце. Делим вторую строку на максимальный элемент.

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

MatrixForm[A]

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

Рассмотрим пример выполнения этой команды.

Вычисление определителя матрицы.

Система Mathematica позволяет вычислять определители матриц, элементами которых могут быть как числа, так и символьные величины. Рассмотрим некоторые примеры вычисления определителя матрицы.

1772417583216180761221268913654980100005135

78853750347132695363584/30947323736623528969

60852504199716948426822514624818363501374539

8979661067685128340963626861572265625

Найдём приближённое значение полученного числа

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

Производим разложение определителя на множители

Вычисление обратной матрицы.

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

В системе Mathematica обратная матрица находится следующим образом

Вычисление собственных чисел и собственных векторов матрицы.

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

Покажем, как собственные числа матрицы находятся в системе Mathematica.

Матрица называется положительно определённой, если все её собственные числа положительны.

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

Собственные векторы матрицы в системе Mathematica могут быть найдены следующим образом

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

11. Вычисление ранга матрицы.

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

Несколько строк матрицы называются линейно независимыми, если ни одна из них не выражается линейно через остальные.

Рангом матрицы называется наибольшее число линейно независимых строк этой матрицы

Посмотрим, как система Mathematica вычисляет ранг матрицы.

2. Ортогональные системы векторов.

Два вектора будем называть ортогональными, если сумма произведений одноимённых координат этих векторов (скалярное произведение) равна нулю.

В системе Mathematica скалярное произведение векторов и находится следующим образом

Нормой (длиной) вектора называется квадратный корень из суммы квадратов координат этого вектора. В системе Mathematica норму вектора можно найти так

Легко можно проверить, что если — ненулевой вектор, то норма вектора равна единице.

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

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

Базис пространства, состоящий из векторов, нормы которых равны единице и которые попарно ортогональны, называется ортонормированным. Рассмотрим на примере, как исходя из данной системы линейно независимых векторов, можно построить ортонормированную систему.

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

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

Matrices

A matrix is a two-dimensional array of values that is often used to represent a linear transformation or a system of equations. Matrices have many interesting properties and are the core mathematical concept found in linear algebra and are also used in most scientific fields. Matrix algebra, arithmetic and transformations are just a few of the many matrix operations at which Wolfram|Alpha excels.

Matrix Properties

Explore various properties of a given matrix.

Calculate properties of a matrix:

Trace

Calculate the trace or the sum of terms on the main diagonal of a matrix.

Matrix and Tensor Operations

This tutorial reviews the functions that Mathematica provides for building and working with matrices, vectors, and tensors. It focuses on functions that are specific to Mathematica, and uses matrices for many of the examples. However, all the functions are general, and they will also work for vectors and tensors.

Building Matrices

Mathematica provides a number of ways to build matrices.

Table [ f , < i , m >, < j , n >] build an m × n matrix where f is a function of i and j that gives the value of i , j th entry
Array [ f , < m , n >] build an m × n matrix whose i , j th entry is f [ i , j ]
DiagonalMatrix [ list ] build a diagonal matrix with the elements of list on the diagonal
IdentityMatrix [ n ] build an n × n identity matrix
ConstantArray [ val , < m , n >] ] build an m × n matrix with each element being val
RandomReal [ < 0 , val >, < m , n >] ] build an m × n matrix with random entries
Normal [ SparseArray [ < < i 1 , j 1 > -> v 1 , < i 2 , j 2 > -> v 2 , … > , < m , n >] ]
build an m × n matrix with nonzero values ν k at positions < i k , j k >
SparseArray [ < >, < n , n >] a zero matrix
SparseArray [ < i _ , i _ >->1 , < n , n >] an n × n identity matrix
SparseArray [ < i _ , j _ >/; i >= j ->1 , < n , n >]
a lower-triangular matrix

Constructing special types of matrices with SparseArray .

Functions that can read in matrices from files are discussed in the section "Import and Export" of matrices.

Special Matrices

Mathematica contains definitions for a number of special matrices.

HilbertMatrix [ n ] create an n × n Hilbert matrix , with elements given by 1 / ( i + j — 1 )
HilbertMatrix [ < m , n >] create an m × n Hilbert matrix
HankelMatrix [ n ] create an n × n Hankel matrix with the first column given by 1 , 2 , … , n and zeros beneath the main antidiagonal
HankelMatrix [ list ] create a Hankel matrix with the first column given by list and zeros beneath the main antidiagonal
HankelMatrix [ col , row ] create a Hankel matrix with the first column given by the list col and the last row given by the list row

Structural Operations

These operations are all related to the structure of matrices. Many of the techniques shown in this section can be applied to Mathematica expressions and are not specific just to matrices.

Getting Pieces of Matrices

Extracting elements, rows, or columns of a matrix is quite straightforward with the Mathematica function Part . Typically Part is entered with [ [ ] ] notation.

m [ [ i , j ] ] the i , j th entry
m [ [ i ] ] the i th row
m [ [ i ;; i ] ] rows i through j
m [ [ All , i ] ] the i th column
m [ [ All , i ;; j ] ] columns i through j
m [ [ < i 1 , … , i r > , < j 1 , … , j s > ] ] the r × s submatrix with elements having row indices i k and column indices j k
Tr [ m , List ] list of the diagonal elements of m

Ways to get pieces of matrices.

It should be noted that these commands for extracting parts of matrices will work for any Mathematica expression.

Getting Multiple Pieces

Setting Pieces of Matrices

Setting elements, rows, and columns so that a matrix is updated is quite straightforward using the Mathematica function Part on the left-hand side of an assignment.

m = < < a 11 , a 12 , … > , < a 21 , a 22 , … > , … > assign m to be a matrix
m [ [ i , j ] ] = v reset element < i , j >to be v
m [ [ i ] ] = v reset all elements in row i to be v
m [ [ i ] ] = < v 1 , v 2 , … > reset elements in row i to be < v 1 , v 2 , … >
m [ [ All , j ] ] = v reset all elements in column j to be v
m [ [ All , j ] ] = < v 1 , v 2 , … > reset elements in column j to be < v 1 , v 2 , … >

Resetting parts of matrices.

To update parts of a matrix you can use Part on the left-hand side of an assignment.

Setting Multiple Pieces

Extracting Submatrices

The range syntax is useful to extract a submatrix.

m [ [ i 0 ;; i 1 , j 0 ;; j 1 ] ] extract the submatrix with rows i 0 through i 1 and columns j 0 through j 1
m [ [ i 0 ;; i 1 ] ] extract the submatrix with rows i 0 through i 1
m [ [ All , j 0 ;; j 1 ] ] extract the submatrix with columns j 0 through j 1

You can use negative indices to count from the end.

Deleting Rows and Columns

If you want to delete rows or columns you can use Drop .

Drop [ m , < i 0 , i 1 > ] delete rows i 0 through i 1
Drop [ m , < >, < j 0 , j 1 > ] delete columns j 0 through j 1
Drop [ m , < i 0 , i 1 > , < j 0 , j 1 > ] delete rows i 0 through i 1 and columns j 0 through j 1

Deleting rows and columns.

Inserting Rows and Columns

If you want to insert a row, you can use Insert .

Insert [ m , r , i ] insert row r into matrix m at position i

Inserting a row.

Extending Matrices

Transpose

Rotating Elements

Testing Matrices

Mathematica provides a number of functions for testing matrices and extracting size information.

MatrixQ [ expr ] give True if expr has the form of a matrix , and False otherwise
Dimensions [ expr ] a list of the dimensions of a vector or matrix
m i == m j compare elements of two matrices for equality

Functions for testing the structure of vectors, matrices, and arrays.

It should be noted that Equal works on any Mathematica expression. If you want to compare two matrices for equality using properties of the matrix as a whole, it may be better to compare matrix norms. These are discussed in a later section.

Further Structural Operations

This section discusses some further structural operations that are useful for working with matrices.

Flatten [ m ] flatten out nested lists in m
Flatten [ m , n ] flatten out nested lists in m to level n
Partition [ m , n ] partition m into sublists of length n
Join [ m 1 , m 2 ] concatenate m 1 and m 2
Append [ m , r ] insert row r at the end of m
Prepend [ m , r ] insert row r at the beginning of m

It should be noted that this can also be done with Insert ; see the section "Inserting Rows and Columns".

Element-wise Operations

Listability

Vectors and Tensors

In addition to supporting matrices, Mathematica supports vectors and tensors. All of these are built from lists. As described in "Introduction to Linear Algebra in Mathematica", Mathematica uses the term tensor to refer to generalized matrices. All the operations for building matrices can be generalized to work for vectors and tensors. Mathematica vectors have one level of list.

In addition, there are a number of functions that generate vectors.

Table [ f , < i , n >] build a length ‐ n vector by evaluating f with i = 1 , 2 , … , n
Array [ a , n ] build a length ‐ n vector of the form
Range [ n ] create the list
Range [ n 1 , n 2 ] create the list < n 1 , n 1 +1 … , n 2 >
Range [ n 1 , n 2 , dn ] create the list < n 1 , n 1 + dn … , n 2 >

Functions for generating vectors.

It should be noted that Mathematica has no concept of a row or a column vector; a vector has a single index that can be used to reference an element of the vector.

Testing Vectors and Tensors

Mathematica provides a number of functions for testing vectors and tensors and extracting size information.

VectorQ [ expr ] give True if expr has the form of a vector , and False otherwise
MatrixQ [ expr ] give True if expr has the form of a matrix , and False otherwise
ArrayQ [ t , n ] test whether t is a tensor of rank n
Dimensions [ expr ] a list of the dimensions of a vector or matrix
ArrayDepth [ t ] find the rank of a tensor
t i == t j compare elements of two tensors for equality

Functions for testing the structure of vectors, matrices, and arrays.

Visualization of Matrices

This section reviews the functions that are available for formatting and plotting matrices.

MatrixForm [ mat ] print a matrix with the elements arranged in a two ‐ dimensional array
MatrixPlot [ mat ] show the structural pattern of mat

Formatting Matrices

Plotting Matrices

MatrixPlot has a number of graphics options for controlling the appearance of the plot. Many of these are the typical options of Mathematica DensityGraphics objects. It also has a special option, MaxPlotPoints , that controls the maximum size for the display of a matrix. Above this size the matrix is downsampled. Some of the important options are summarized in the following.

Import and Export of Matrices

This section reviews the functions that are available for importing and exporting matrices.

Import [ file , format ] import data in the specified format from a file
Export [ file , mat , format ] export matrix to a file , converting it to the specified format

Mathematica provides a number of different tools for input/output. If you want to save your data in a file so that later you or a colleague can continue to work with it in Mathematica, you might want to use some of the functions that work with Mathematica expressions in files. These are discussed under "Expression Input and Output".

There are other matrix formats. For example, Harwell – Boeing, used for sparse matrices, and Matrix Market, used for both sparse and dense matrices. These are discussed under "Import and Export of Sparse Matrices". In addition the MAT matrix format and the FITS astronomical data format can also be useful as import or export formats.

Matrix Multiplication

The definition of matrix multiplication is such that the product of two matrices and , where , is given as follows.

The definition generalizes, so that the product of two arbitrary rank tensors and is as follows.

Thus applying Dot to a rank tensor and a rank tensor results in a rank tensor. An example is shown next.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *