Если элемент массива является скаляром и имеет числовой тип данных, он может использоваться в математическом выражении точно так же, как и обычный скаляр. Например, выражение M3,4 × 5 вычислит произведение числа "5" на значение указанного элемента массива М.
Если все элементы массива – скаляры числового типа, то этот массив (или имя переменной, связанной с этим массивом) может использоваться в качестве операнда математического выражения. Однако, в этом случае существуют ограничения на использование некоторых из традиционных "скалярных" арифметических операторов, а другие скалярные операторы трактуются специальным образом.
Кроме этого, MathCAD предоставляет ряд специальных операторов для обработки массивов.
В рассмотренных ниже примерах (таблица 3) используются следующие обозначения:
А и В – произвольные числовые массивы (векторы или матрицы);
С и D – двумерные массивы – матрицы;
M и N – квадратные матрицы;
U и V – одномерные массивы (векторы-столбцы);
z – скаляр числового типа;
m, n, r, i, j, k – целочисленные скаляры.
Таблица 3 – Операторы для обработки массивов
Обозначение
Наименование
оператора
Результат
A +z
A - z
A × z
A / z
Скалярное сложение, вычитание, умножение и деление
Массив той же размерности, что и А, каждый элемент которого – результат выполнения операции над соответствующим элементом массива Аи скаляромz.
A + B
A - B
Поэлементное сложение и вычитание массивов одинаковой размерности
Скаляр - квадратный корень из суммы квадратов элементов вектора
÷ М÷
Детерминант
Скаляр
Окончание таблицы 3
U×V
Скалярное произведение векторов одинаковой длины
Скаляр - сумма произведений соответствующих элементов векторов
U´V
Векторное произведение трехэлементных векторов
Вектор
C×D
Умножение матрицы С[m´n] на матрицу D[n´r]
Матрица размерностью [m´r], каждый (i,k)-й элемент которой вычисляется, как сумма произведений элементов i-той строки первой матрицы на соответствующие элементы k-того столбца второй матрицы.
M-1
Обратная матрица
Матрица того же порядка, что и М, результатом умножения которой на М является единичная матрица.
Mn
Целочисленная степень квадратной матрицы
M0 –единичная матрица; M1 = M; M3 = M×M×M;
Отрицательные степени – соответствующие положительные степени обратной матрицы.
AT
Транспонирование
Массив
åV
Сумма элементов вектора
Скаляр
¾----®
W(A)
Векторизация выражения W(A)
Если массив A является операндом "векторизованного" выражения W, то соответствующий оператор выражения трактуется, как скалярный, и выполняется над каждым элементом массива.
Примеры использования описанных выше операторов приведены на рисунке 10.
Рисунок 10 – Операторы, используемые для обработки массивов
Поясним особенности использования массивов в качестве операндов математических выражений на примерах, приведенных на рисунке 10.
Пример a) тривиален и не требует особых комментариев: любой двуместный арифметический оператор, операндами которого являются массив и скаляр, применяется ко всем элементам массива, в результате чего изменяются лишь значения элементов массива, а его структура сохраняется.
Если оба операнда – массивы (пример б), то тривиальными являются только операторы сложения и вычитания и лишь в том случае, если оба массива имеют одинаковую размерность. Например, оператор A+B не являетсядопустимым, а операторы U+V, A+BT и AT+B вполне корректны.
Пример в) иллюстрирует применение оператора " ê ê" с различными операндами. В этом операторе допускается использование только двух видов операндов-массивов: вектор – в этом случае вычисляется его модуль, и квадратная матрица – в этом случае вычисляется ее определитель. Заметим, что этот же оператор можно использовать и с числовым скаляром – в этом случае будет вычислена его абсолютная величина.
Пример г). Если два вектора (одинаковой размерности !) объединены оператором умножения (×), будет вычислено их скалярное произведение (скаляр, определяемый как сумма произведений соответствующих элементов векторов, или, в геометрической интерпретации – как произведение модулей векторов, умноженное на косинус угла между направленными отрезками, описываемыми этими векторами). Если два трехэлементных вектора объединены оператором (´), будет определен новый вектор – результат векторного произведения исходных векторов. Этот вектор имеет модуль, равный произведению модулей исходных векторов на синус угла между ними, и описывает направленный отрезок, перпендикулярный плоскости расположения исходных векторов.
Если операндами оператора умножения (×) являются не векторы, а матрицы (пример д), этот оператор выполняет умножение матриц, в результате которого формируется новая матрица (ограничения на размерности матриц и описание алгоритма выполнения операции приведены в таблице 1).
Пример е) иллюстрирует применение оператора возведения массива в степень. Операндом такого оператора может быть только квадратная матрица, а показатель степени может быть только целочисленным скаляром. При этом нулевая степень матрицы трактуется как единичная матрица, первая степень – сама исходная матрица, другие положительные степени матрицы трактуются в смысле операции матричного умножения, минус первая степень – обратная матрица (результатом умножения которой на исходную матрицу является единичная матрица), прочие отрицательные степени матрицы – соответствующие положительные степени обратной матрицы.
В примере ж) показаны операторы транспонирования массивов и суммирование элементов векторов. Следует обратить внимание на оператор транспонирования вектора: в результате формируется матрица, состоящая из одной строки. Обращение к элементам такой матрицы производится с использованием двойного индекса.
Последний пример иллюстрирует использование надстрочного оператора векторизации вычислений. Применение такого оператора к другим операторам, обрабатывающим массивы, существенно изменяет трактовку этих операторов и приводит к радикальному изменению результатов их выполнения. Например, оператор скалярного произведения векторов перестает быть таковым, а функция вычисления синуса оказывается применимой к операнду-массиву. Существует множество ситуаций, когда применение операторов векторизации позволяет существенно упростить решение задач, требующих многократных вычислений выражений, операнды которых оформлены в виде массивов.