Элемент массива не обязан быть
скаляром. Возможно сделать массивом сам элемент
массива — это позволяет создавать массивы из
массивов.
Эти массивы ведут себя во многом схоже с
массивами, чьи элементы — скаляры. Однако
имеются некоторые различия:
- Нельзя использовать команду меню Матрицы,
чтобы вставить массив в поле, которое уже
находится внутри массива.
- Нельзя отобразить весь составной массив. Вы
будете взамен видеть строку подобную {3,2}, которая
указывает, что 3 x 2 массив находится в
определённой ячейке массива.
- Большинство математических операторов и
функций не имеет смысла по отношению к составным
массивам.
Следующие разделы проясняют эти различия.
Определение составного массива
Вы определяете составной массив способом,
подобным определению любого массива.
Единственное различие состоит в том, что нельзя
использовать команду Матрицы из меню Математика,
когда уже выбрано поле внутри существующего
массива. Можно, однако, щёлкнуть на поле в массиве
и впечатать туда имя другого массива, как
показано на Рисунке 22.
Рисунок 22 показывает три способа определить
матрицу, состоящую из матриц: использование
дискретного аргумента, определение каждого
элемента в отдельности, и командой Матрицы из
меню Математика.
В дополнение к методам, показанным на Рисунке 22,
можно также использовать функцию READPRN в
массиве пустых полей, созданных командой Матрицы.
Имейте в виду, что нельзя использовать READPRN с
одним файлом больше чем один раз в данной
матрице. Функция READPRN подробно описана в
главе “Файлы данных”.
Рисунок 22: Определение составных массивов.
Отображение составных массивов
Когда Вы отображаете составной массив,
используя знак =, Вы не увидите каждый элемент в
каждом вложенном массиве — это было бы очень
громоздко. Вместо этого всякий раз, когда элемент
массива — сам массив, Mathcad указывает число строк
и столбцов вложенного массива взамен его
отображения непосредственно. Рисунок 23
показывает, как массивы, созданные на Рисунке 22,
выглядят при отображении. Каждый элемент массива
отображается либо как:
- число, когда элемент массива — просто число
- упорядоченная пара m, n, где m и n —
число строк и столбцов в массиве, расположенном в
данном элементе.
Заметьте, что массив B содержит элемент ,
который является сам составным массивом. Для
его просмотра следует произвести повторную
индексацию, как показано в нижнем правом углу
Рисунка 22.
Рисунок 23: Отображение составных массивов.
Операторы и функции для составных массивов
Большинство операторов и функций не работает с
составными массивами, поскольку трудно
определить их действие в таком сложном случае.
Например, совершенно непонятно, что понимать под
обращением составной матрицы. При попытке
выполнить обычные арифметические операции над
составными массивами скорее всего появится либо
сообщение об ошибке типа переполнение, либо
бессмысленный результат.
Составные массивы предназначены главным
образом для удобного хранения и доступа к данным.
Некоторые операторы и функции всё же применимы
и полезны для использования с составными
массивами. Например, транспонирование выполняет
осмысленное действие, как показано в нижней
части Рисунка 23. На следующей странице приведён
список операторов, применяемых к составным
массивам:
Операция |
Обозначение |
Клавиши |
Описание |
Транспонирование |
AT |
[Ctrl]1 |
Переводит столбцы A в строки. |
Верхний индекс |
A<n> |
[Ctrl]6 |
n-ный столбец массива A.
Возвращает вектор. |
Нижний индекс |
vn |
[ |
n-ный элемент вектора. |
Двойной индекс |
Am,n |
[ |
элемент матрицы из m-ого ряда
и n-ого столбца. |
Булево равенство |
w = z |
[Ctrl]= |
Булево равенство. Возвращает 1,
если два составных массива, вкупе со всеми
вложенными массивами, содержащимися внутри них,
идентичны; иначе возвращает 0. |
Вероятно,
весьма полезными для использования с составными
массивами окажутся функции, связанные с
определением размеров массивов, а также
объединением массивов и выделением подмассивов.
В частности, можно использовать функции cols и rows,
чтобы обнаружить элементы массива, которые
являются вложенными массивами. Обе эти функции
возвращают нуль, когда элемент — скаляр, и
соответствующее число в противном случае.
Функции, которые будут полезными при работе с
составными массивами:
Имя функции |
Возвращается... |
rows(A) |
Число строк в матрице A. |
cols(A) |
Число столбцов в матрице A. |
length(v) |
Число элементов в векторе v. |
last(v) |
Индекс последнего элемента в
векторе v. |
augment(A, B) |
Массив, сформированный
размещением A и B бок о бок. Массивы A и B
должны иметь одинаковое число строк. |
stack(A, B) |
Массив, сформированный
размещением A над B. Массивы A и B должны
иметь одинаковое число столбцов. |
submatrix(A, ir, jr, ic, jc) |
Подмассив, состоящий изо всех
элементов, содержащихся в строках с ir по jr
и столбцах с ic по jc. Чтобы поддерживать
порядок строк и-или столбцов, удостоверьтесь, чтоir<=jr
и ic <=jc, иначе порядок строк и-или
столбцов будет обращён. |
|