Операции с матрицами (MatrixManipulation)
Подпакет MatrixManipulation добавляет к матричным функциям ядра системы Маthematica ряд новых функций. Начнем с функций объединения матриц:
- AppendColumns [m1,m2,…] – объединяет по столбцам матрицы m1,m2,…;
- AppendRows [m1,m2,…] – объединяет по строкам матрицы m1,m2,…;
- BlockMatrix [blocks] – объединяет по строкам и столбцам блоки blocks, создавая новую матрицу.
Данные операции с матрицами иллюстрируют следующие примеры:
<< LinearAlgebra`MatrixManipulation`   a = {{a11, a12}, {a21, a22}}; MatrixFormfa] b = {{b11, b12}, {b21, b22}}; MatrixForm[b]   MatrixForm[AppendColumns[a, b] ] AppendRows[a, b] //MatrixForm BlockMatrix[{{a, b}, {b, {{0, 0}, {0, 0}}}}] //MatrixFormСледующая группа функций вставляет или удаляет столбцы или строки матриц:
- TakeRows [mat, n] – вставляет в матрицу mat n-ю строку;
- TakeRows [mat, -n] – удаляет из матрицы mat n-ю строку;
- TakeRows [mat, {m,n} ] – вставляет в матрицу mat строки от m до n;
- TakeColumns [mat, n] – вставляет в матрицу mat n-й столбец;
- TakeColumns [mat, -n] – удаляет из матрицы mat n-й столбец;
- TakeColumns [mat, {m, n} ] – вставляет в матрицу mat столбцы от m до n.
Действие функции иллюстрируется следующими примерами:
mat = Array[m, 3, 4]; MatrixForm[mat] m[1, 1] m[1, 2] m[1, 3] m[1, 4] m[2, 1] m[2, 2] m[2, 3] m[2, 4] m[3, 1] m[3, 2] m[3, 3] m[3, 4]   TakeRows[mat, - 2] //MatrixForm m[2, 1] m[2, 2] m[2, 3] m[2, 4] m[3, 1] m[3, 2] m[3, 3] m[3, 4]   TakeColumns[mat, {2.3}] //MatrixForm m[1, 2] m[1, 3]) m[2, 2] m[2, 3] m[3, 2] m[3, 3]   TakeMatrix[mat, {2, 3}, {3, 4}] //MatrixForm m[2, 3] m[2, 4] m[3, 3] m[3, 4]   SubMatrix[mat, {2, 3}, {2, 2}] //MatrixForm m[2, 3] m[2, 4] m[3, 3] m[3, 4]Следующая группа функций служит для задания матриц специального вида:
- UpperDiagonalMatrix [f, n] – формирует наддиагональную матрицу размером fхn;
- LowerDiagonalMatrix [f, n] – формирует поддиагональную матрицу размером fхn;
- ZeroMatrix [n] – формирует квадратную нулевую матрицу размером nхn;
- ZeroMatrix [m, n] – формирует нулевую матрицу размером mхn;
- HilbertMatrix [n] – формирует квадратную матрицу Гильберта размером mхn;
- HilbertMatrix [m, n] – формирует матрицу Гильберта размером mхn;
- HankelMatrix [n] – формирует квадратную матрицу Ганкеля размером nхn;
- HankelMatrix [m, n] – формирует матрицу Ганкеля размером mхn.
Примеры задания матриц разного типа приведены ниже:
UpperDiagonalMatrix[f, 3] //MatrixForm   LowerDiagonalMatrix[#1 + #2 &, 4] //MatrixForm   HilbertMatrix[2, 4] //MatrixForm   HankelMatrix[{w, x, y, z}] //MatrixFormНаконец, в подпакет входит еще одна функция, LinearEquationsToMatri-ces [eqns, vars], которая из записи линейного уравнения eqns с переменными vars формирует расширенную матрицу, содержащую матрицу коэффициентов левой части уравнения и вектор свободных членов.
Пример применения данной функции:
LinearEquationsToMatrices[ a[1.1]*x + a[1.2]*y == c[1], a[2.1]*x + a[2.2]*y == c[2], x, y] {{{{{a11, a12), {a21, a22}}[1, 1], {{a11, a12), {a21, a22}}[1, 2]}, {{{a11, a12}, {a21, a22}}[2, 1], {{a11, a12), {a21, a22}} [2, 2]}}, {c[1],c[2]}}