Для задания матрицы в Wolfram Mathematica используется встроенная структура списков. Прямоугольная матрица представляется как список строк, каждая из которых является списком элементов. Пример: {{1, 2}, {3, 4}}
задаёт матрицу 2×2. Количество элементов в каждой вложенной строке должно быть одинаковым, иначе результат не будет интерпретироваться как матрица.
Если необходимо создать нулевую матрицу или единичную, используйте функции ConstantArray и IdentityMatrix. Пример: ConstantArray[0, {3, 3}]
создаёт нулевую матрицу 3×3, а IdentityMatrix[4]
– единичную матрицу 4×4.
Для программного построения матриц с вычислениями применяют Table. Пример: Table[i + j, {i, 1, 3}, {j, 1, 3}]
создаёт матрицу 3×3, в которой каждый элемент вычисляется как сумма индексов строки и столбца.
Для преобразования произвольного списка в матрицу используется Partition. Пример: Partition[{1, 2, 3, 4, 5, 6}, 2]
формирует матрицу с двумя элементами в каждой строке: {{1, 2}, {3, 4}, {5, 6}}
.
Задание числовой матрицы с помощью списка списков
В Mathematica числовая матрица задаётся как список строк, каждая из которых представлена списком чисел. Внутренние списки соответствуют строкам матрицы, а их элементы – значениям в ячейках.
mat = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
- Матрица состоит из 3 строк и 3 столбцов.
- Тип данных внутри может быть целым или вещественным:
{{1.0, 2.5}, {3.1, 4.8}}
. - Элементы должны быть согласованы по количеству.
{{1, 2}, {3}}
вызовет ошибку при операциях с матрицей.
Для проверки формы используется функция MatrixQ
:
MatrixQ[mat] (* Вернёт True, если структура корректна *)
Создание нулевой или единичной матрицы аналогично:
Table[0, {3}, {4}] (* 3 строки, 4 столбца, все значения – 0 *)
Для генерации матрицы с вычисляемыми значениями применяется Table
с индексами:
Table[i + j, {i, 1, 2}, {j, 1, 3}] (* 2×3 матрица: элементы равны сумме индексов *)
- Первый индекс – номер строки, второй – столбца.
- Формирование по шаблону удобно для тестов и отладки.
Использование функции Array для генерации матрицы
Функция Array
позволяет задать матрицу с вычисляемыми элементами. Синтаксис: Array[f, {n, m}]
, где f
– функция от двух аргументов, n
и m
– количество строк и столбцов соответственно.
Пример создания матрицы 3×4, где каждый элемент равен произведению номера строки и столбца:
Array[#1*#2 &, {3, 4}]
Результат:
{{1, 2, 3, 4},
{2, 4, 6, 8},
{3, 6, 9, 12}}
Можно использовать любые выражения. Пример: создание символьной матрицы:
Array[Subscript[a, ##] &, {2, 3}]
Результат:
{{Subscript[a, 1, 1], Subscript[a, 1, 2], Subscript[a, 1, 3]},
{Subscript[a, 2, 1], Subscript[a, 2, 2], Subscript[a, 2, 3]}}
Для создания верхнетреугольной матрицы можно использовать условие внутри функции:
Array[If[#1 <= #2, 1, 0] &, {4, 4}]
Результат:
{{1, 1, 1, 1},
{0, 1, 1, 1},
{0, 0, 1, 1},
{0, 0, 0, 1}}
Функция Array
особенно полезна для построения матриц с зависимостями между индексами элементов, когда невозможно или неудобно перечислять значения вручную.
Создание разреженной матрицы с помощью SparseArray
Функция SparseArray позволяет задать разреженную матрицу, указав только ненулевые элементы и их позиции. Это экономит память при работе с большими матрицами, в которых большинство элементов равны нулю.
Для создания разреженной матрицы размером 5×5 с ненулевыми элементами на диагонали используется следующая запись:
SparseArray[{i_ :> 1}, {5, 5}]
Этот вариант создаёт единичную матрицу, где i_ :> 1 означает, что все элементы с равными индексами (i, i) принимают значение 1.
Можно задать произвольные позиции ненулевых элементов через список:
SparseArray[{{1, 3} -> 7, {2, 4} -> -2}, {4, 4}]
В результате получится 4×4 матрица, где на позициях (1,3) и (2,4) будут значения 7 и -2 соответственно, остальные элементы – нули.
Если необходимо задать только ненулевые элементы с автоматическим обрезанием размера, используется форма без явного указания размеров:
SparseArray[{{1, 2} -> 3, {3, 1} -> 5}]
Размер матрицы будет определён по максимальным индексам, в данном случае 3×2.
Для получения плотной матрицы из разреженной применяется Normal:
Normal[SparseArray[{{1, 2} -> 3}]]
Это вернёт обычную матрицу, пригодную для дальнейших стандартных операций без оптимизации по памяти.
Формирование символьной матрицы
Символьные матрицы в Mathematica создаются с использованием функции Array
или прямого ввода списков с символьными элементами. Для создания матрицы размером 3×3 с элементами aij
используйте:
Array[a, {3, 3}]
Этот вызов создаст матрицу с элементами a[1,1]
, a[1,2]
и так далее. Чтобы получить вид с индексами в нижнем регистре (например, a₁₁
), применяйте:
Array[Subscript[a, ##] &, {3, 3}]
Для создания матриц с произвольными символьными выражениями можно использовать явный ввод:
{{x, y, z}, {u, v, w}, {p, q, r}}
Если требуется матрица с определённым законом формирования элементов, например xi+j
, используйте:
Table[x^(i + j), {i, 1, 3}, {j, 1, 3}]
Все элементы таких матриц остаются невычисленными, что позволяет выполнять символьные преобразования: транспонирование, умножение, нахождение определителей и собственных значений.
Импорт матрицы из внешнего файла
Для загрузки матрицы из CSV-файла используйте функцию Import
. Пример:
mat = Import["путь/к/файлу.csv"];
Если в файле разделители – запятые, Mathematica автоматически распознает формат. При других разделителях используйте:
mat = Import["путь/к/файлу.txt", {"Table", "FieldSeparators" -> {";"}}];
При наличии заголовков в первой строке примените опцию HeaderLines -> 1
:
mat = Import["путь/к/файлу.csv", {"Table", "HeaderLines" -> 1}];
Для чтения чисел как вещественных значений, если импорт приводит к строкам, выполните:
mat = ToExpression /@ Import["путь/к/файлу.csv"];
При использовании Excel-файлов укажите лист и диапазон:
mat = Import["путь/к/файлу.xlsx", {"Data", 1}];
Чтобы проверить тип данных после импорта, используйте MatrixQ[mat]
. Если результат – False
, проверьте наличие недопустимых элементов, пустых ячеек или строк вместо чисел.
Проверка формы и элементов матрицы
Для определения размеров матрицы используется функция Dimensions[matrix]
. Она возвращает список, где первый элемент – количество строк, второй – количество столбцов.
Проверить, является ли объект матрицей, можно через MatrixQ[matrix]
. По умолчанию она возвращает True
, если все элементы – списки одинаковой длины, состоящие из чисел или символов. Для проверки на конкретный тип данных указывается второй аргумент, например, MatrixQ[matrix, NumericQ]
.