Операции с матрицами (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
]}}